LINUX.ORG.RU
решено ФорумAdmin

jbd2 жрет IO ресурсы на SSD

 ,


0

1

Привет!

Недавно обзавёлся SSD диском и воткнул его под систему, затем стал мониторить, что и сколько пишет на этот диск, так как ресурсы SSD не резиновые и кажутся мизерными когда обнаружил не понятную запись на диск в «простое».

Пользовался целый день только браузером, немного телеграмом, браузерный кеш на диске отключён, работает только в оперативке, больше никаких программ не запущено, но при этом, что-то потребляет дисковые ресурсы и записывает 5 гигов на /home разделе. Понял это я из поля Lifetime writes в суперблоке файловой системы EXT4:

cat /sys/fs/ext4/dm-4/lifetime_write_kbytes

Ладно там логи бы в /var писались, но в хоум что такого пишется на 5 гигов, считай в простое??

Запустил sudo iotop -oPa и сразу обнаружил, что больше всех потребляет DISK WRITE процесс jbd2/dm-4, где dm-4 это отдельный том в LVM’e с точкой монтирования /home:

Total DISK READ :       0.00 B/s | Total DISK WRITE :       0.00 B/s
Actual DISK READ:       0.00 B/s | Actual DISK WRITE:       0.00 B/s
    PID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND                                                                                                                 
   1066 ?dif dv            0.00 B      0.00 B  0.00 %  1.39 % kwin_x11 -session
    788 ?dif root          0.00 B     24.00 K  0.00 %  1.26 % Xorg -nolisten tcp -auth
   1070 ?dif dv            0.00 B      8.00 K  0.00 %  1.20 % plasmashell
    536 be/3 root          0.00 B   1556.00 K  0.00 %  0.05 % [jbd2/dm-4-8]
    538 be/3 root          0.00 B    196.00 K  0.00 %  0.02 % [jbd2/dm-2-8]
    338 be/4 root          0.00 B      0.00 B  0.00 %  0.01 % [dmcrypt_write/2]
    371 be/3 root          0.00 B     16.00 K  0.00 %  0.00 % [jbd2/dm-1-8]
    417 be/4 root          0.00 B      2.18 M  0.00 %  0.00 % systemd-journald
  25122 be/4 root          0.00 B      0.00 B  0.00 %  0.00 % [kworker/u16:7-kcryptd/254:0]
  25121 be/4 root          0.00 B      0.00 B  0.00 %  0.00 % [kworker/u16:2-kcryptd/254:0]
    567 be/4 root          0.00 B      8.00 K  0.00 %  0.00 % NetworkManager --no-daemon
  23902 be/4 root          0.00 B      0.00 B  0.00 %  0.00 % [kworker/u16:5-kcryptd/254:0]
  26755 ?dif dv           12.00 K     52.00 K  0.00 %  0.00 % dolphin
   1970 be/4 dv          384.00 K      8.19 M  0.00 %  0.00 % firefox -P developer
    916 be/4 root         20.00 K      0.00 B  0.00 %  0.00 % udisksd
   2364 be/4 dv            0.00 B    128.00 K  0.00 %  0.00 % firefox
  26977 be/4 dv          228.00 K      0.00 B  0.00 %  0.00 % firefox -contentproc -childID 16
   1114 ?dif dv            0.00 B      0.00 B  0.00 %  0.00 % telegram-desktop-bin
   1005 be/4 dv            0.00 B     16.00 K  0.00 %  0.00 % kdeinit5: Running...
   1391 ?dif dv            0.00 B      8.00 K  0.00 %  0.00 % konsole
   1425 be/4 dv            0.00 B      8.00 K  0.00 %  0.00 % code --no-sandbox
   1465 be/4 dv            0.00 B      8.00 K  0.00 %  0.00 % code --type=utility
   6719 be/4 dv            0.00 B      8.00 K  0.00 %  0.00 % firefox -contentproc -childID 15

Записал процесс jbd2/dm-4 на диск аж 1556.00 K за время запуска iotop, тогда как всё остальные близки к нулю или несуществены по сравнению с размером журнала для этого раздела (dm-4)! Это как так? Что журналируется, если ничего не меняется в файловой системе? (поле COMMAND сократил немного, так как оно не влияет на мой вопрос, чтобы отображалось без переносов).

В /etc/fstab опции монтирования с noatime

Режим журналирования для /home с EXT4 на нём включен «обычный», это - journal_ordered, которое говорит, что журналирует только метаданные. Это что за метаданные такие которые требуют таких объёмов в простое?

Как это можно оптимизировать не меняя режим журналирования? Как узнать, для каких файлов были изменения в журнале, чтобы узнать на что потратились 1500K? Как посмотреть сам журнал в «человеческом» виде и можно ли вообще?


Это как так? Что журналируется, если ничего не меняется в файловой системе?

Меняется. У тебя запущен Firefox. Он раз в пять минут перезаписывает как минимум prefs.js в профиле. Это где-то полсотни килобайт данных и ещё пару десятков килобайт метаданных ФС на изменения. Второе прогоняется через журнал.

Как это можно оптимизировать не меняя режим журналирования?

Закрыть Firefox?

Как узнать, для каких файлов были изменения в журнале, чтобы узнать на что потратились 1500K?

auditd

Как посмотреть сам журнал в «человеческом» виде и можно ли вообще?

Как есть — никак. Можно, но придётся декодеры писать самому. Насколько я понимаю, журналирование в ext4 — «физическое», то есть драйвер ФС сначала готовит блоки, а потом копирует их как есть.

Возможно, поможет debugfs, но нужно читать к нему маны.

i-rinat ★★★★★ ()
Последнее исправление: i-rinat (всего исправлений: 1)
Ответ на: комментарий от i-rinat

Да, точно. Просмотрел я в списке, что firefox -P developer скушал 8.19 M. Тогда понятно откуда набралось 1500K журнала. Буду разбираться с этим профилем, висел он у меня на другом рабочем столе, в то время как сёрфил я в другом профиле. Спасибо за ответ, буду разбираться с auditd возможно она откроет тайну на то, что реально там пишет фф.

dva20 ()