Оптимизация Samba
Установка параметра “wide links=” в конфигурационном файле Samba
Большой ошибкой будет установить параметр "wide links" в "no" в конфигурационном файле Samba “/etc/smb.conf”. Эта опция, если установлена в “no”, говорит Samba не следовать по символическим ссылкам вне экспортируемой области. Чтобы определить находится ли ссылка вне области, Samba следует по символической ссылке, а затем выполняет “directory path lookup”, чтобы определить, где на файловой системе символическая ссылка завершилась. Эта операция добавляет шесть дополнительных системных вызовов на каждый файловый lookup, а Samba просматривает имена файлов очень много раз. Тесты, которые были опубликованы, показали, что установка этого параметра снижает производительность Samba сервера на 25-30 процентов.
Настройка кэша буфера
Модификация параметров, влияющих на настройку кэша файловой системы, может значительно улучшить производительность файлового сервера Linux. Linux будет пытаться использовать память, не используемую для других целей, для кэширования файловой системы. Специальный демон, называемый “bdflush”, будет периодически сбрасывать на диск содержимое "грязных" буферов (буфер, который содержит модифицированные данные файловой системы или метаданные).
Секрет хорошей производительности – это сохранение в памяти так много данных, как это возможно. Запись на диск является самой медленной операцией при работе с любой файловой системой. Как и с большинством настраиваемых параметров ядра, вы можете изменять эти опции на лету, при помощи специальных файлов “/proc”.
Параметры по умолчанию для “bdflush” под Red Hat Linux:
"40 500 64 256 500 3000 500 1884 2"
Чтобы изменить значения bdflush введите следующие команды на вашем терминале:
Под Red Hat Linux 6.1
[root@deep /]# echo "80 500 64 64 15 6000 6000 1884 2" >/proc/sys/vm/bdflush
Вы должны добавить вышеприведенную команду в скрипт “/etc/rc.d/rc.local”, чтобы она выполнялась при каждой загрузке компьютера автоматически.
Под Red Hat Linux 6.2
Редактируйте файл “/etc/sysctl.conf” и добавьте следующие строки:
# Улучшение производительности файловой системы vm.bdflush = 80 500 64 64 15 6000 6000 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 ]
Эта строка говорит “bdflush” не беспокоиться о записи грязных блоков на диск пока кэш буферов файловой системы не заполниться на 80 процентов. Другое значение определяют максимальное количество грязных буферов, которое может быть записано за одну операцию (500), как долго разрешается грязному буферу существовать (60*HZ) и т.д. Полное описание всех параметров вы можете найти в документации, поставляемой вместе с ядром 2.2, в файле “linux/Documentation/sysctl/vm.txt”, и также, вы можете прочитать главу 4, “Общая системная оптимизация” этой книги.
Настройка buffermem
Другая полезная настройка должна сообщить Linux следующее: использовать минимум 60 процентов памяти для кэширования буферов; сокращать только когда процент используемой памяти для кэша буферов преодолеет 10 процентов (этот параметр сейчас не используется); и позволять расти до 60 процентов всей памяти (этот параметр сейчас не используется).
По умолчанию значения установленные для “buffermem” в Red Hat Linux равны:
"2 10 60"
Чтобы изменить значения buffermem введите следующую команду на вашем терминале:
Под Red Hat Linux 6.1
[root@deep /]# echo "60 10 60" >/proc/sys/vm/buffermem
Вы должны добавить вышеприведенную команду в скрипт “/etc/rc.d/rc.local”, чтобы она выполнялась при каждой загрузке компьютера автоматически. Полное описание всех параметров вы можете найти в документации, поставляемой вместе с ядром 2.2, в файле “linux/Documentation/sysctl/vm.txt”, и также, вы можете прочитать главу 4, “” этой книги.
Под Red Hat Linux 6.2
Редактируйте файл “/etc/sysctl.conf” и добавьте следующую строку:
# Улучшение производительности виртуальной памяти
vm.buffermem = 60 10 60
Вы должны перезагрузить сетевые настройки, чтобы изменения вступили в силу: [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 ]
Напоминаем, что последние два параметра (10 и 60) сейчас не используются, поэтому мы не будем их изменять.