Vorrei capire meglio i cgroups e vorrei capire i casi d'uso per l'applicazione dei cgroups.
I cgroup sono un buon modo per dare la priorità alle diverse applicazioni (ovvero dare maggiore priorità a tipi specifici di applicazioni come i web server)?
Vorrei capire meglio i cgroups e vorrei capire i casi d'uso per l'applicazione dei cgroups.
I cgroup sono un buon modo per dare la priorità alle diverse applicazioni (ovvero dare maggiore priorità a tipi specifici di applicazioni come i web server)?
Risposte:
Esistono diversi usi per i cgroups . Dall'amministrazione di sistema probabilmente il più importante è limitare le risorse - l'esempio classico qui è l'accesso alla cpu. Se si crea un gruppo, ad esempio, sshde si assegna una condivisione del tempo della CPU non trascurabile (rispetto ad altri gruppi o l'impostazione predefinita in base alla quale rientrano tutti i processi non ordinati), si è certi di poter accedere anche nei momenti in cui la macchina sarà in esecuzione attività ad alta intensità di CPU.
Ancora più interessante, se dai a questi processi di "accesso remoto" una condivisione della CPU molto più elevata rispetto al resto, sarai in grado di accedere quasi istantaneamente (perché il demone ssh avrà la priorità rispetto al resto dei processi in esecuzione) mentre non ti farai male la forza di calcolo complessiva della macchina, poiché le risorse sono allocate solo in base alle necessità. Di solito si desidera eseguire questa operazione insieme alle priorità di I / O (inclusa la rete). Tuttavia, come sottolinea correttamente John nel commento qui sotto, non si vuole fare queste cose con noncuranza (poiché potrebbe rispondere in modo imprevisto). La cosa importante da tenere a mente è che i gruppi sono ereditati per impostazione predefinita, ovvero non si desidera avviare un hog di memoria / CPU da tale sessione SSH. Eppure per questo ci sono meccanismi che possono assegnare processi ai cgroup appena iniziano.
Un altro uso è isolare i processi l'uno dall'altro - in combinazione con altre funzionalità (isolamento dello spazio dei nomi) nei kernel Linux recenti vengono utilizzati per creare la virtualizzazione a livello di sistema operativo come LXC (Linux Containers) .
Oltre a ciò, è possibile eseguire varie operazioni di contabilità e controllo (congelando alcuni gruppi di processi, assegnandoli a specifici core della CPU, ecc.).
I due link qui, dovrebbero essere un ragionevole punto di partenza se stai cercando maggiori informazioni. Potresti anche voler controllare la Documentation/cgroupsdirectory nell'albero dei sorgenti del kernel Linux.
systemd, che (ab) usa i cgroup per i suoi scopi - i file di unità di sistema per i servizi potrebbero fornire alcuni indizi su ciò che potrebbe essere ragionevole. Ma alla fine spetta sempre all'amministratore di sistema imparare nel modo più duro, ciò che in realtà non è la "Buona Idea (TM)".
cgrouppseudofilesystem che potresti dover montare per primo. Nella maggior parte dei casi oggi, il sistema init lo fa per te e spesso usa già i cgroups in qualche modo. L'unica risposta definitiva è leggere la documentazione: documenti del kernel , OpenRC @ Gentoo , systemd @ freedesktop .