Ich habe 3 Prozesse auf einer Single-Core-Maschine. Jeder Prozess ist genau der gleiche und brennt die CPU so schnell wie möglich (enge Schleife). Zwei von ihnen ( A
und B
) werden mit cgexec in separaten Gruppen mit Freigaben von 512 und 512 C
gestartet. Die dritte ( ) wird regelmäßig gestartet, nicht mit cgexec.
Sobald alle aktiv sind, erhalten Sie C
66% der CPU A
und B
teilen sich 33%. Wenn ich C
dann töte A
und jeweils B
50% bekomme (wie erwartet).
Warum bekommt C
man 66%? In diesem Szenario hätte ich jeweils 33% erwartet, oder vielleicht 50% (C), 25% (A) und 25% (B). 66% werden C
nicht klappen, egal wie ich rechne.
Im Allgemeinen möchte ich verstehen, wie Prozesse gestartet werden, ohne cgexec
mit Prozessen zu interagieren, die cgexec
beim Teilen von Ressourcen gestartet werden (insbesondere CPU, aber eine allgemeinere Antwort wäre wünschenswert, wenn sie nicht zu komplex ist).
top
und ich glaube, sie wurden ziemlich einfach über eine Eingabeaufforderung gestartet: cgexec -g cpu:foo myprogram
und ./myprogram
. Es hat eine Weile gedauert, deshalb erinnere ich mich nicht mit Sicherheit.
cpu.shares
ist eine sehr eigenartige Konfigurationsoption; Ich empfehle, die Dinge nach Möglichkeit nach CPUs aufzuteilen und cpuset.cpus
stattdessen zu verwenden.