J'ai 3 processus sur une machine monocœur. Chaque processus est exactement le même et brûle le processeur aussi vite qu'il le peut (boucle serrée). Deux d'entre eux ( A
et B
) sont lancés avec cgexec dans des groupes séparés avec des partages définis sur 512 et 512. Le troisième ( C
) est lancé régulièrement, pas avec cgexec.
Une fois que tout est opérationnel, C
obtient 66% du processeur A
et se B
divise à 33%. Si je tue C
alors A
, B
j'obtiens 50% chacun (comme prévu).
Pourquoi C
obtient-on 66%? Je m'attendais à 33% chacun dans ce scénario, ou peut-être 50% (C), 25% (A) et 25% (B). 66% va C
ne fonctionne pas, peu importe comment je fais les calculs.
En général, je veux comprendre comment les processus lancés sans cgexec
interagir avec les processus lancés avec cgexec
en matière de partage de ressources (CPU en particulier, mais une réponse plus générale serait appréciée si elle n'est pas trop complexe).
top
et je pense qu'ils ont été démarrés assez simplement à partir d'une invite de commande: cgexec -g cpu:foo myprogram
et ./myprogram
. Cela fait un moment donc je ne m'en souviens pas avec certitude.
cpu.shares
est une option de configuration très particulière; Je recommande de diviser les choses par CPU si possible en utilisant à la cpuset.cpus
place.