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 isolcpuset taskset, mais j'ai rencontré des problèmes . Maintenant je joue avec des cgroups / csets.
Je pense que le cset shieldcas 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 tasksetpour 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 htopet 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 htopet en csetdé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 csetet affinités ensemble. Peut-être que le bouclier fonctionne bien, et je devrais ignorer les masques d'affinité et la htopsortie. Quoi qu'il en soit, je trouve cela déroutant. Quelqu'un peut-il faire la lumière?
numactlet le cgconfiget cgrules/ cgredpour rationaliser ce que vous faites. Ceux - ci peuvent être disponibles pour Debian avec un certain travail.
