Какое-то время назад заметил что домашний ноутбук тормозит когда ставятся обновления системы и при этом постоянно горит индикатор активности диска (индикатор продолжает непрырывно светиться даже в меню Grub).
В выводе iostat видна максимальная утилизация диска при небольшом количестве операций ввода-вывода
$ iostat -x sda Linux 6.1.0-38-amd64 (dragoncore) 22/08/25 _x86_64_ (4 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0,50 0,25 40,85 38,35 0,00 20,05 Device r/s rkB/s rrqm/s %rrqm r_await rareq-sz w/s wkB/s wrqm/s %wrqm w_await wareq-sz d/s dkB/s drqm/s %drqm d_await dareq-sz f/s f_await aqu-sz %util sda 1,00 0,50 0,00 0,00 251,00 0,50 40,00 459,00 20,00 33,33 146,22 11,47 0,00 0,00 0,00 0,00 0,00 0,00 7,00 133,29 7,03 105,20
В ноутбуке установлен SSD накопитель LITEON CV3-8D256-11 SATA 256GB формата M.2.
Посмотрел в атрибуты S.M.A.R.T.
$ sudo smartctl -A /dev/sda smartctl 7.3 2022-02-28 r5338 [x86_64-linux-6.1.0-38-amd64] (local build) Copyright (C) 2002-22, Bruce Allen, Christian Franke, www.smartmontools.org === START OF READ SMART DATA SECTION === SMART Attributes Data Structure revision number: 1 Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 5 Reallocated_Sector_Ct 0x0003 100 100 000 Pre-fail Always - 0 9 Power_On_Hours 0x0002 100 100 000 Old_age Always - 5763 12 Power_Cycle_Count 0x0003 100 100 000 Pre-fail Always - 3819 175 Program_Fail_Count_Chip 0x0003 100 100 000 Pre-fail Always - 0 176 Erase_Fail_Count_Chip 0x0003 100 100 000 Pre-fail Always - 0 177 Wear_Leveling_Count 0x0003 100 100 000 Pre-fail Always - 768 178 Used_Rsvd_Blk_Cnt_Chip 0x0003 100 100 000 Pre-fail Always - 0 179 Used_Rsvd_Blk_Cnt_Tot 0x0003 100 100 000 Pre-fail Always - 0 180 Unused_Rsvd_Blk_Cnt_Tot 0x0033 100 100 005 Pre-fail Always - 1248 181 Program_Fail_Cnt_Total 0x0003 100 100 000 Pre-fail Always - 0 182 Erase_Fail_Count_Total 0x0003 100 100 000 Pre-fail Always - 0 187 Reported_Uncorrect 0x0003 100 100 000 Pre-fail Always - 0 194 Temperature_Celsius 0x0003 100 100 000 Pre-fail Always - 79 195 Hardware_ECC_Recovered 0x0003 100 100 000 Pre-fail Always - 0 199 UDMA_CRC_Error_Count 0x0003 100 100 000 Pre-fail Always - 1 238 Unknown_Attribute 0x0003 061 100 000 Pre-fail Always - 39 241 Total_LBAs_Written 0x0003 100 100 000 Pre-fail Always - 30759792686 242 Total_LBAs_Read 0x0003 100 100 000 Pre-fail Always - 48997828952
Видна высокая температура накопителя (79 градусов), но остальные параметры похоже в норме.
Прогнал этот отчёт S.M.A.R.T. через нейронку
-
Состояние памяти NAND:
- Нет ошибок программирования/стирания (атрибуты 175, 176, 181, 182): Значения равны 0.
- Низкий уровень износа ячеек NAND (атрибут 177 — 768).
-
Ошибки/сбои хранения данных:
- Нет ни одной пересекторизации (атрибут 5 — 0).
- Количество ошибок чтения/передачи данных (199) минимально, возможно, случайное.
-
Температурный режим:
- Температура (
79°C
) выше оптимального диапазона. Здесь есть риск ускоренного износа NAND и контроллера. Необходимо обеспечить лучшее охлаждение накопителя, особенно если он используется в условиях высокой загрузки (например, в ноутбуке/сервере).
- Температура (
При этом кулер в ноутбуке не работает. Попробовал его принудительно включить через i8kctl из i8kutils, но не сработало. В базе знаний Arch нашёл что нужно выключить контроль оборотов вентилятора в BIOS через dell-bios-fan-control
$ git clone https://github.com/TomFreudenberg/dell-bios-fan-control.git $ cd dell-bios-fan-control/ $ make $ sudo install -o root -m 755 dell-bios-fan-control /usr/local/sbin/ $ sudo dell-bios-fan-control 0 $ sudo i8kctl fan - 2
Теперь вентилятор работает на максимальных оборотах, но температура SSD не уменьшается.
Поскольку проблема проявляется во время активной записи на диск, то появилась теория что SSD не успевает писать данные из-за заполненности диска. На этом ноутбуке используется файловая система EXT4 поверх LVM2 поверх LUKS и команда "fstrim -v /" закончилась ошибкой.
$ sudo fstrim -v / fstrim: /: the discard operation is not supported
Добавил "discard" в /etc/cryptsetup, обновил initramfs и перезагрузил систему.
$ sudo sed -i 's/luks/luks,discard/' /etc/crypttab $ sudo update-initramfs -u -k all update-initramfs: Generating /boot/initrd.img-6.1.0-38-amd64 update-initramfs: Generating /boot/initrd.img-6.1.0-37-amd64 $ sudo reboot
После этого "fstrim -v /" отработала без ошибок.
$ sudo fstrim -v / /: 27,8 MiB (29147136 bytes) trimmed
Через какое-то время погас индикатор активности диска и SSD остыл до 40 градусов. Чтобы fstrim выполнялся автоматически включил fstrim.timer
$ sudo systemctl enable --now fstrim.timer Created symlink /etc/systemd/system/timers.target.wants/fstrim.timer → /lib/systemd/system/fstrim.timer. $ sudo systemctl status fstrim.timer ● fstrim.timer - Discard unused blocks once a week Loaded: loaded (/lib/systemd/system/fstrim.timer; enabled; preset: enabled) Active: active (waiting) since Sat 2025-08-23 20:15:33 +03; 17h ago Trigger: Mon 2025-08-25 00:36:58 +03; 11h left Triggers: ● fstrim.service Docs: man:fstrim Aug 23 20:15:33 dragoncore systemd[1]: Started fstrim.timer - Discard unused blocks once a week.
После всех манипуляций запустил установку обновлений в виртуальных машинах, но медленной работы системы не наблюдалось.
Отличный совет. Спасибо.
ОтветитьУдалить