Секреты оптимизации Samba в Ubuntu

Поговорим о том, как заставить Samba работать немного быстрее. Если вы откроете файл конфигурации smb.conf, то найдете в нем параметр wide links. Никогда не устанавливайте его в no! Так вы существенно снизите производительность Samba. Наоборот, если вы установите его в yes (если до этого параметр wide links был отключен), то сможете существенно повысить производительность.

Параметр wide links определяет, как Samba будет следовать по символическим ссылкам. Если wide links=no, то Samba не будет следовать по символическим ссылкам вне экспортируемой области. Сначала Samba следует по символической ссылке, а затем выполняет так называемый directory path lookup (системный вызов, определяющий, где завершилась ссылка). Данная операция подразумевает на 6 системных вызовов больше, нежели в случае, если wide links=yes. Учитывая, что подобных операций делается очень много, то выключение wide links снижает производительность Samba приблизительно на 30%.
Протокол ТСР/ЕР — штука тонкая. Производительность сетевых приложений во многом зависит от того, правильно ли настроен TCP/IP. Samba — настоящее сетевое приложение, которое к тому же работает по протоколу ТСР/ЕР. При использовании TCP/IP, если размер запросов и ответов не фиксирован (яак в случае с Samba), рекомендуется применять протокол TCP с опцией TCP_NODELAY. Для этого в файл smb.conf нужно добавить строку:
socket options = TCP_NODELAY

Тесты показывают, что Samba при больших нагрузках работает в 3 раза быстрее, чем без указания этих опций. Если Samba используется в локальной сети (в большинстве случаев так оно и есть), рекомендуется еще указать опцию IPTOS_LOWDELAY:
socket options =.IPTOS_LOWDELAY TCP_NODELAY

Если есть желание «выжать» из Samba еще больше, тогда установите следующие параметры буферизации: SO_RCVBUF=8192 SO_SNDBUF=8192. Например:
socket options = TCPJJODELAY SO_RCVBUF=8192 SO_SNDBUF= 8192