Samba jõudluse parandamine: Difference between revisions

From ICO wiki
Jump to navigationJump to search
 
(45 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 konfigureerida ''SOCKET OPTIONS''
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=
TCP_NODELAY - Seda kasutatake telneti ühenduste puhul, et saavutada lühikest kosteaega (kui kiiresti saab päringule vastuse).  
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 />
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 />
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


Have the server send as many packets as necessary to keep delay low. This is used on telnet connections to give good response time, and is used - somewhat counter-intuitively - to get good speed even when doing small requests or when acknowledgments are delayed (as seems to occur with Microsoft TCP/IP). This is worth a 30-50 percent speedup by itself.
# Langetab 1 leveli võrra
kill -SIGUSR2 1234


IPTOS_LOWDELAY -  
<br />
This is another option that trades off throughput for lower delay, but which affects routers and other systems, not the server. All the IPTOS options are new; they're not supported by all operating systems and routers. If they are supported, set IPTOS_LOWDELAY whenever you set TCP_NODELAY.
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.


SO_SNDBUF and SO_RCVBUF - ''send'' ja ''receive'' buffreid saab seadistada suuremaks, kui on operatsioonisüsteemil. Sellega kasvab kiirus märgatavalt.
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.


SO_KEEPALIVE - määrab, kui pika aja jooksul kontrollitakse, kas klient on veel serveriga ühenduses.
=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''.


This initiates a periodic (four-hour) check to see if the client has disappeared. Expired connections are addressed somewhat better with Samba's keepalive and dead time options. All three eventually arrange to close dead connections, returning unused memory and process-table entries to the operating system.
[[Category:IT infrastruktuuri teenused]]

Latest revision as of 13: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.