У меня есть ящик, который периодически "выходит на обед". Симптомы - это все, что требует фактического зависания ввода-вывода диска на 30+ секунд, и кажется, что все, что уже загружено, не затронуто. Проблема возникает периодически, до нескольких раз в час), и до сих пор не была связана с какой-либо запущенной программой или поведением пользователя.Повторное отображение коробки сейчас было бы большим нарушением, поэтому я надеюсь изолировать проблему и, надеюсь, доказать, что в этом нет необходимости. Система Ubuntu 20.04 с btrfs-on-luks nvme root fs.
описания пользователей + анализ журнала ( dmesg
и journalctl
) не показывают никакого поведения, связанного с проблемой, кроме сообщений, связанных с тайм-аутом io через 10 секунд, которые явно кажутся быть симптомы / последствия. Коробка использовалась (без каких-либо обнаруженных случаев этой проблемы) в течение ~ 6 месяцев с ubuntu 20.04, прежде чем была повторно отображена несколько месяцев назад, поэтому у меня есть эти незначительные данные о том, что проблема не в hw. btrfs scrub
и bios smart
не сообщают об ошибках.
с использованием iotop -o
live во время воспроизведения я вижу, что фактическая пропускная способность диска падает до ~ нуля за исключением пары потоков ядра [kworker /.* events-power -fficient ]
.
Пожалуйста, порекомендуйте следующие шаги для сортировки / определения причины зависания ввода-вывода.
интеллектуальный вывод в соответствии с запросом:
#> smartctl -a /dev/nvme0n1` as requested:
[...]
=== START OF SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
SMART/Health Information (NVMe Log 0x02)
Critical Warning: 0x00
Temperature: 33 Celsius
Available Spare: 100%
Available Spare Threshold: 10%
Percentage Used: 0%
Data Units Read: 4,339,623 [2.22 TB]
Data Units Written: 7,525,333 [3.85 TB]
Host Read Commands: 23,147,319
Host Write Commands: 69,696,108
Controller Busy Time: 1,028
Power Cycles: 98
Power On Hours: 3,996
Unsafe Shutdowns: 25
Media and Data Integrity Errors: 0
Error Information Log Entries: 0
Warning Comp. Temperature Time: 0
Critical Comp. Temperature Time: 0
Error Information (NVMe Log 0x01, max 256 entries)
No Errors Logged
с использованием netdata
в соответствии с рекомендациями @anx, я приближаюсь: следующий симптом в памяти ядра кажется на 100% коррелированным с воспроизведением во всех случаях, которые я вижу. В течение ~ 1 минуты невозвратная память, выделенная ядром, удваивается . Пока все это распределяется, все операции ввода-вывода зависают. Когда память освобождается, ввод-вывод разблокируется во время спада. Центральный пик / удвоение очень стабильны, меньшие пики до и после немного различаются.
Кроме того, это поведение происходит с (прерывистой) почасовой частотой:
работает над инвентаризацией задач cron и systemd, выполняемых ежечасно. Проверить, можно ли включить ведение журнала отладки, поскольку сегодня в журналах нет ничего подозрительного.
Шаблоны (, когда происходит ухудшение?) И коррелированные метрики (резко ли падает / увеличивается какая-либо другая метрика во время ухудшения?) Часто являются самым быстрым путем к идентификация триггера .
Даже если триггер не является причиной проблемы (например, если система останавливается из-за нехватки памяти, но механизм , почему это происходит, более сложен), полезно иметь надежный метод воспроизведения. , чтобы вы могли получить больше данных.
Шаги сортировки:
netdata
, чтобы визуально определять шаблоны и / или коррелированные показатели. Что-то происходит с метриками производительности при возникновении проблемы? Наиболее полезные из них могут появиться раньше , чем снижение производительности - проблема, которую вы видите, вполне может быть на этапе восстановления некорректного поведения какого-либо драйвера или программы. top
или даже echo t> / proc / sysrq-trigger; dmesg
).Запустите запланированное задание вручную хотя бы один раз, чтобы его зависимости были кэшированы Идеи для общих объяснений:
отбрасывать
]) или его отсутствие в сочетании с огромными объемами записи, заставляющими систему ждать завершения диска