Samba jõudluse parandamine

From ICO wiki

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
strict locking = no # Kontrollib tervet faili, kas sel on olemas n-ö byte-range lock.
blocking locks = no # Kui pole võimalik näha lukustatud baite, siis pannakse klient mingiks ajaks ootama, ilma, et ta kogu aeg uuesti faili kontrolliks. Server ise cacheb staatust ning saadab kliendile, kui lock maha võetakse.
veto oplock files = /*.bat/*.htm/ # Teatud failid, mida kunagi ei oplockita.
lock directory = /usr/local/samba/locks # kaust, kuhu lukud pannakse.

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.