Вход/Регистрация
Разработка ядра Linux
вернуться

Лав Роберт

Шрифт:

Системный администратор может установить эти значения с помощью каталога

/proc/sys/vm
и утилиты
sysctl
. В табл. 15.1 приведен список всех соответствующих переменных.

Таблица 15.1. Параметры для настройки демона

pdflush

Переменная Описание
dirty_background_ratio
Объем свободной оперативной памяти, при котором демон
pdflush
начинает обратную запись незаписанных данных
dirty_expire_centisecs
Время, в сотых долях секунды, в течение которого незаписанные данные могут оставаться в памяти, перед тем как демон
pdflush
не запишет их на диск при следующем периоде обратной записи
dirty_ratio
Процент от общей оперативной памяти, соответствующий страницам памяти одного процесса, при котором начинается обратная запись незаписанных данных
dirty_writeback_centisecs
Насколько часто, в сотых долях секунды, процесс
bdflush
возвращается к выполнению для обратной записи данных
laptop_mode
Переменная булевого типа, которая включает или выключает режим ноутбука (см. следующий раздел)

Код потока

pdflush
находится в файлах
mm/page-writeback.c
и
fs/fs-writeback.c
.

Режим ноутбука

Режим ноутбука — это специальная политика обратной записи страниц с целью оптимизации использования батареи и продления срока ее работы. Это делается путем минимизации активности жестких дисков, чтобы они оставались в остановленном состоянии по возможности долго. Конфигурировать этот режим можно с помощью файла

/proc/sys/vm/laptop_mode
. По умолчанию в этом файле записано значение 0 и режим ноутбука выключен. Запись значения 1 в этот файл позволяет включить режим ноутбука.

В режиме ноутбука существует всего одно изменение в выполнении обратной записи страниц. В дополнение к обратной записи измененных страниц; памяти, когда они становятся достаточно старыми, демон

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

Такое поведение имеет смысл, когда параметры

dirty_expire_centisecs
и
dirty_writeback_centisecs
установлены в большие значения, скажем 10 минут. При таких задержках обратной записи диск запускается не часто, а когда он все-таки запускается, то работа в режиме ноутбука гарантирует, что этот момент будет использован с максимальной эффективностью.

Во многих поставках ОС Linux режим ноутбука автоматически включается и выключается, при этом также могут изменяться и другие параметры демона

pbflush
, когда заряд батареи уменьшается. Такое поведение позволяет получать преимущества от режима ноутбука при работе от батареи и автоматически возвращаться к нормальному поведению, когда машина включается в электрическую сеть.

Демоны

bdflush
и
kupdated

В ядрах серий до 2.6 работа потоков

pdflush
выполнялась двумя другими потоками ядра
bdflush
и
kupdated
.

Поток пространства ядра

bdflush
выполнял фоновую обратную запись измененных страниц, когда количество доступной памяти становилось достаточно малым. Также был определен ряд пороговых значений, аналогично тому как это делается для демона
pdflush
. Демон
bdflush
возвращался к выполнению с помощью функции
wakeup_bdflush
, когда количество свободной памяти становилось меньше этих пороговых значений.

Между демонами

bdflush
и
pdflush
существует два главных отличия. Первое состоит в том, что демон
bdflush
был всего один, а количество потоков
pdflush
может меняться динамически. Об этом более подробно будет рассказано в следующем разделе. Второе отличие состоит в том, что демон
bdflush
работал с буферами, он записывал на диск измененные буферы. Демон
pdflush
работает со страницами, он записывает на диск целые измененные страницы памяти. Конечно, страницы памяти могут соответствовать буферам, но единицей ввода-вывода является целая страница памяти, а не один буфер. Это дает преимущество, поскольку работать со страницами памяти проще, чем с буферами, так как страница памяти — более общий и более часто используемый объект.

Так как демон

bdflush
выполнял обратную запись, только когда количество свободной памяти очень сильно уменьшалось или количество буферов было очень большим, то был введен поток ядра
kupdated
, который периодически выполнял обратную запись измененных страниц памяти. Он использовался для целей, аналогичных функции
wb_kupdate
демона
pdflush
.

Потоки

bdflush
и
kupdated
и их функциональность сейчас заменены потоками
pdflush
.

Предотвращение перегруженности: для чего нужны несколько потоков

Один из главных недостатков решения на основе демона

bdflush
состоит в том, что демон
bdflush
имел всего один поток выполнения. Это приводило к возможности зависания демона при большом количестве операций обратной записи, когда один поток демона
bdflush
блокировался на очереди запросов ввода-вывода перегруженного устройства, в то время как очереди запросов других устройств могли быть в этот момент сравнительно свободными. Если система имеет несколько дисков и соответствующую процессорную мощность, то ядро должно иметь возможность загрузить работой все диски. К сожалению, даже при большом количестве данных, для которых необходима обратная запись, демон
bdflush
может оказаться загруженным работой с одной очередью и не сможет поддерживать все диски в нагруженном состоянии. Это происходит потому, что пропускная способность диском конечна и, к несчастью, очень низкая. Если только один поток выполняет обратную запись страниц, то он может проводить много времени в ожидании одного диска, так как пропускная способность диска ограничена. Для облегчения этой ситуации ядру необходима многопоточная обратная запись. В таком случае ни одна очередь запросов не может стать узким местом.

  • Читать дальше
  • 1
  • ...
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: