La scorsa settimana è stata introdotta una nuova proposta per il kernel Linux per aggiungere il parametro “hung_task_detect_count” come strumento pratico per monitorare quante volte sono stati rilevati “task bloccati” (hung tasks) al momento dell’avvio del sistema. Attualmente, tramite il parametro /proc/sys/kernel/hung_task_warnings, è già possibile leggere il numero di avvisi relativi a questi task bloccati. Con un set di due patch ora in fase di revisione, si prevede di aggiungere /proc/sys/kernel/hung_task_detect_count, che riporterà il numero totale di attività bloccate rilevate dal boot.
Linux: i dettagli della nuova proposta per il kernel
Lance Yang, che ha inviato le patch proponendo il contatore “hung_task_detect_count“, ha dichiarato nella mailing list pubblicata nelle scorse ore: “questa serie di patch aggiunge un contatore, hung_task_detect_count, per monitorare quante volte vengono rilevati task bloccati. A mio avviso, i task bloccati sono un indicatore critico. Attualmente li rileviamo analizzando periodicamente i messaggi di dmesg, ma questo metodo non è così pratico come l’uso di un contatore. A volte, un problema temporaneo con la scheda di rete (NIC) o il disco rigido può ridurre rapidamente gli avvisi di hung_task_warnings a zero. Senza avvisi, dobbiamo accedere direttamente al nodo per verificare che non ci siano più task bloccati e che il sistema si sia ripreso. Dopotutto, il solo carico medio non può fornire un quadro chiaro della situazione.”
Nella sua cover letter, Yang spiega ancora come gli sviluppatori pensano di evitare le interruzioni: “una volta implementato questo contatore, in un contesto di alta densità di distribuzione, prevediamo di impostare hung_task_timeout_secs a un valore più basso per migliorare la stabilità. Tuttavia, ciò potrebbe generare alcuni falsi positivi. Potremo quindi stabilire una soglia basata sul tempo. Se i task bloccati durano oltre questa durata, migreremo automaticamente i container su altri nodi. In base alle esperienze passate, questo approccio potrebbe aiutare a evitare molte interruzioni in produzione. Inoltre, proprio come altri eventi importanti (ad esempio, l’OOM) che già dispongono di contatori, ha senso avere un contatore dedicato anche per i task bloccati”.
Aggiungere questa funzionalità al kernel Linux per il contatore dei task bloccati richiede solo 18 righe di nuovo codice. Tale novità è attualmente in fase di revisione nella mailing list del kernel Linux. Si tratta di una modifica di piccole dimensioni, che non dovrebbe essere particolarmente controversa. Per questo motivo, gli sviluppatori sperano che venga inclusa presto in una delle prossime release del kernel mainline.