J'essaie d'exécuter des tests de performances multithreads sur un ensemble de processeurs isolés. Pour faire court, j'ai d'abord essayé avec isolcpus
et taskset
, mais j'ai rencontré des problèmes . Maintenant je joue avec des cgroups / csets.
Je pense que le cset shield
cas d'utilisation "simple" devrait bien fonctionner. J'ai 4 cœurs, je voudrais donc utiliser les cœurs 1 à 3 pour l'analyse comparative (j'ai également configuré ces cœurs pour qu'ils soient en mode ticks adaptatif), puis le cœur 0 peut être utilisé pour tout le reste.
En suivant le tutoriel ici , cela devrait être aussi simple que:
$ sudo cset shield -c 1-3
cset: --> shielding modified with:
cset: "system" cpuset of CPUSPEC(0) with 105 tasks running
cset: "user" cpuset of CPUSPEC(1-3) with 0 tasks running
Nous avons donc maintenant un "bouclier" qui est isolé (l'utilisateur cset) et le noyau 0 est pour tout le reste (le système cset).
D'accord, semble bon jusqu'à présent. Voyons maintenant htop
. Les processus devraient tous avoir été migrés sur la CPU 0:
Hein? Certains processus sont présentés comme s'exécutant sur les cœurs blindés. Pour exclure le cas où htop a un bug, j'ai également essayé d'utiliser taskset
pour inspecter le masque d'affinité d'un processus montré comme étant dans le bouclier.
Peut-être que ces tâches étaient immobiles? Essayons un processus arbitraire montré comme fonctionnant sur CPU3 (qui devrait être dans le bouclier) dans htop
et voyons s'il apparaît dans le groupe de contrôle système selon cset
:
$ cset shield -u -v | grep 864
root 864 1 Soth [gmain]
vext01 2412 2274 Soth grep 864
Oui, cela fonctionne sur le groupe de contrôle système selon cset
. Alors htop
et en cset
désaccord.
Alors qu'est-ce qui se passe ici? En qui ai-je confiance: affinités CPU ( htop
/ taskset
) ou cset
?
Je soupçonne que vous n'êtes pas censé utiliser cset
et affinités ensemble. Peut-être que le bouclier fonctionne bien, et je devrais ignorer les masques d'affinité et la htop
sortie. Quoi qu'il en soit, je trouve cela déroutant. Quelqu'un peut-il faire la lumière?
numactl
et le cgconfig
et cgrules
/ cgred
pour rationaliser ce que vous faites. Ceux - ci peuvent être disponibles pour Debian avec un certain travail.