ragioni kjournald per l'utilizzo elevato


15

Sto cercando di capire perché kjournaldsta impazzendo sulla mia macchina. È una scatola a 8 core con un sacco di memoria. Ha un carico della CPU del 50% circa.

L'iotop non sembra puntare su alcun processo specifico - alcune esplosioni di scritture qua e là (principalmente cron start, alcune statistiche di monitoraggio generate, ecc.) Quando ho usato sys/vm/block_dumpper raccogliere le statistiche di scrittura, ho ottenuto elenchi come questo:

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

Dove le kjournaldazioni sono solo WRITE.

Perché sta succedendo questo? Cos'altro dovrei guardare per limitare un po 'l'attività kjournald? Sembra sproporzionato rispetto a ciò che viene effettivamente scritto.


Quale sistema operativo stai usando. Puoi pubblicare le informazioni uname.
Soham Chakraborty,

Ho avuto lo stesso identico problema
Sharen Eayrs

Risposte:


15

kjournaldè responsabile del journal di ext3 (journaling filesystem). È noto che utilizza molta CPU con determinati carichi. Non c'è molto da fare se non usare un altro filesystem o disabilitare il journaling (rendendo efficace fs ext2).

In teoria è possibile utilizzare una delle altre modalità di journaling ext3 e verificare se l'utilizzo della CPU diminuisce, ma si ricorda che ogni metodo costituisce un compromesso sulla sicurezza dei dati che vengono scritti sul disco. Hai ordinato la modalità, la modalità writeback e la modalità 'tutto'.

  1. Ordinato: solo metadati del journal, ma assicura che i dati relativi a un metadata vengano salvati prima di eseguire il commit delle modifiche dei metadati nel journal.
  2. writeback: solo metadati del journal, ma non garantisce che i dati vengano salvati prima del commit del journal.
  3. journal: tutto è journal, dati e metadati. Potrebbe essere lento ma YMMV.

È possibile impostare la modalità utilizzando l'opzione data=durante il montaggio del sistema, ad esempio data=ordered.


Non ha senso cambiare la modalità journaling al contrario di disattivarla completamente, ma ha anche meno senso. Quindi descrivere quali opzioni del diario fanno in qualche modo inutile.
poige,

3
Diverse modalità journal mostrano comportamenti CPU diversi. Alcuni test qui .
coredump,

1
@coredump, ancora inutile . Non ci sono grafici che mostrano l'utilizzo della CPU per le diverse modalità di journaling, ma solo la velocità effettiva. Il grafico di utilizzo della CPU mostra le differenze tra solo FS, in realtà. Inoltre, presa in considerazione piuttosto una notevole differenza tra EXT3 e Reiser3 su quel grafico, è chiaro che viene analizzato il footprint complessivo e medio della CPU, dove @viraptor ha picchi di attività kjournald.
poige,

Accetteremo quindi di non essere d'accordo. Solo i test sul suo ambiente mostreranno una differenza o meno sull'utilizzo della CPU. Inoltre non consiglierei ReiserFS, dal momento che il governo ha ottenuto un blocco permanente sull'autore di FS :).
coredump

8
Ecco, prendi questa tazza di umorismo: \
coredump,

4

Di default il tuo filesystem ext3 verrà montato con gli atimes attivati. Ogni volta che si legge / accede a un file o a una directory, il filesystem dovrà riscrivere sui dischi per aggiornare questo record atime. Ciò significa che anche se il tuo carico di lavoro è principalmente basato sulla lettura, dovrai comunque colpire i dischi per aggiornare i tempi di accesso di ciascun file e directory, e questa è la mia ipotesi sul perché il tuo kjournaldprocesso ha scritto così tanti blocchi.

La disattivazione di atime comporterà un notevole aumento delle prestazioni ma interromperà la conformità POSIX. Dai un'occhiata a questo articolo di Wikipedia per alcune discussioni sulle critiche di Atime.

Per disattivare i tempi basta aggiungere noatimealle opzioni di mount per il tuo filesystem, oppure puoi rimontare come suggerito da Poige. Ecco un esempio per il tuo filesystem di root:

mount -o remount,noatime /

3
Si noti che i kernel più recenti sono predefiniti a quelli relatimeche sembrano essere un compromesso accettabile tra noatimee atime.
Oliver,

1

Se la perfezione dei dati non è importante: farlo

iostat -o -a

Assicurati che sia davvero kjournald. Ciò che provoca il crash del mio server.

La modifica del disco rigido in SSD funzionerebbe.

Quando vedi kjournald scrivere 5-10 MB di dati che fai

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

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

dove sda1 è il nome della tua partizione

Segnala il risultato in un commento in modo da poter verificare ulteriormente.


3
Intendi iotop, non iostat, vero?
Joe Niland,

0

Non per fare, solo per menzionare:

  1. mount -oremount,noatime /fs/being_over/journaled- come una rapida ipotesi (non ci hai mostrato come sei mountcomunque)
  2. Prova a ridurre le dimensioni del giornale ( tune2fs -J …)
  3. Passa a Reiser3 (robusto per un bel po 'di tempo, sì. E mai un diario così brutto mai.)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.