Un processus en veille de disque ou en veille ininterrompue attend généralement la fin d'une opération d'entrée/sortie. Dans cet état, il ne peut pas être réveillé par des signaux, et le processus ne peut donc pas être arrêté à l'aide du signal SIGKILL.
Ma compréhension limitée de ce qui se passe est la suivante : L'ordonnanceur du CPU dans le noyau maintient une file d'attente d'exécution qui est la liste des processus qui sont prêts à être exécutés. Lorsqu'un processus obtient le CPU, soit
- utilise pleinement son créneau horaire et se fait éliminer, ou
- Il doit attendre la réponse d'une opération, généralement d'E/S, et demande à être transféré dans la file d'attente de sommeil, en attendant l'événement.
Les processus qui sont planifiés en raison du numéro 2 indiquent également au planificateur s'ils doivent être interrompus ou non pendant qu'ils attendent l'événement. Lorsqu'ils ne peuvent pas continuer à fonctionner correctement s'ils sont interrompus par un signal (généralement les pilotes de périphériques), ils indiquent qu'ils ne doivent être réveillés que par l'événement. Ils sont dans un état de sommeil ininterrompu, et seront déplacés vers la file d'attente de sommeil.
Si le système se bloque régulièrement en raison de la mise en veille du disque, il peut s'agir de l'un des problèmes suivants
- Pilote de périphérique défectueux
- Défauts sur votre matériel (Disque dur ?)
- Les systèmes de fichiers montés qui sont lents à répondre.
J'ai vu cela à maintes reprises avec les systèmes de fichiers NFS. Si, pour une raison quelconque, la réponse du périphérique est perdue, le processus restera en état de veille, rendant presque impossible l'utilisation du montage/dispositif jusqu'à un redémarrage.
Si vous pensez que l'accès à votre disque dur est à l'origine des blocages d'E/S, il peut être prudent de vérifier s'il y a des blocs ou des secteurs défectueux sur le disque.