Environ deux fois par semaine, l’ensemble de l’interface graphique se verrouille pendant environ 10 à 20 secondes sans avertissement pendant que je fais des tâches simples telles que la navigation sur le Web ou la rédaction d’un document. Lorsque cela se produit, les éléments de l'interface graphique ne répondent pas aux entrées au clavier ou à la souris, et l'applet Moniteur système affiche une utilisation du processeur 100% IOWait.
Aujourd’hui, j’ai finalement trouvé le terminal GNOME déjà ouvert au début du problème. Bien que d'autres applications telles que Google Chrome, Firefox, GNOME Do et GNOME Panel ne répondent pas, le terminal était utilisable. J'ai exécuté iotop
et constaté que les commandes nommées _[flush-8:16]
_ et _[jbd2/sdb2-8]
_ utilisaient alternativement 99,99% d'E/S.
En quoi consistent-ils et comment puis-je les empêcher de ne pas répondre aux questions de l'interface graphique?
_$ mount | grep ^/dev
/dev/sda1 on / type ext4 (rw,noatime,discard,errors=remount-ro,commit=0)
/dev/sdb2 on /home type ext4 (rw,commit=0)
$ cat /proc/swaps
Filename Type Size Used Priority
/dev/sdb3 partition 1052252 0 -1
_
_/dev/sda
_ est un OCZ-VERTEX2 et _/dev/sdb
_ est un WD10EARS . Voici dumpe2fs /dev/sdb2
et smartctl /dev/sdb --all
.
Je ne vois rien d'inhabituel dans dmesg
ou _/var/log/syslog
_.
Je vais risquer une théorie:
/dev/sdb1
est peut-être un espace d'échange?
Si quelque chose de central à l'interface graphique a été déchargé sur le disque, l'interface graphique ne peut pas continuer tant qu'elle n'a pas reçu ces données. Si le disque d'échange est en veille, cela signifie qu'il est bloqué jusqu'à ce que le disque réponde.
Je pense que cela donnerait un blocage temporaire, et la période de 10 à 20 secondes correspond au temps qu’il faut à un disque en sommeil pour répondre. Le terminal est probablement toujours réactif car tout ce dont il a besoin est déjà dans la RAM.
Quelques outils terminaux pour explorer la théorie:
hdparm -C /dev/sdX
vous indique si un disque est en veille:
$ Sudo hdparm -C /dev/sdb
/dev/sdb:
drive state is: standby
active/idle
signifie qu'il est en cours d'exécution. Dans l'état standby
ou sleeping
, il a cessé de tourner et il faudra un certain temps pour le redémarrer. Voir man hdparm
.
free -m
indique la quantité d'espace de swap utilisée:
$ free -m
total used free [...]
Mem: 5973 4928 1045 [...]
-/+ buffers/cache: 1091 4882
Swap: 6234 0 6234
"Swap:" est la ligne appropriée. Dans cet exemple, un swap de 6,2 Go est disponible et rien n’est utilisé.
Si tel est le problème, vous pouvez déplacer swap sur sda ou désactiver spindowns pour sdb.