====== Ускоряем работу samba по сети ======
Рассмотрим, как можно увеличить производительность работы демона samba по **гигабитной** сети.
Рассматриваемая среда:
- ОС: 8.2-PRERELEASE FreeBSD amd64 SMP
- HP microserver, http://arstechnica.com/civis/viewtopic.php?f=11&t=1126552
- CPU: AMD Athlon(tm) II Neo N36L Dual-Core Processor
- RAM: 1Гб
- NIC: HP NC107i PCIe Gigabit Server Adapter
===== Порядок действий =====
**1.** Собираем/пересобираем samba версии 3 (к примеру из порта /usr/ports/net/samba35) с поддержкой aio.
**2.** В /boot/loader.conf прописываем:
aio_load="YES"
**3.** В /etc/sysctls.conf прописал ряд параметров, которые в моем случае позволили значительно улучшить быстродействие по сети:
kern.ipc.maxsockbuf=16777216
kern.ipc.maxsockets=204800
kern.ipc.nmbclusters=32768
kern.ipc.somaxconn=32768
kern.maxfiles=256000
kern.maxfilesperproc=32768
kern.maxvnodes=800000
net.inet.tcp.delayed_ack=0
net.inet.tcp.inflight.enable=0
net.inet.tcp.path_mtu_discovery=0
net.inet.tcp.recvbuf_auto=1
net.inet.tcp.recvbuf_inc=524288
net.inet.tcp.recvbuf_max=16777216
net.inet.tcp.recvspace=65536
net.inet.tcp.rfc1323=1
net.inet.tcp.sendbuf_auto=1
net.inet.tcp.sendbuf_inc=524288
net.inet.tcp.sendspace=131072
net.inet.udp.maxdgram=57344
net.inet.tcp.recvspace=131072
net.local.stream.recvspace=65536
net.local.stream.sendspace=65535
net.inet.tcp.sendbuf_max=16777216
net.inet.tcp.mssdflt=1460
**4.** В /usr/local/etc/smb.conf дописал:
socket options=SO_RCVBUF=131072 SO_SNDBUF=131072 TCP_NODELAY
#socket options = SO_RCVBUF=65536 SO_SNDBUF=65536
#socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE
#socket options=TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=8192 SO_SNDBUF=8192
min receivefile size=16384
use sendfile=true
##aio read size = 16384
##aio read size = 65536
aio write size = 16384
#aio write size = 65536
aio write behind = true
Закоментировал параметры, которые снижали производительность. Теперь странное: aio read size вызывало большую проблему: невозможно было скопировать любой файл с smb ресурса - просто ошибка копирования - недостаточно прав.
**5.** Перегружаемся. Копируем/читаем файлы с smb ресурса, параллельно смотрим загрузку жесткого диска gstat'ом. В моем случае производительность зависела от моделей гигабитных сетевых карт на клиентах. Самый успешный клиент имел скорость записи на smb ресурс порядка 55 Мбайт/сек, при этом скорость загрузки HDD доходила до 100% (на сервере smb стоит не самый производительный жесткий диск).
**6.** Настройки smb.conf:
[global]
smb ports = 445 139
workgroup = WORKGROUP
netbios name = NAS
security = share
hosts allow = 192.168.1.
log file = /var/log/samba/log.%m
max log size = 5000
local master = yes
os level = 65
domain master = yes
preferred master = yes
wins support = yes
dns proxy = no
dos charset = cp1251
unix charset = cp1251
#unix charset = UTF-8
display charset = cp1251
store dos attributes = yes
nt acl support = yes
inherit acls = yes
map acl inherit = yes
# BDS for improve performance
socket options=SO_RCVBUF=131072 SO_SNDBUF=131072 TCP_NODELAY
#socket options = SO_RCVBUF=65536 SO_SNDBUF=65536
#socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE
#socket options=TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=8192 SO_SNDBUF=8192
min receivefile size=16384
use sendfile=true
##aio read size = 16384
##aio read size = 65536
aio write size = 16384
#aio write size = 65536
aio write behind = true
#============================ Share Definitions ==============================
[install]
path = /var/install
public = yes
writable = yes
printable = no
guest ok = yes
TAG: {{tag> samba FreeBSD}}
~~DISCUSSION:closed~~