Samba jõudluse parandamine: Difference between revisions
(43 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
=Autor= | =Autor= | ||
Martin Raudsik | Martin Raudsik | ||
Rainit Vildo | |||
=Versioon= | |||
0.6 (SOCKET OPTIONS) - viimati muudetud 12:04, 20 December 2009 (EET) | |||
=Eeldused= | |||
Ubuntu server 9.10 <br /> | |||
Samba 3.4 | |||
=Sissejuhatus= | =Sissejuhatus= | ||
Selleks, et Samba jõudlust parandada, tuleb | Selleks, et Samba jõudlust parandada, tuleb muuta ''SOCKET OPTIONS'', ''log level''-it ja ''locking''-ut. <br /> | ||
Antud artikkel käsitleb ''socket options'' konfigureerimist. <br /> | |||
=Socket options= | =Socket options= | ||
Põhilised ''socket options''-id on järgmised:<br /> | |||
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. <br /> | 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. <br /> | ||
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. | 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. | ||
<br /> | <br /> | ||
SO_SNDBUF ja SO_RCVBUF - ''send'' ja ''receive'' puhvreid saab seadistada suuremaks, kui on operatsioonisüsteemil. Sellega kasvab kiirus märgatavalt. | 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. | ||
<br /> | |||
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 | |||
<br /> | <br /> | ||
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 ''cache''b 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 break''i, 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 ''oplock''ist. 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 ''cache''b 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''. | |||
[[Category:IT infrastruktuuri teenused]] |
Latest revision as of 12:59, 20 December 2009
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.