Boot corretto (ma non ottimo) con insserv

Ven, 30/10/2009 - 19:14
Ritratto di mcortese

Boot corretto (ma non ottimo) con insserv

Inviato da mcortese 0 commenti

Finalmente ho capito cosa c'è di sbagliato in inserv, o in me, o in chi sembra apprezzare insserv. L'equivoco di fondo è che insserv serva ad ottimizzare la sequenza di avvio. Questo è falso: ciò che fa è garantirne la correttezza.
Grazie ad insserv siamo sicuri che l'ordine di avvio degli script rispecchi le mutue dipendenze descritte negli header degli script sessi. L'ottimizzazione, invece, è ben altra cosa e ha a che fare con elementi che insserv non prende in considerazione, come:

  • quali servizi è importante lanciare prima, ad esempio io reputo importante avere un login grafico il più presto possibile;
  • quali servizi hanno una priorità bassissima, come cron e anacron che per loro stessa natura svolgono attività asincrone;
  • quali servizi hanno più da guadagnare se lanciati insieme, ad esempio due programmi che accedono pesantemente al disco non girano bene in parallelo, idem due programmi "CPU-intensive".

Costringere insserv a considerare questi elementi è impossibile, se non facendo pesante uso di hack terribili come lo pseudoservizio $all e i file override, con i quali tra l'altro si rischia di "mancare" eventuali aggiornamenti degli script.
Dunque insserv non serve ad ottimizzare l'avvio, anzi può peggiorarlo, perché impone la sua sequenza di script anche in presenza di una configurazione già ottimizzata a mano. Eppure non si può rimuoverlo, pena la rinuncia alla parallelizzazione degli script, perché
la variabile CONCURRENCY è rispettata solo se insserv è installato e attivo.
Non sarebbe bello se insserv (il cui obiettivo, ricordiamo, non è l'ottimizzazione ma solo la correttezza della sequenza di avvio) non sarebbe bello, dicevo, se insserv fosse solo un programma di test e non di modifica degli script di avvio? Un programma che analizza l'ordine degli script senza cambiarlo, e avverte solo se qualcosa non va? In questo modo la garanzia di correttezza sarebbe mantenuta, mentre la possibilità di ottimizzazione manuale sarebbe lasciata all'utente.