Ho 3 processi su una macchina single core. Ogni processo è esattamente lo stesso e brucia la CPU il più velocemente possibile (tight loop). Due di questi ( Ae B) vengono lanciati con cgexec in gruppi separati con condivisioni impostate su 512 e 512. Il terzo ( C) viene avviato regolarmente, non con cgexec.
Una volta che tutto è attivo e funzionante, Cottiene il 66% della CPU mentre Ae Bdiviso il 33%. Se uccido Callora Ae Bottengo il 50% ciascuno (come previsto).
Perché Cottiene il 66%? Mi sarei aspettato il 33% ciascuno in questo scenario, o forse il 50% (C), il 25% (A) e il 25% (B). Il 66% Cnon funzionerà, non importa come faccio la matematica però.
In generale, voglio capire come i processi avviati senza cgexecinteragire con i processi avviati cgexecquando si tratta di condivisione delle risorse (CPU in particolare, ma una risposta più generale sarebbe apprezzata se non fosse troppo complessa).
tope credo che siano stati avviati abbastanza semplicemente da un prompt dei comandi: cgexec -g cpu:foo myprograme ./myprogram. È passato un po 'di tempo, quindi non ricordo con certezza.
cpu.sharesè un'opzione di configurazione molto particolare; Raccomando di dividere le cose per CPU se possibile usando cpuset.cpusinvece.