Mam 3 procesy na maszynie z jednym rdzeniem. Każdy proces jest dokładnie taki sam i spala procesor tak szybko, jak to możliwe (ciasna pętla). Dwa z nich ( Ai B) są uruchamiane z cgexec w oddzielnych grupach z udziałami ustawionymi na 512 i 512. Trzeci ( C) jest uruchamiany regularnie, nie z cgexec.
Gdy wszystkie są już uruchomione, Cotrzymuje 66% procesora, Aa Bdzieli 33%. Jeśli zabiję Cwtedy Ai Bdostać 50% każda (zgodnie z oczekiwaniami).
Dlaczego Cdostaje 66%? W tym scenariuszu spodziewałbym się po 33%, a może 50% (C), 25% (A) i 25% (B). 66% Cnie zadziała, bez względu na to, jak robię matematykę.
Ogólnie chcę zrozumieć, w jaki sposób procesy uruchamiane bez cgexecinterakcji z procesami uruchamianymi, cgexecjeśli chodzi o współdzielenie zasobów (w szczególności procesor, ale bardziej ogólna odpowiedź byłaby doceniona, gdyby nie była zbyt złożona).
topi uważam, że zostały one uruchomione dość prosto z wiersza polecenia: cgexec -g cpu:foo myprogrami ./myprogram. Minęło trochę czasu, więc nie pamiętam z całą pewnością.
cpu.sharesjest bardzo osobliwą opcją konfiguracji; Polecam dzielenie rzeczy na procesory, jeśli to możliwe, cpuset.cpuszamiast tego.