====== Ускоряем работу 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~~