Просто напишите функцию:
my-git-add-.() {
[ -e readme.md ] && doctoc readme.md
[ -e changelog.md ] && changelogupd changelog.md
git add .
}
Очевидно, самой большой проблемой была проблема с подкачкой. В моей старой системе установка vm.swappiness=100
помогала мне избежать зависания системы, перемещая страницы до исчерпания памяти. В новой системе, похоже, это дало обратный эффект: система постоянно и без необходимости выполняла свопинг. Я купил больше оперативной памяти и полностью отключил своппинг, и проблема была в основном решена.
Что касается того, что операции ввода-вывода вызывали зависание рабочего стола, то, по-видимому, это было связано с тем, что данные операций кэшировались в оперативной памяти, а память, используемая настольными приложениями, сбрасывалась в своп, что заставляло систему считывать данные с диска всякий раз, когда я пытался взаимодействовать с рабочим столом.
При достаточном объеме оперативной памяти операции ввода-вывода в основном не влияют на скорость отклика рабочего стола, но если рабочий стол оставлен без присмотра на некоторое время, может наблюдаться начальная задержка при взаимодействии с рабочим столом. Это может быть связано с тем, что ядро решает, что система простаивает достаточно, чтобы дать более высокий приоритет операции, и ее данные могут в конечном итоге полностью заполнить кэш, отбрасывая страницы из приложений рабочего стола.
Что касается планировщика дисков, я не проводил достаточного тестирования, чтобы понять, какой вариант будет лучшим, но из моих исследований следует, что либо deadline полностью игнорирует ionice
, либо ionice
специфичен для CFQ.