Použití tc
je poměrně snadné se Stochastic Fairness Queuing (SFQ) pro konfiguraci spravedlivého sdílení šířky pásma mezi toky , ale aplikace může otevřít více toků a získat nespravedlivý podíl na šířce pásma. Je možné nakonfigurovat spravedlivé sdílení šířky pásma mezi aplikacemi? místo toho?
Seskupení každé aplikace do cgroup se zdá jako jasný první krok. Pokud by SFQ podporovalo hash na ID třídy, bylo by snadné použít tc filter
přiřadit každé cgroup ID třídy. Bohužel se zdá, že SFQ to nepodporuje. Dalším slibným přístupem je použití CBQ, které dělá Weighted Round Robin napříč třídami. Bohužel se nezdá, že by váha byla stejná.
Existuje jiný způsob, jak spravedlivě sdílet šířku pásma mezi cgroups?
Přijatá odpověď:
Podívejte se na net_cls cgroup controller. V podstatě připojuje speciální značku (definovanou v /mntpoint/net_cls.classid
do každého paketu, který pochází ze soketu spojeného s aplikací v této cgroup. Později můžete tento ‚tag‘ použít jako classid
ve filtru připojeném k qdisc pro předání provozu do různých tříd na základě cgroup, ze které provoz pochází.
Jediná dokumentace, kterou jsem na toto téma našel, jsou nějaké snímky Red Hat [HTML via Google].