!==
!== Speed.txt for Samba release 2.0.5a 22 Jul 1999
!==

: ͺ <nakano@apm.seikei.ac.jp>
: July 1999
:	Samba ǽˤĤ (Samba performance issues)
============================================================================

ΥեǤϡSamba Ф®٤夵ˡˤĤơ
פҤ٤ޤ

о
--------

Samba Фϥ饤ȤȤ̿ TCP Ѥޤäƥ
ɹưƤ뤫ΤꤿˤϡƱ TCP ץȥȤä
ץ٤ʤФʤޤоݤˤ TCP ١
եžץȤƤϡ ftp ¾ SMB/TCP ФäȤ
꤬ñǤ礦

NT  WfWg ФʤɤӤϡ饤ȤФΤ
ǡ TCP ʳΥץȥ̵ˤʤФʤޤ󡣤ʤ
 TCP Ȥۤʤץȥ (NetBEUI ʤ) ̿ѤƤ
ޤޤ顢ӤƤ̣ޤ

̾ Samba ϡ ftp Ʊž®٤ˤʤǤ礦 NFS Ϥ
®Ȼפޤϥƥ˶¸ޤ

Samba  Novell, NFS, WinNT ʤɤȤӤ˴ؤƤϡͤοͤݡ
ȤФƤޤ Samba ®ξ⤢СäȤ٤⤢褦
ǤĿŪˤϡΤ褦ӤˤƽפȤʤǤϡեȥ
ΰ㤤ǤϤʤޤޤʥƥǤ줾ѤƤϡɥ
ɥ饤Фΰ㤤ȻפäƤޤƱ褦ʥϡɥ·С
Samba ¾Υƥȡ®٤ˤƽʬǤϤǤ

OPLOCKS
-------

oplock (opportunistic lock: صŪå) Ȥϡ SMB 饤Ȥ
ե˥å夹Ĥ򡢥Фˡ
ȤǤФ oplock Ϳȡ饤Ȥϼʬ
ե˥ƤȤߤʤơѶŪ˥եΥǡ
å夷褦Ȥޤ oplock ΥפˤäƤϡ饤Ȥ
ե open/close ⥭å夷ޤˤäơǽ
˸夷ޤ

Samba 1.9.18 Υ꡼ϡ opportunistic lock ݡ
ƤޤϥǥեȤǤͭˤʤäƤޤͭñ̤
̵ڤؤ뤳ȤǤޤѤѥ᡼ϰʲǤ

oplocks = False

桹 oplock ͭˤƤۤᤷޤ NetBench 
ѤߤΥ٥ޡǤϡͭˤƤۤ褽 30% ۤɤ
®٤夷ƤޤʿѤͤǤäơ饤ȤΥ쥯
ưˤäƤϡδ®٤ܤ夹뤳Ȥޤ

Samba 1.9.18 ˤϡ 'fake oplocks' ȸץ󤬤ޤ
ȤθߴݤĤ˻ĤƤޤȤʤäƤϻ
٤ǤϤޤ󡣤Υ롼󤬹ԤưդơʲˤޤȤ
ޤ

LEVEL2 OPLOCKS
--------------

Samba 2.0.5 Ͽǽ - level2 (ɤ߹) oplock ݡȤ
ޤ(ǤϡΥץϥդˤʤäƤޤܺ٤դƤ
smb.conf Υޥ˥奢ڡ򻲾ȤƤ)level2 oplock 
(ͭ)ͭˤˤϡʲΤ褦˥ѥ᡼ꤷƤ

    level2 oplocks = true

ǡ̾Ͻ񤭹ߤʤե롢㤨Хץꥱͭʤ
(Microsoft Office ͭΤ褦ˡ̤μ¹ԥե뤬ǼƤ붦ͭ)
ؤƱ®ϤǤϡ饤Ȥ
ե򥭥å夫ɤߤ뤳Ȥǽˤʤ뤫Ǥ

 'fake oplocks' ץ (Ȥʤ)
-----------------------------------------------

oplock ư򤹤褦 Samba 򸫤뤳ȤǤޤ
饤Ȥ褿 oplock ׵Ϳ褦ˤʤäƤޤ
smb.conf Υץ "fake oplocks" ˤäǤޤ "fake
oplocks = yes" Ȥȡ饤Ȥ open ưԤӤˡѶŪ
˥å򤹤褦ˤʤޤ

