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

Просто напишите функцию:

my-git-add-.() {
  [ -e readme.md ] && doctoc readme.md
  [ -e changelog.md ] && changelogupd changelog.md
  git add .
}
1
26.02.2016, 01:40
1 ответ

Очевидно, самой большой проблемой была проблема с подкачкой. В моей старой системе установка vm.swappiness=100 помогала мне избежать зависания системы, перемещая страницы до исчерпания памяти. В новой системе, похоже, это дало обратный эффект: система постоянно и без необходимости выполняла свопинг. Я купил больше оперативной памяти и полностью отключил своппинг, и проблема была в основном решена.

Что касается того, что операции ввода-вывода вызывали зависание рабочего стола, то, по-видимому, это было связано с тем, что данные операций кэшировались в оперативной памяти, а память, используемая настольными приложениями, сбрасывалась в своп, что заставляло систему считывать данные с диска всякий раз, когда я пытался взаимодействовать с рабочим столом.

При достаточном объеме оперативной памяти операции ввода-вывода в основном не влияют на скорость отклика рабочего стола, но если рабочий стол оставлен без присмотра на некоторое время, может наблюдаться начальная задержка при взаимодействии с рабочим столом. Это может быть связано с тем, что ядро решает, что система простаивает достаточно, чтобы дать более высокий приоритет операции, и ее данные могут в конечном итоге полностью заполнить кэш, отбрасывая страницы из приложений рабочего стола.

Что касается планировщика дисков, я не проводил достаточного тестирования, чтобы понять, какой вариант будет лучшим, но из моих исследований следует, что либо deadline полностью игнорирует ionice, либо ionice специфичен для CFQ.

0
28.01.2020, 01:24

Теги

Похожие вопросы