Samba jõudluse parandamine
Autor
Martin Raudsik Rainit Vildo
Versioon
0.6 (SOCKET OPTIONS) - viimati muudetud 12:04, 20 December 2009 (EET)
Eeldused
Ubuntu server 9.10
Samba 3.4
Sissejuhatus
Selleks, et Samba jõudlust parandada, tuleb muuta SOCKET OPTIONS, log level-it ja locking-ut.
Antud artikkel käsitleb socket options konfigureerimist.
Socket options
Põhilised socket options-id on järgmised:
TCP_NODELAY - Server saadab niipalju pakette kui vaja, et hoida viiteaeg madal. Seda kasutatake telneti ühenduste puhul selleks, et saavutada lühikest reaktsiooniaega (kui kiiresti saab päringule vastuse) ja head kiirust, isegi kui saadetakse väikseid päringuid.
IPTOS_LOWDELAY - muudab viiteaega madalamaks, kuid mõjutab serveri asemel ruutereid ja teisi süsteeme. IPTOS_LOWDELAY-d tuleks kasutada siis, kui TCP_NODELAY-gi.
SO_KEEPALIVE - määrab, kui pika aja jooksul kontrollitakse, kas klient on veel serveriga ühenduses ehk kas ühendus pole aegunud. Vastasel juhul tagastatakse mitte kasutuses olev mälu ja protsessitabeli kirjed operatsioonisüsteemile.
SO_SNDBUF ja SO_RCVBUF - send ja receive puhvreid saab seadistada suuremaks, kui on operatsioonisüsteemil. Sellega kasvab kiirus märgatavalt. SO_SNDBUF ja SO_RCVBUF suuruseid saab määrata vahemikus kuni 32KB (vaikeväärtuseks on 8192). Kõige targem oleks määrata need seaded üheks nendest: 1024, 2048, 4096, 6144, 8192, 12288, 16384, 24576, 32768, 40960, 49152, 65535, 98304, 131072, 196608, ja 262144; sest see annab hea väärtuste jaotuse.
Other options
Log level - Defineerib sambale logimise leveli. Mida väiksem väärtus seda vähem logitakse. Näiteks log level = 1 -ga logitakse ainult siis, kui keegi ühendub serveri külge. level 2 paneb samba logima ka failivahetusi. Suurendades veel levelit hakkab üha rohkem logima. Tavaliselt piisab leveli suurusest 1-3, üle 3 on juba mõeldud arendajatele endale. Log levelit saab muuta ka ilma sambat restartimata.
# Tõstab 1 leveli võrra kill -SIGUSR1 1234
# Langetab 1 leveli võrra kill -SIGUSR2 1234
Locking - Failide lukustamine on vajalik selleks, et vaid üks protsess saaks selle kindla failiga korraga tööd teha. Uuemad OS-d oskavad terve faili asemel ka lukku panna vaid osa- mingid teatud baidid failidest. Kui fail on lukus, ootab järgmine protsess luku vabastamist. Lockingul on olemas lisaks ka opportunistic locking, selle lukuga saab klient öelda Samba serverile, et antud klient mitte ainult ei kirjuta serverisse faili vaid cacheb seda ja oma masinas(Selleks, et kiirendada faili avamist vms). Kui teine klient tahab samal ajal sama failiga midagi teha, saab Samba server saata ka oplock breaki, see tähendab, et et kiiresti sünkronisserimine cache esimese kliendiga ning seejärel sync katkestatakse ning teine saab hakata selle failiga tegelema. opportunistic locking pole just kõige parem mõte kasutada, kuna erinevad operatsioonisüsteemid interpreteerivad seda erinevalt. Näiteks ei pruugi iga UNIX süsteem aru saada Windows süsteemi oplockist. Parem on jääda originaalse Samba lockingu juurde.
Kasutamisest:
locking = yes # lukustab faili baitide kaupa, kui vaja oplocks = no
Seadistamine
Socket options peab asuma Samba konfiguratsioonifailis smb.conf [Global] osas.
nano /etc/samba/smb.conf
Socket options rida näeb vaikimisi välja selline:
[Global] socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=8192 SO_SNDBUF=8192
kuid jõudluse parandamiseks, peaks seda konfigureerima vastavalt võrguseadmete ja operatsioonisüsteemi võimekusele. Enne konfigureerimist oleks vajalik mõõta, kui suureks on mõistlik määrata SO_RCVBUF ja SO_SNDBUF. Mõõtmiseks saab kasutada programme bonnie++ ja iozone.