'fake oplocks' ϡ꡼ɥ꡼ζͭ䡢٤˰ĤΥ饤Ȥ
ʤȤݾڤƤ붦ͭѤȡƼưˤ
ǽ夹Ǥ礦ʣΥ饤Ȥե
ФƱɤ߽񤭤Ԥ褦ʶͭˤѤȡ餯ǡ
˲ƤޤǤ礦

åȥץ
------------------

Samba Τ褦 TCP ١ΥФǤϡФǽ˶ƶ
ڤܤ褦ʥåȥץ¿¸ߤޤ

Samba Ѥ륽åȥץϡޥɥ饤 -O ץ
smb.conf եΤɤǤꤹ뤳ȤǤޤ

smb.conf Υޥ˥奢ڡˤ "socket options" Ǥϡ
λˡȡͤȤҤƤޤ

åȥץŬڤͤˤȡǽ˸夹뤳Ȥ
ޤְäͤˤȡƱ褦ǽ㲼뤳
⤢ꤨޤϻȤäƤͥåȥ˶¸ޤ

륪ץǤ⡢ñȤ礭ʱƶڤܤΤȤ 
TCP_NODELAY 󤲤ޤ "socket options = TCP_NODELAY" ꤹ
Ȥˤäơ Samba ɥ饤֤ɤ߽ФǽܲäȤ
¿ο͡ʤƤޤФǤ狼䤹ϡ
Microsoft  TCP/IP åǤ tcp  ACK Τ٤Ȥ
ΤǤ

ɤ߼ꥵ (read size)
--------------------------

"read size" ץϡǥ read/write ȥͥåȥ
read/write ȤΥСåפ˱ƶ뤳Ȥˤʤޤ SMB Υޥ
(ߤΤ SMBwrite, SMBwriteX, SMBreadbraw) ˤäžǡ
ʬ̤ͤ礭ʤȡФϤ٤ƤΥѥåȤͥåȥ
˥ǥؤν񤭹ߤ򳫻Ϥޤ (դ SMBreadbraw 
ϡ٤ƤΥǡǥɤ߼˥ͥåȥؤνϤ
Ϥޤ)

ΥСåưϡǥȥͥåȥΥ®٤Ʊ٤
ˤäȤ⤦ޤǽޤդˤɤ餫¾٤˹®
ϡޤƶޤ

ǥեȤͤ 16384 Ǥͤ뤿¿μ¸Ԥä
櫓Ǥޤ󡣤ޤͤˤĤƤ⡢Ŭͤϥƥ
ä˰ۤʤȹͤޤ 65536 ʾͤϰ̣ʤ
ɬפʥƤη̤ȤʤäƤޤǤ礦

žκ (max xmit)
-----------------------

ưˡ饤ȤȥФ "maximum transmit" 
ͥԤޤͤϡۤܤ٤Ƥ SMB ޥɤ
žξͤȤʤޤ smb.conf  "max xmit =" ץ
ꤹС Samba ͥѤ륵ͤǤޤ
 Samba  SMB ׵κͤȤƼͤǤäơ
֥饤Ȥ͡פǤϤʤȤդƲ
饤Ȥͤϡ饤Ȥ Samba ޤ
Samba ϤͤѤ뤳Ȥˤʤޤ

ͤϡǥեȤǤ 65536 (ǤͤǤ) ȤʤäƤޤ
ž򾮤ȡ饤ȤˤäƤǽ夹
Ȥ⤢ޤ 2048 ⾮ȡʤޤ̤Ȥʤ
Ǥ礦

ۤȤɤξϥǥեȤŬΥץȻפޤ

å (locking)
--------------------

ǥեȤǤϡ Samba  strict locking (̩ʥåư) 򤽤줾
 read/write ƤӽФФƹԤȤϤޤ (ΥСǤ
ԤäƤޤ) strict locking  "strict locking = yes" ˤä
ͭˤʤޤƥˤäƤǽ㲼뤳Ȥޤ

ǽ㲼ϡ餯 NFS ޥȤ줿ե륷ƥǤ礭
Ǥ礦ʥǥǤ⡢礭ǽ㲼Ϥꤨޤ

ͭ⡼ (share modes)
------------------------

