2015-03-02 9 views
7

Sto tentando di utilizzare cgroups per limitare l'utilizzo della CPU. Sto usando questa guida https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Resource_Management_Guide/sec-cpu_and_memory-use_case.htmlUtilizzo di Cgroup per limitare l'utilizzo della CPU

Il mio file /etc/cgconfig.conf è la seguente

mount { 
cpu  = /mnt/cgroup/cpu,cpuacct; 
cpuacct = /mnt/cgroup/cpu,cpuacct; 
} 

group wheel { 
    cpu { 
      cpu.shares="800"; 
    } 
    cpuacct { 
      cpuacct.usage="0"; 
    } 
} 
group test1 { 
    cpu { 
      cpu.shares="200"; 
    } 
    cpuacct { 
      cpuacct.usage="0"; 
    } 
} 

mio cgrules.conf è la seguente

@wheel cpu,cpuacct wheel 
@test1 cpu,cpuacct test1 

althouth quando provo a correre:

dd if=/dev/zero of=/dev/null bs=1024k 

Vedo che l'utilizzo della CPU nel 100% per noi ERS appartengono al gruppo wheel e test1

Ho controllato i servizi con servizio di stato cgconfig ed è fino

Loaded: loaded (/usr/lib/systemd/system/cgconfig.service; disabled) 
Active: active (exited) since Mon 2015-03-02 17:29:19 EET; 7min ago 
Process: 1240 ExecStop=/usr/sbin/cgclear -l /etc/cgconfig.conf -e (code=exited, status=3) 
Process: 56536 ExecStart=/usr/sbin/cgconfigparser -l /etc/cgconfig.conf -s   1664 (code=exited, status=0/SUCCESS) 
Main PID: 56536 (code=exited, status=0/SUCCESS) 

Qualcuno può dirmi che cosa sto facendo di sbagliato? Grazie mille

+0

È possibile aggiungere l'output del comando 'top' quando si esegue' dd if =/dev/zero di =/dev/null bs = 1024k'? –

+5

Le condivisioni 'cgroup' limiteranno le risorse della CPU * solo quando c'è competizione per loro *. Se, nell'esempio, 'test1' vuole risorse CPU, e' wheel' non ne usa nessuno, quindi non c'è competizione, e 'test1' può avere tutto ciò che vuole. Se entrambe sono risorse impegnative, dovresti vedere l'effetto limitante basato sulla condivisione. – twalberg

+0

Ciao l'uscita è il seguente: ' ' USER PID PR NI VIRT RES SHR S TIME% CPU% MEM + COMMAND ' ' 51535 user1 20 0 108956 1680 556 R 100.0 0.0 0: 27.74 dd' '51557 utente2 20 0 108956 1676 552 R 100.0 0.0 0: 23.57 dd' user1 appartiene al gruppo wheel e user2 al test1 group – SteveGr2015

risposta

12

cpu cgroup è lavoro di conservazione, vale a dire. un compito non dovrebbe essere interrotto dall'uso della CPU se non c'è concorrenza. Se vuoi mettere un limite rigido alla quantità di CPU che un task può utilizzare, prova a impostare cpu.cfs_quota_us e cpu.cfs_period_us.

Consultare la documentazione here.

+0

Grazie mille, funziona bene con cpu.cfs_quota_us e cpu.cfs_period_us – SteveGr2015