Безопасность и оптимизация Linux.Редакция для Red Hat

       

Параметр “bdflush”.


Файл bdflush вплотную связан с операциями в подсистеме виртуальной памяти ядра Linux и имеет небольшое влияние на использование диска. Этот файл (/proc/sys/vm/bdflush) контролирует операции демона ядра bdflush. Мы используем этот файл для улучшения производительности файловой системы.

Изменяя некоторые значения принятые по умолчанию, добиваемся чтобы система стала более “отзывчивой”, например, она ждет немного большее при осуществлении записи на диск и избегает таким образом некоторых конфликтов доступа.

По умолчанию bdflush в Red Hat Linux использует следующие значения:
"40 500 64 256 500 3000 500 1884 2"

Для изменения значений в bdflush введите следующие команды на вашем терминале:

Под Red Hat 6.1


[root@deep /]# echo "100 1200 128 512 15 5000 500 1884 2">/proc/sys/vm/bdflush

Вы можете добавить эту команду в /etc/rc.d/rc.local, чтобы она выполнялась каждый раз при загрузке компьютера.

Под Red Hat 6.2

Редактируйте файл “/etc/sysctl.conf” и добавьте следующую строку:
# Improve file system performance


vm.bdflush = 100 1200 128 512 15 5000 500 1884 2

Вы должны перезагрузить ваши сетевые устройства, чтобы изменения вступили в силу. [root@deep /]# /etc/rc.d/init.d/network restart Setting network parameters [ OK ] Bringing up interface lo        [ OK ] Bringing up interface eth0      [ OK ] Bringing up interface eth1      [ OK ]

В вышеприведенном примере согласно файлу “/usr/src/linux/Documentation/sysctl/vm.txt” первый параметр 100% определяет максимальное число грязных буферов в кэше буферов. Грязные означают то, что содержимое буфера все еще должно быть записано на диск. Установка этому параметру высокого значения означает, что Linux в течении долгого времени может задерживать запись на диск, но в то же время это означает, что будет необходимо произвести много операций ввода-вывода одновременно, когда памяти станет мало. Низкое значение будет распределять операции I/O более равномерно.

Второй параметр (1200) (ndirty) определяет максимальное число грязных буферов которые могут быть одновременно записаны. Высокое значение означает отсроченный, пульсирующий I/O, в то время как маленькое значение может приводить к нехватке памяти, когда bdflush не просыпается достаточно часто.

Третье значение (128) (nrefill) определяет число буферов, которые bdflush будет добавлять в список свободных при вызове функции refill_freelist(). Необходимо распределять свободные буфера заранее, так как они имеют часто размер отличный от размера страницы памяти и некоторый учет системных ресурсов нужно делать заранее. Чем выше число, тем больше памяти будет потрачено впустую и тем реже будет необходимо вызывать refill_freelist(). Когда refill_freelist() (512) натолкнется на больше чем nref_dirt грязных буферов то просыпается bdflush().

age_buffer (50*HZ) и age_super parameters (5*HZ) обозначают максимальное время, которое Linux ждет перед записью грязных буферов на диск. Значение выражено в мигах (clockticks), число мигов в секунду = 100. age_buffer это возраст блоков данных, а age_super – возраст метаданных файловой системы. Пятый (15) и последние два (1884 и 2) не используются системой, так что мы оставим значения по умолчанию.

Замечание. Читайте “/usr/src/linux/Documentation/sysctl/vm.txt” о том как улучшить параметры ядра, связанные с виртуальной памятью.



Содержание раздела