եΥץ˻֤롢Ȥ𤬤Ĥ褦Ǥ
θ¿ξ硢 "share modes" Υɤ dos share mode ǽ
ե׵᤹뤫ǤΥɤ "share modes = no" Ȥ뤳Ȥ
ä̵ˤǤޤˤäƥեΥץ󡦥Ϥʤ
®Ǥ礦ǡ桼 read-write ץ
Ƥե򼡤Υ桼ץ󤷤褦ȤȤˡƥ
Υץ꡼ɥ꡼˶뤳ȤǤʤʤ뤫⤷ޤ
(ˤäƤϡǤ)ȼΥեåѤƤ륢ץꥱ
Ǥϡˤʤ뤳ȤϤʤǤ礦ˤʤ륢ץ
⤢뤫⤷ޤ󡣤ۤȤɤ Windows ץꥱϡ
"share modes" ưƤ뤳ȤꤷƤΤǡξ
Samba  share mode ݡȤǥեȤ "on" ˤƤʤ
ʤʤǤ礦

Samba  share mode ɤ 1.9.17 ꡼ǽ񤭴ޤ 
 Ziff-Davis NetBench PC Benchmarking tool ˤƥȷ̤
ȿǤΤǤ Samba 1.9.17  share modes μϡ Windows NT
ȤۤƱͤΤΤˤʤäƤϤǤ

ɵ: ǶΥСǤϡ share modes μ mmap() ˤä
ͭѤ륪ץɲäƤޤư򤵤˹®
ޤͭˤˡˤĤƤ Makefile 򸫤Ʋ

Υ٥ (log level)
------------------------

log level ("debug level" Ʊ)  2 ʾˤȡǽ礭㲼
Ǥ礦ϥФڥ졼ΤӤ˥եե
夹뤫Ǥꡢ˹⤯ĤȤǤ

󥯤 (wide links)
-------------------------

"wide links" ץϡߤǤϥǥեȤͭˤʤäƤޤ
(ƥ򶯲뤿) ̵ˤ뤳ȤǤޤξ
ե̾βǽ㲼ޤǽ㲼 "getwd cache = yes"
Ȥ뤳Ȥˤäޤ뤳ȤǤޤ (ϥǥեȤǤ)

raw ⡼ɤɤ߹ (read raw)
-------------------------------

"read raw" ưϡեɤ߹ưȿ®Ŭ
߷פ줿ΤǤ (٤Ƥ SMB ФɬܤεǽǤ
ޤ) Samba ǤϥǥեȤͭˤʤäƤޤץ
̵ˤ뤳ȤǤޤ

饤ȤˤäƤ "read raw" 򤦤ޤȤǤޤǤ
read ưǽ㲼ƤޤȤ⤢ꤨޤ

Ǥ "read raw = no" ȤƤߤơͥåȥɤʤ뤫Ƥ
ɤǤ礦ǽ㲼뤫⤷ޤ󤷡夹뤫⡢Ѳ
ʤ⤷ޤ󡣤ϼ¸ƤߤʤȤ狼ޤ

raw ⡼ɤν񤭹 (write raw)
--------------------------------

"read raw" ưϡեν񤭹ưȿ®Ŭ
߷פ줿ΤǤ (٤Ƥ SMB ФɬܤεǽǤ
ޤ) Samba ǤϥǥեȤͭˤʤäƤޤץ
̵ˤ뤳ȤǤޤ

ޥˤäƤ "write raw" ̾ν񤭹ư٤ʤ뤳Ȥ
ꤨޤξϥץѹɤǤ礦

ɤ (read prediction)
------------------------

Samba  SMB ޥɤΤĤˤơɤưԤȤǤޤ
ϡ Samba Ф SMB ޥɤԤäƤ֤ˡǸɤ
ե;ʬʥǡɤǤ褦ˤʤ뤳Ȥ̣ޤ
äơɤ߹׵᤬夷Ȥȿ夷ޤ

ϥǥեȤǤ̵ˤʤäƤޤ "read prediction = yes" 
뤳ȤˤäͭˤǤޤ

ɤߤϡ꡼ɥ꡼ǥץ󤵤줿եФƤѤ
ޤ

ɤߤϡե뤫ɤ߹ߤ򡢾¿Ԥ褦ʴȴ
饤 (NT ǤΡ֥饤(WRITE.EXE)פʤ) ФäͭǤ礦

Samba  "read size" ץǻꤵ줿̰ʾɤߤϹԤޤ
ޤ 1k ֥åζޤǤɤߤԤޤ

ޥåԥ
----------------

Samba ϥޥåԥ󥰤ˤեɤ߽Ф򥵥ݡȤƤޤ
ޥˤäƤϡˤäǽ˸夷ޤѤʤ
ꡢդǽ뤳Ȥ⤢뤫⤷ޤ

