raisons de kjournald pour une utilisation élevée

15

J'essaie de comprendre pourquoi kjournalddevient fou sur ma machine. C'est une boîte à 8 cœurs avec beaucoup de mémoire. Il a une charge de ~ 50% cpu.

Le iotop ne semble pas à tout point de processus spécifiques de - quelques éclats de écrit ici et là (surtout à partir Cron, des statistiques de suivi générées, etc.) Quand je sys/vm/block_dumppour recueillir les statistiques d'écriture, je suis arrivé des listes comme ceci:

kjournald(1352): 1909
sendmail(28934): 13
cron(28910): 12
cron(28912): 11
munin-node(29015): 3
cron(28913): 3
check_asterisk_(28917): 3
sh(28917): 2
munin-node(29022): 2
munin-node(29021): 2

Où les kjournaldactions ne sont que des ÉCRITS.

Pourquoi cela se produit-il? Que dois-je regarder d'autre pour limiter un peu l'activité de kjournald? Cela semble disproportionné par rapport à ce qui est réellement écrit.

viraptor
la source
Quel système d'exploitation vous utilisez. Pouvez-vous publier les informations sans nom.
Soham Chakraborty
J'ai eu exactement le même problème
Sharen Eayrs

Réponses:

15

kjournaldest responsable du journal d'ext3 (journalisation du système de fichiers). Il est connu d'utiliser beaucoup de CPU sous certaines charges. Il n'y a pas grand-chose à faire sauf utiliser un autre système de fichiers ou désactiver la journalisation (ce qui rend le fs ext2 efficace).

Théoriquement, vous pouvez utiliser l'un des autres modes de journalisation ext3 et vérifier si l'utilisation du processeur diminue, mais n'oubliez pas que chaque méthode est un compromis sur la sécurité des données écrites sur le disque. Vous avez commandé le mode, le mode d'écriture différée et le mode «tout».

  1. Ordonné: journal uniquement des métadonnées, mais garantit que les données liées à une métadonnée sont enregistrées avant de valider les modifications de métadonnées dans le journal.
  2. écriture différée: journal uniquement les métadonnées, mais n'a aucune garantie que les données sont enregistrées avant la validation du journal.
  3. journal: tout est journalisé, données et métadonnées. Cela peut être lent mais YMMV.

Vous définissez le mode en utilisant l'option data=lors du montage du système, comme data=ordered.

coredump
la source
Il n'y a aucun sens à changer le mode de journalisation contrairement à le désactiver complètement, mais cela a encore moins de sens. Donc, décrire quelles options de journal font un peu inutile.
poige
3
Différents modes de journal présentent des comportements CPU différents. Quelques tests ici .
coredump
1
@coredump, toujours inutile . Il n'y a pas de graphiques montrant l'utilisation du processeur pour différents modes de journalisation, uniquement le débit. Le graphique d'utilisation du processeur montre les différences entre FS uniquement, en fait. En outre, compte tenu d'une différence plutôt notable entre EXT3 et Reiser3 sur ce graphique, il est clair que l'empreinte CPU globale et moyenne est analysée, alors que @viraptor a des pics d'activité kjournald.
poige
Nous conviendrons alors d’être en désaccord. Seuls les tests sur son environnement montreront qu'il y a une différence ou non sur l'utilisation du CPU. De plus, je ne recommanderais pas ReiserFS, car le gouvernement a obtenu un verrou permanent sur l'auteur FS :).
coredump
8
Ici, prenez cette coupe d'humour: \
coredump
4

Par défaut, votre système de fichiers ext3 va être monté avec atimes activé. Chaque fois qu'un fichier ou répertoire est lu / accédé, le système de fichiers devra réécrire sur les disques pour mettre à jour cet enregistrement atime. Cela signifie que même si votre charge de travail est principalement basée sur la lecture, vous devrez toujours frapper les disques pour mettre à jour les temps d'accès de chaque fichier et répertoire, et c'est ma supposition pour laquelle votre kjournaldprocessus écrivait autant de blocs.

La désactivation de atime entraînera une forte augmentation des performances, mais rompra la conformité POSIX. Consultez cet article Wikipedia pour une discussion autour de la critique de atime.

Pour désactiver parfois, ajoutez simplement noatimeles options de montage pour votre système de fichiers, ou vous pouvez remonter comme suggéré par poige. Voici un exemple pour votre système de fichiers racine:

mount -o remount,noatime /
Evan Borgstrom
la source
3
Notez que les noyaux plus récents par défaut, relatimece qui semble être un compromis acceptable entre noatimeet atime.
Oliver
1

Si la perfection des données n'est pas importante: faites-le

iostat -o -a

Assurez-vous que c'est vraiment kjournald. C'est ce qui fait planter mon serveur.

Changer le disque dur en SSD fonctionnerait.

Lorsque vous voyez kjournald écrire 5 à 10 Mo de données que vous faites

http://ubuntuforums.org/showthread.php?t=56621

sudo tune2fs -O ^has_journal /dev/sda1
sudo e2fsck /dev/sda1

où sda1 est le nom de votre partition

Signaler le résultat en commentaire afin que je puisse vérifier davantage.

Sharen Eayrs
la source
3
Vous voulez dire iotop, pas iostat, non?
Joe Niland
0

Pas dans l'ordre, juste pour mentionner:

  1. mount -oremount,noatime /fs/being_over/journaled- comme une supposition rapide (vous ne nous avez pas montré de quoi vous avez l' mountair de toute façon)
  2. Essayez de réduire la taille du journal ( tune2fs -J …)
  3. Passez à Reiser3 (robuste pendant assez longtemps, oui. Et jamais un journal aussi méchant.)
poige
la source