Вопрос или проблема
Ubuntu 24.04 зависал 4 раза за один час при передаче файлов. Некоторые люди сообщали о проблеме зависания раньше, но не с такими деталями, как я.
Я проверил логи с помощью journalctl. Затем я получил ошибку утечки данных MMIO. Я использовал sudo dmesg | grep -i 'MMIO'
. Ниже приведены детали ошибки.
[ 0.000000] efi: Удалить mem55: Диапазон MMIO=[0xf0000000-0xf7ffffff] (128МБ) из карты e820
[ 0.000000] efi: Не удаляется mem56: Диапазон MMIO=[0xfe000000-0xfe010fff] (68КБ) из карты e820
[ 0.000000] efi: Не удаляется mem57: Диапазон MMIO=[0xfec00000-0xfec00fff] (4КБ) из карты e820
[ 0.000000] efi: Не удаляется mem58: Диапазон MMIO=[0xfee00000-0xfee00fff] (4КБ) из карты e820
[ 0.000000] efi: Удалить mem59: Диапазон MMIO=[0xff000000-0xffffffff] (16МБ) из карты e820
[ 0.157357] MMIO Устаревшие Данные: Смягчение: Очистка буферов CPU
[ 0.163535] MMIO Устаревшие Данные: Проблема с процессором присутствует и SMT включен, возможна утечка данных. См. на https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/processor_mmio_stale_data.html для получения подробной информации.
Как я могу это исправить?
Запрашиваемое обновление:
Он застревает перед завершением процесса. REISUB тоже не работает. Нет шума от диска, но звук вентилятора усиливается. У меня 32 ГБ оперативной памяти, и я пробовал копировать всего 15 ГБ. Процессор – i9. До сих пор он зависал 6 раз за пару часов, и мне приходилось использовать кнопку питания.
это может быть немного рискованно, но стоит попробовать…
отредактируйте /etc/sysctl.conf, используя xed admin:///etc/sysctl.conf
(или любой другой ваш любимый редактор), добавив следующие строки в конец файла:
# Улучшить запись на внешние носители, такие как USB-накопители
# 64МБ / простое число # близко к 48МБ
vm.dirty_bytes=67108864
vm.dirty_background_bytes=49999991
сохраните и перезагрузитесь. эффект заключается в том, чтобы предотвратить захват ядром огромных блоков свободной памяти для выполнения операций копирования файлов. мой опыт с ядром 6.8 показывает, что если у него слишком много памяти для использования при копировании файлов, оно может случайно “заблудиться”. вышеописанное ограничение копий файлов около 64МБ у меня сработало хорошо, не оказывая значительного влияния на производительность. я использовал простое число для второго значения, чтобы убедиться, что два числа не имеют общих множителей – фактически “рандомизируя” процесс.
см.:
https://easylinuxtipsproject.blogspot.com/p/speed-mint.html#ID11
.
Ответ или решение
Давайте подробно рассмотрим проблему периодических зависаний Ubuntu 24.04 при копировании файлов и возможности её решения.
Теоретическая основа
Во-первых, стоит отметить, что ваша проблема связана с утечкой данных MMIO (Memory-Mapped I/O). Это может указывать на аппаратную или программную уязвимость вашей системы. MMIO подразумевает доступ процессора к памяти через специальные адресные ячейки, что позволяет эффективно взаимодействовать с устройствами ввода-вывода. Ошибка "MMIO Stale Data CPU bug" указывает на вероятный баг в архитектуре процессора, при этом Hyper-Threading (SMT) усиливает риск утечки данных.
”’Что же касается процесса копирования, оно вовлекает как работу с дисковой подсистемой, так и интенсивное использование оперативной памяти. Параметры файла конфигурации /etc/sysctl.conf, такие как vm.dirty_bytes и vm.dirty_background_bytes, управляют объемом данных, который может быть временно сохранен в кэш-памяти перед записью на диск. Установка высоких значений по умолчанию на системах с 32 ГБ ОЗУ может привести к тому, что процесс использует слишком много системных ресурсов, вызывая сбои в работе.”’
Практическое применение
-
Проверка обновлений и патчей: Так как вы используете последний выпуск Ubuntu, проверьте, если ли доступные обновления как для ядра, так и микропрограммы вашего процессора. Разработчики имеют показательные возможности получать новые сведения об уязвимостях и выпускать исправления для их устранения.
-
Настройка sysctl.conf: Как вы уже упомянули, можно определить ограничения для загрузки операционной памяти через команду редактирования xed admin:///etc/sysctl.conf. Это уменьшает вероятность того, что система будет использовать значительный объем оперативной памяти для кэширования, что может вызвать задержки и зависания.
vm.dirty_bytes=67108864 vm.dirty_background_bytes=49999991
-
Журналирование: Продолжайте пристально следить за логами системы посредством команды
journalctl
для выявления дополнительных причин нарушений. Это позволит заранее выявить и устранить потенциальные ошибки. -
Рекомендации по аппаратной настройке: Убедитесь, что Hyper-Threading отключен, если у вас возникли проблемы с уязвимостью процессоров Intel. Это может снизить производительность, но повысит безопасность.
-
Охлаждение системы: Повышение частоты вращения вентиляторов может указывать на перегрев, который, в свою очередь, приводит к снижению производительности. Проверьте температурные режимы через утилиты, такие как lm-sensors, и убедитесь, что система не нагревается.
-
Замена оборудования: В случае, если программные решения не дают эффекта, возможно, стоит обратить внимание на состояние вашего SSD/HDD или оперативной памяти. Проблемы с оборудованием могут вызвать некорректную работу системы.
Заключение
Анализ ошибок и реализация данных шагов должны помочь в понимании обстановки и исправлении проблем с зависаниями системы. Взаимодействие между аппаратными и программными составляющими системы находится в постоянной эволюции, что требует внимания и корректировки в конфигурациях как на уровне ОС, так и аппаратных средств. Выборочные настройки и обновления должны проводиться на основе тщательного анализа их влияния на систему в целом.