ͭˤˤϡ -DUSE_MMAP ץ Makefile  FLAGS Ԥ˻ꤷơ
Samba ƥѥ뤹ɬפޤ

ޥåԥ󥰤ϥ꡼ɥ꡼ǥץ󤵤줿եФƤΤͭ
Ǥޤ "read raw" ưκݤˤѤޤ󡣤äơ
ޥåԥ󥰤ͭǤ뤫ɤĴ٤ˤϡ "read raw = no" Ȥ
"read raw" ̵ˤɬפޤ

٤饤
----------------

ͤΥݡȤˤСץȥ LANMAN2  COREPLUS ѹ
ȤǡŪ®٤θ夬줿Ǥ (10k/s -> 150k/s)

餯 PC (386sx16 ١) ϡȤΤǤʾΥǡ
׵ᤷƤΤǤ礦ץȥѤΤǤϤʤ "read raw = no"
 "max xmit = 2048" Ȥ뤳ȤˤäƤ⤪餯Ʊ褦®٤θ夬
ԤǤΤǤϤʤȻפޤ "read size" 򸺤餹Ȥ̤
Ǥ礦

٤
--------------

٤ΤϡۤȤɤ٤Ƥξ硢ѥɤΥåפ
֤ΤǤ "password level" 򡢼ºݤɬפʺ¤ͤˤ뤳Ȥ
äơ®٤礭夷ޤ Makefile  "UFC crypt" ץ
ͭˤ뤳ȤǤޤ

饤ȤΥ塼˥
--------------------------

®٤ϥ饤Ȥˤ뤳Ȥ¿ǤΤ褦ʥ饤
(㤨 Windows for Workgroups) ǤϡƤ TCP ǽ夵
褦ʥ塼˥󥰤ǽǤ

饤ȤΥɥȤդɤǤäˡ WfWg  
TCPWINDOWSIZE  TCPSEGMENTSIZE ϡǽ˱ƶ餷Ǥ

ͤˤС WfWg  SYSTEM.INI ե [MSTCP] 
 DefaultRcvWindow  3072 ꤹ뤳ȤˤäƤ⡢礭ʸ夬
뤽ǤͳΤޤ󤬡

ĿŪʷиǤϡ DefaultRcvWindow 礭 (16384 ʾ) ˤ뤳
ˤäơäǽ夷Ȥޤ¾ο͡Ǥϡ 
3072 ʾǤϤä®٤㲼ΤǤͤˤС 3072 
 8192 ˤ뤳Ȥˤä®٤ 1/30 ˤ㲼뤳Ȥ⤢Τ
ǤͳϤ狼ޤ

餯ϥϡɥ䡢³ unix ޥΥפ˶¸
ΤǤ礦

η
--------

Τ褦ʸˤƤϡºݤοͤΤꤿͤ褦ǤΤǡ
˵Ƥޤ WfWg 3.11  3.11b  tcp/ip åѤ
486sx33 饤ȤȤäƤޤ ISA ХΥͥåȥ
SMC Elite-16 ȤäƤޤ WfWg Фƻ䤬Ԥä塼˥󥰤ϡ
system.ini [MSTCP]  DefaultRcvWindow  16384 Ǥ
Ф Linux  486dx3-66 Ǥ ( dx2 ?) 20Mb  RAM 
SMC Elite-16 ܤƤޤΥФϡۤƤ 
Samba  examples/tridge/ ֥ǥ쥯ȥ򸫤Ʋ

8Mb Υե copy ɤ߼ȡ 490k/s Ȥͤˤʤޤ
Ʊե Samba Ф˽񤭤Ȥϡ 441k/s Ǥ

ñʥ롼ץåȤͰʳˤ٥ޡϤͤ
Ǥ礦Ȥꤢܰ¤ˤϤʤǤ礦

Win95  WinNT ǤƤߤȤ WinNT  Samba Υ饤Ȥ
ƤϺ®Ǥʾ®٤򼨤饤Ȥ (ξ
) ޤơ¾ linux ޥ󤫤 smbclient ǤĤ
ʸˤ⤽η̤ܤȻפäƤޤ...

==Լռ==
ʸȤˤƤϡ samba-jp ML Ǥפ󡢺ƣ
ĸꡢ¿εŤʤո䤴Ŧ򤤤ޤ
