Contrôle de la bande passante lxc utilisant tc

J'essaie de limiter la bande passante à l'intérieur de ses conteneurs. J'ai essayé d'utiliser les commandes suivantes, mais je pense que cela ne résulte pas.

cd /sys/fs/cgroup/net_cls/
echo 0x1001 > A/net_cls.classid # 10:1
echo 0x1002 > B/net_cls.classid # 10:2
tc qdisc add dev eth0 root \
handle 10: htb
tc class add dev eth0 parent 10: \
classid 10:1 htb rate 40mbit
tc class add dev eth0 parent 10: \
classid 10:2 htb rate 30mbit
tc filter add dev eth0 parent 10: \
protocol ip prio 10 \
handle 1: cgroup

Ici A et B - Ce sont des conteneurs créés à l'aide de cette commande.

lxc-execute -n A -f configfile /bin/bash
lxc-execute -n B -f configfile /bin/bash

Bien que le fichier de configuration ne contienne que cet enregistrement:

lxc.utsname = test_lxc

Après avoir démarré le conteneur, j'ai lancé vsftpd conteneur intérieur A Et j'essaie d'accéder aux fichiers à l'aide du client FTP d'un autre ordinateur. Puis j'ai tué vsftpd Dans le conteneur A Et lancé vsftpd Dans le conteneur B Et j'ai essayé d'accéder aux fichiers à l'aide du client FTP d'une autre machine.

Je n'observe aucune différence de performance, si cela se produit, il n'est pas plus proche de 40/30 Mbit.

S'il vous plaît corrigez-moi s'il y a quelque chose qui ne va pas ici.
Invité:

Emilie

Confirmation de:

Le problème ici est mal documenté, mais je l'ai déjà rencontré auparavant. Dans les systèmes 64 bits, la valeur que vous avez affichée sera

ne pas

Présente comme un entier de 16 bits, mais un entier 32 bits.

Essayez de remplacer:

echo 0x1001 > A/net_cls.classid   # 10:1
echo 0x1002 > B/net_cls.classid # 10:2

Avec

echo 0x00100001 > A/net_cls.classid   # 10:1
echo 0x00100002 > B/net_cls.classid # 10:2

Cela devrait résoudre votre problème.

Noter:

En fait, il n'est pas nécessaire d'introduire des zéros de premier plan au début, mais pour la clarté, je les ai ajoutés.

Agathe

Confirmation de:

Beaucoup de conteneurs sans hyperviseur (lxc, jails), En règle générale, passez un calme / mesure incomplète (disk iops, net), qui affecte d'autres conteneurs. Si la limitation du transit externe est le problème principal, d'abord installer un pare-feu transparent (par exemple, ArmorLogic, Barracuda etc.) Devant eux.

En tout état de cause, assurez-vous de dépenser le test de charge pour voir si cette valeur a.

(Indice: Heroku Lancement LXC.

heroku run bash

)

Pour répondre aux questions, connectez-vous ou registre