È abbastanza facile usare tc
con Stochastic Fairness Queuing (SFQ) per configurare una condivisione equa della larghezza di banda tra flussi , ma un'applicazione può aprire più flussi e ottenere una quota sproporzionata di larghezza di banda. È possibile configurare una condivisione equa della larghezza di banda tra le applicazioni invece?
Raggruppare ogni applicazione in un cgroup sembra un primo passo chiaro. Se SFQ supportasse l'hashing sull'ID classe, sarebbe facile usare tc filter
per assegnare a ciascun cgroup un ID classe. Sfortunatamente, SFQ non sembra supportarlo. Un altro approccio promettente consiste nell'utilizzare CBQ, che esegue Weighted Round Robin tra le classi. Sfortunatamente, rendere tutti i pesi uguali non sembra funzionare.
C'è un altro modo per condividere equamente la larghezza di banda tra i cgroup?
Risposta accettata:
Dai un'occhiata al controller cgroup net_cls. Fondamentalmente allega un tag speciale (definito in /mntpoint/net_cls.classid
a ogni pacchetto che ha origine sul socket associato a un'applicazione in quel cgroup. In seguito potrai utilizzare questo "tag" come classid
nel filtro allegato al qdisc per passare il traffico a classi diverse in base al cgroup da cui proviene il traffico.
L'unica documentazione che ho trovato su questo argomento sono alcune diapositive di Red Hat [HTML via Google].