Рассмотрим, как можно увеличить производительность работы демона samba по гигабитной сети.
Рассматриваемая среда:
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: