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 ( Aund B) werden mit cgexec in separaten Gruppen mit Freigaben von 512 und 512 Cgestartet. Die dritte ( ) wird regelmäßig gestartet, nicht mit cgexec.
Sobald alle aktiv sind, erhalten Sie C66% der CPU Aund Bteilen sich 33%. Wenn ich Cdann töte Aund jeweils B50% bekomme (wie erwartet).
Warum bekommt Cman 66%? In diesem Szenario hätte ich jeweils 33% erwartet, oder vielleicht 50% (C), 25% (A) und 25% (B). 66% werden Cnicht klappen, egal wie ich rechne.
Im Allgemeinen möchte ich verstehen, wie Prozesse gestartet werden, ohne cgexecmit Prozessen zu interagieren, die cgexecbeim Teilen von Ressourcen gestartet werden (insbesondere CPU, aber eine allgemeinere Antwort wäre wünschenswert, wenn sie nicht zu komplex ist).
topund ich glaube, sie wurden ziemlich einfach über eine Eingabeaufforderung gestartet: cgexec -g cpu:foo myprogramund ./myprogram. Es hat eine Weile gedauert, deshalb erinnere ich mich nicht mit Sicherheit.
cpu.sharesist eine sehr eigenartige Konfigurationsoption; Ich empfehle, die Dinge nach Möglichkeit nach CPUs aufzuteilen und cpuset.cpusstattdessen zu verwenden.