- Вопрос или проблема
- Ответ или решение
- Причины полной зависания рабочего стола при операциях ввода-вывода и возможные решения
- 1. Анализ оборудования и программного обеспечения
- 2. Проблема с использованием свопа
- 3. Производительность дискового планировщика
- 4. Настройки vm.swappiness
- 5. Взаимодействие с оперативной памятью и кешированием
- Заключение
Вопрос или проблема
В моей старой системе у меня уже были зависания рабочего стола при некоторых тяжелых операциях ввода-вывода, таких как apt-get dist-upgrade
и копирование видеофайлов размером 4 ГБ. Но теперь стало намного хуже: любое apt-get install
достаточно, чтобы завис весь рабочий стол, а копирование видео с помощью nice -c 3
совершенно не помогает, я не могу выполнять никакие операции в течение нескольких минут. Согласно man ionice
, влияние бездействующего процесса ввода-вывода на нормальную системную активность должно быть нулевым.
Проблема с обменом также появилась: я отключил раздел подкачки, и дважды произошло истощение ОЗУ. Но вместо того, чтобы завершить процесс, вызвавший истощение (я установил vm.oom_kill_allocating_task=1
), диск начал вращаться и полностью завис рабочий стол на долгое время, хотя я выполнил sudo swapoff -a
и проверил, сработало ли это.
Старая аппаратная и программная часть:
- Жесткий диск: 500 ГБ Toshiba
- Система: Debian 7.9 (32 бита)
- Ядро: 3.15.10-zen-686 (Liquorix)
- Дисковый планировщик: BFQ
- Файловая система: ext4
Новая аппаратная и программная часть:
- Жесткий диск: 1 ТБ Samsung
- Система: Ubuntu 15.10 (64 бита)
- Ядро: 4.2.0-30-generic
- Дисковый планировщик: Deadline (по умолчанию)
- Файловая система: зашифрованный LVM с Btrfs
Я нашел много людей, которые решили аналогичные проблемы, сменив планировщик CFQ на Deadline, но Deadline является стандартным в ядре Ubuntu. И у меня уже были проблемы с предположительно быстрым дисковым планировщиком BFQ без шифрования.
Очевидно, что самой большой проблемой была проблема с обменом. В моей старой системе установка vm.swappiness=100
помогала мне избегать зависания системы, перемещая страницы до исчерпания памяти. В этой новой системе, похоже, это имело противоположный эффект: система постоянно и без необходимости использовала обмен. Я приобрел больше ОЗУ и полностью отключил обмен, и проблема в основном была решена.
Что касается того, что операции ввода-вывода вызывали зависания рабочего стола, это, похоже, происходит из-за того, что данные от операции кэшировались в ОЗУ, а память, используемая приложениями рабочего стола, сбрасывалась в обмен, что вызывало необходимость считывать данные с диска всякий раз, когда я пытался взаимодействовать с рабочим столом.
С достаточным объемом ОЗУ операции ввода-вывода почти не влияют на отзывчивость рабочего стола, но если рабочий стол оставить без внимания на некоторое время, может быть начальная задержка при взаимодействии с ним. Это может быть вызвано тем, что ядро решает, что система достаточно простаивает, чтобы отдать более высокий приоритет операции, и ее данные могут заполнить кэш полностью, сбрасывая страницы из приложений рабочего стола.
Что касается дискового планировщика, я не проводил достаточно тестов, чтобы знать, какой из них будет лучшим вариантом, но, судя по моим исследованиям, похоже, что Deadline полностью игнорирует ionice
, или что ionice
специфичен для CFQ.
Ответ или решение
Причины полной зависания рабочего стола при операциях ввода-вывода и возможные решения
Данная проблема, связанная с зависаниями рабочего стола при тяжелых операциях ввода-вывода, имеет несколько возможных причин и решений. Рассмотрим их подробно, основываясь на описанных вами обстоятельствах.
1. Анализ оборудования и программного обеспечения
Старое оборудование и система:
- Жесткий диск: 500 ГБ Toshiba
- Операционная система: Debian 7.9 (32 бита)
- Ядро: 3.15.10-zen-686 (Liquorix)
- Дисковый планировщик: BFQ
- Файловая система: ext4
Новое оборудование и система:
- Жесткий диск: 1 ТБ Samsung
- Операционная система: Ubuntu 15.10 (64 бита)
- Ядро: 4.2.0-30-generic
- Дисковый планировщик: Deadline (по умолчанию)
- Файловая система: зашифрованный LVM с Btrfs
Переход на новое оборудование и систему, безусловно, должен был улучшить общую производительность, однако некоторые настройки могут вызывать проблемы с производительностью ввода-вывода и стабильностью работающего окружения.
2. Проблема с использованием свопа
При отключении свопа вы столкнулись с жестким ограничением по доступной оперативной памяти, что может вызывать нежелательные ситуации, такие как Out of Memory (OOM). Ваше решение установить vm.oom_kill_allocating_task=1
ограничивает проблемы, но при отключенном свопе (после выполнения sudo swapoff -a
) система может оставаться без ресурсов, что приводит к зависаниям.
Рекомендации:
- Проверка RAM: Убедитесь, что у вас достаточно оперативной памяти для выполнения задач, которые вы выполняете. Оперативная память должна превышать 8 ГБ для современных систем.
- Использование свопа: Переосмыслите отключение свопа и рассмотрите возможность создания раздела свопа хотя бы в 2 ГБ. Это может помочь вашим приложениям в случае нехватки оперативной памяти.
3. Производительность дискового планировщика
Вы отметили проблемы с производительностью BFQ и Deadline. Разные планировщики могут демонстрировать различные результаты в зависимости от сценария использования. Несмотря на то, что Deadline по умолчанию установлен в Ubuntu, он может не оптимально работать для всех сценариев.
Рекомендации:
- Тестирование с различными планировщиками: Попробуйте использовать другие планировщики, такие как
CFQ
илиNOOP
, чтобы определить, какой из них лучше работает с вашей конфигурацией.
echo cfq | sudo tee /sys/block/sdX/queue/scheduler
Замените sdX
на ваш диск.
4. Настройки vm.swappiness
Вы подняли вопрос о правильной настройке vm.swappiness
. Это значение контролирует агрессивность замены страниц, поэтому его корректная настройка имеет критическое значение.
Рекомендации:
- Настройка vm.swappiness: Попробуйте установить значение
vm.swappiness=10
для того, чтобы система меньше полагалась на своп и лучше использовала вашу RAM.
echo 10 | sudo tee /proc/sys/vm/swappiness
5. Взаимодействие с оперативной памятью и кешированием
Как вы отмечали, при выполнении операций ввода-вывода данные кэшируются, и оригинальные данные из приложений, работающих в вашем окружении рабочего стола, могут быть вытеснены. Это может объяснять временные задержки при взаимодействии с рабочим столом.
Рекомендации:
- Мониторинг производительности: Используйте утилиты мониторинга, такие как
htop
,iotop
иvmstat
, чтобы отслеживать использование ресурсов в реальном времени и выявить узкие места.
Заключение
Количество факторов, которые могут влиять на производительность системы при операциях ввода-вывода, обширно. Вам следует провести тщательный анализ своей конфигурации, протестировать различные настройки и учесть рекомендации, приведенные выше. Такой подход позволит вам оптимизировать работу системы, минимизировать зависания рабочего стола и сделать взаимодействие с операционной системой более плавным.