controllo della priorità delle applicazioni tramite cgroups


Risposte:


8

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.


grazie. l'esempio sshd è interessante e fa emergere un altro pensiero correlato. un aspetto che non avevo preso in considerazione è quello di garantire che le altre risorse siano allocate in modo appropriato - presumo che qualcuno con una conoscenza incompleta del profilo di un'applicazione possa creare scompiglio allocando solo risorse per CPU (in questo esempio) e nessuna allocazione per I / O (dire rete). Se è così - ci sono profili ben noti per i cgroups pubblicati ovunque?
Johnnie,

@John domanda davvero interessante. Potresti voler controllare le distribuzioni che hanno 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)".
peterph

1
@kokbira dipende da quale livello - generalmente scrivi nello 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 .
peterph

1
@kokbira il sistema operativo fa quello che dici (almeno uno buono - ce ne sono alcuni che fanno molte altre cose a cui non dici loro, ma questa è un'altra storia). L'idea è che se si esegue un'applicazione, si desidera che ottenga tutto ciò che è necessario per eseguire ciò che ci si aspetta. Se l'applicazione si comporta in modo errato, spetta all'operatore del sistema (che in questo caso sei tu) fare qualcosa al riguardo. Gli autori della distribuzione potrebbero escogitare alcuni euristici su come risolvere questo tipo di problemi, ma causerebbero più problemi da risolvere.
peterph,

1
@kokbira come per Firefox stesso, suggerirei di utilizzare alcuni componenti aggiuntivi che riducono il carico messo sul browser e di conseguenza l'intero sistema. Dalla mia esperienza, l'origine NoScript e uBlock è sufficiente. Soprattutto NoScript nel "blocca tutto per impostazione predefinita" fa miracoli: basta abilitare il minimo indispensabile per lavorare con i siti Web che stai utilizzando e puoi facilmente ottenere centinaia di schede su un sistema RAM da 8 GB e funzionare ancora abbastanza bene. Inoltre hai l'ulteriore livello di protezione da tutta la spazzatura di JS che la maggior parte dei siti Web utilizza in questi giorni per inutili effetti di fantasia.
peterph,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.