2014-12-12 8 views
5

Usiamo la procedura di limite di cgroup usare più risorse. ma, quando la memoria è più del limite in cgroup, ucciderà il processo . Perché usare sottosistema di memoria oom-killer di cgroup invece di errore di allocazione di memoria di ritorno quando il progresso consente la memoria oltre il limite cgroup?Perché il sottosistema di memoria di cgroup utilizza oom-killer invece di errore di allocazione della memoria di ritorno quando lo stato di avanzamento consente la memoria oltre il limite di cgroup?

+0

Si prega di riformulare la domanda con maggiori dettagli se si desidera una risposta migliore. È meglio condividere il cgroup conf e maggiori dettagli. ecc. – askb

+0

Sarebbe bello sapere almeno quanto segue: quale kernel usi? Utilizzi limiti di memoria morbida o rigida? L'intera configurazione di cgroup sarebbe meglio (specialmente se non è banale). Detto questo, non ci si aspetta che il sottosistema di memoria cgroup uccida un processo a meno che non ci sia effettivamente una carenza di memoria (viene utilizzata tutta la memoria e lo swap). – marbu

+0

Io uso il kernel 2.6.32 e uso limiti hard memeory.Io test mysql, uso su ogni memoria cgroup.Non utilizzo swap.Verrà oom, e oom-kill. Spero che il kernel restituisca un errore, quando non è possibile distribuire la pagina ma oom-kill o riagganciare. – kryptosx

risposta

1

sembra che cgroups possibile utilizzare oom-killer o mettere in pausa il processo (https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Resource_Management_Guide/sec-memory.html). Ma con ulimit, l'allocazione semplicemente fallisce normalmente.

Restano alcune domande senza risposta: c'è una via per ottenere cgroups per negare la memoria del processo (restituisce NULL da malloc)? O c'è un modo per ottenere ulimit per negare la memoria fisica (-m) piuttosto che solo virtuale (-v)?

Problemi correlati