Рабочий стол полностью зависает при операциях ввода-вывода.

Вопрос или проблема

В моей старой системе у меня уже были зависания рабочего стола при некоторых тяжелых операциях ввода-вывода, таких как 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, чтобы отслеживать использование ресурсов в реальном времени и выявить узкие места.

Заключение

Количество факторов, которые могут влиять на производительность системы при операциях ввода-вывода, обширно. Вам следует провести тщательный анализ своей конфигурации, протестировать различные настройки и учесть рекомендации, приведенные выше. Такой подход позволит вам оптимизировать работу системы, минимизировать зависания рабочего стола и сделать взаимодействие с операционной системой более плавным.

Оцените материал
Добавить комментарий

Капча загружается...