Linux 5.7, ora è possibile generare un processo figlio in un cgroup diverso da quello del genitore

Dalla nuova versione 5.7 infatti, sarà possibile generare un processo figlio, da un genitore, in un diverso “cgroup” con una semplice System Call.

Avatar di Sabino Picariello

a cura di Sabino Picariello

Apprendiamo da Phoronix
una notizia che cambierà il nostro modo di interagire con la creazione dei processi su Linux. Dalla nuova versione 5.7 infatti sarà possibile generare un processo figlio, da un genitore, in un diverso “cgroup” con una semplice System Call. I vantaggi sono evidenti, evitando tutti i passaggi intermedi che richiedeva tale pratica (write lock, copia, ecc…), l’efficienza di tutto il sistema ne guadagna e la migrazione di task/thread non sarà più un passaggio così costoso in termini prestazionali.

Per i non addetti ai lavori capitati in questo articolo, è doverosa una piccola e generica spiegazione su cosa siano i control group, o cgroup. La loro funzione principale è quella di raggruppare, appunto, un determinato numero di processi e dedicare ad essi risorse o comandi specifici. Ovviamente, all’interno di un control group andremo a inserire processi che posseggono uguali caratteristiche e ogni gruppo potrà ereditare delle condizioni, dal proprio gruppo di appartenenza, rendendo così tutta la struttura gerarchica.

Se vi state chiedendo a cosa possa servire una funzionalità del genere, a parte per un discorso organizzativo e di controllo dei processi, possiamo pensare ad esempio a tutte quelle situazioni in cui vogliamo allocare solo un determinato quantitativo di risorse per delle attività, senza che queste occupino tutta la CPU, in modo che una percentuale sia sempre disponibile per svolgere compiti magari più importanti.

Nella pratica, la nuova funzionalità presente nell’aggiornamento del kernel Linux, potrà essere utilizzata tramite il richiamo alla System Call - così viene definita una funzione utilizzata dal sistema operativo (utente) per richiedere un servizio a livello del kernel - “clone3”.

Vediamo quindi le funzionalità incluse nella patch:

  • Un gestore dei servizi può creare un servizio direttamente in un cgroup dedicato;
  • Un processo può essere creato direttamente in un cgroup congelato ed anch’esso sarà congelato direttamente;
  • Eliminato il ritardo che può verificarsi nella registrazione di risorse iniziale compiuta da processi supervisori e demoni;
  • Le applicazioni che fanno uso di thread possono scegliere di creare un layout specifico per un cgroup in cui ogni thread viene generato direttamente in un cgroup dedicato.
Il modo migliore per conoscere come funziona davvero un sistema operativo, è la lettura di un buon libro. Noi vi consigliamo "Sistemi Operativi" della casa editrice Pearson. Lo trovate su amazon.