FreeNASボックス(Xeon E3-1220v5、8GB DDR4 RAM)でSMB/CIFS共有を設定しましたが、転送速度が約70 MB/sに制限されているのに対し、WebDAVとiperf
を使用すると、ギガビット接続の理論上の最大値を最大940 MBit/sで達成できます。 NICは、lspci
によると「IntelCorporationイーサネット接続(2)I219-LM(rev 31)」です。
両方のテストコンピューター上の私のディスクは十分に高速であり、ギガビットの速度を簡単に飽和させる可能性があります。ファイル転送中にサーバー側のCPUとメモリの使用量を確認しましたが、どちらも問題ないようです。 CPUでは約12%を超えることはありません。また、ping
テストを実行して、サーバーへのリンクの平均遅延を取得しました。
3221 packets transmitted, 3221 received, 0% packet loss, time 656878ms
rtt min/avg/max/mdev = 0.083/0.131/0.321/0.028 ms
私の質問は今、速度が上がるのを制限しているものをどうやって見つけることができますか?少なくとも90MB /秒程度を期待していました。
testparm -vvv
の出力は次のとおりです。
# Global parameters
[global]
bind interfaces only = No
config backend = file
dos charset = CP437
enable core files = Yes
interfaces =
multicast dns register = Yes
netbios aliases =
netbios name = FREENAS
netbios scope =
realm =
server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbindd, ntp_signd, kcc, dnsupdate, dns
server string = FreeNAS Server
share backend = classic
unix charset = UTF-8
workgroup = WORKGROUP
browse list = Yes
domain master = Auto
enhanced browsing = Yes
lm announce = Yes
lm interval = 60
local master = Yes
os level = 20
preferred master = Auto
ads dns update = Yes
allow dns updates = secure only
dns forwarder =
dns update command = /usr/local/sbin/samba_dnsupdate
machine password timeout = 604800
nsupdate command = /usr/local/bin/samba-nsupdate -g
rndc command = /usr/sbin/rndc
spn update command = /usr/local/sbin/samba_spnupdate
mangle prefix = 1
mangling method = hash2
max stat cache size = 256
stat cache = Yes
client ldap sasl wrapping = sign
ldap admin dn =
ldap connection timeout = 2
ldap delete dn = No
ldap deref = auto
ldap follow referral = Auto
ldap group suffix =
ldap idmap suffix =
ldap machine suffix =
ldap page size = 1000
ldap passwd sync = no
ldap replication sleep = 1000
ldap server require strong auth = Yes
ldap ssl = start tls
ldap ssl ads = No
ldap suffix =
ldap timeout = 15
ldap user suffix =
lock spin time = 200
oplock break wait time = 0
smb2 leases = No
debug class = No
debug hires timestamp = Yes
debug pid = No
debug prefix timestamp = No
debug uid = No
ldap debug level = 0
ldap debug threshold = 10
log file =
logging = file
log level = 2
max log size = 51200
syslog = 1
syslog only = No
timestamp logs = Yes
abort shutdown script =
add group script =
add machine script =
add user script =
add user to group script =
allow nt4 crypto = No
delete group script =
delete user from group script =
delete user script =
domain logons = No
enable privileges = Yes
init logon delay = 100
init logon delayed hosts =
logon drive =
logon home = \\%N\%U
logon path = \\%N\%U\profile
logon script =
reject md5 clients = No
set primary group script =
shutdown script =
add share command =
afs token lifetime = 604800
afs username map =
allow insecure wide links = No
async smb echo handler = No
auto services =
cache directory = /var/db/samba4
change notify = Yes
change share command =
cluster addresses =
clustering = No
config file =
ctdbd socket =
ctdb locktime warn threshold = 0
ctdb timeout = 0
default service =
delete share command =
homedir map = auto.home
kernel change notify = No
lock directory = /var/lock
log writeable files on exit = No
message command =
nbt client socket address = 0.0.0.0
ncalrpc dir = /var/run/samba4/ncalrpc
NIS homedir = No
nmbd bind explicit broadcast = Yes
panic action = /usr/local/libexec/samba/samba-backtrace
perfcount module =
pid directory = /var/run/samba
registry shares = No
remote announce =
remote browse sync =
reset on zero vc = No
smbd profiling level = off
state directory = /var/db/samba4
usershare allow guests = No
usershare max shares = 0
usershare owner only = Yes
usershare path = /var/db/samba4/usershares
usershare prefix allow list =
usershare prefix deny list =
usershare template share =
utmp = No
utmp directory =
wtmp directory =
addport command =
addprinter command =
cups connection timeout = 30
cups encrypt = No
cups server =
deleteprinter command =
disable spoolss = Yes
enumports command =
iprint server =
load printers = No
lpq cache time = 30
os2 driver map =
printcap cache time = 750
printcap name = /dev/null
show add printer wizard = Yes
cldap port = 389
client ipc max protocol = default
client ipc min protocol = default
client max protocol = default
client min protocol = CORE
client use spnego = Yes
dcerpc endpoint servers = epmapper, wkssvc, rpcecho, samr, netlogon, lsarpc, spoolss, drsuapi, dssetup, unixinfo, browser, eventlog6, backupkey, dnsserver
defer sharing violations = Yes
dgram port = 138
disable netbios = No
enable asu support = No
eventlog list =
large readwrite = Yes
max mux = 50
max ttl = 259200
max wins ttl = 518400
max xmit = 65535
min receivefile size = 0
min wins ttl = 21600
name resolve order = lmhosts wins Host bcast
nbt port = 137
nt pipe support = Yes
nt status support = Yes
read raw = Yes
rpc big endian = No
server max protocol = SMB3
server min protocol = LANMAN1
server multi channel support = No
smb2 max credits = 8192
smb2 max read = 8388608
smb2 max trans = 8388608
smb2 max write = 8388608
smb ports = 445 139
svcctl list =
time server = Yes
unicode = Yes
unix extensions = Yes
use spnego = Yes
web port = 901
write raw = Yes
algorithmic rid base = 1000
allow dcerpc auth level connect = No
allow trusted domains = Yes
auth methods =
check password script =
client ipc signing = default
client lanman auth = No
client NTLMv2 auth = Yes
client plaintext auth = No
client schannel = Auto
client signing = default
client use spnego principal = No
dedicated keytab file =
encrypt passwords = Yes
guest account = nobody
kerberos method = default
kpasswd port = 464
krb5 port = 88
lanman auth = No
log nt token command =
map to guest = Bad User
map untrusted to domain = No
ntlm auth = Yes
ntp signd socket directory = /var/run/samba4/ntp_signd
null passwords = No
obey pam restrictions = Yes
old password allowed period = 60
pam password change = No
passdb backend = tdbsam
passdb expand explicit = No
passwd chat = *new*password* %n\n *new*password* %n\n *changed*
passwd chat debug = No
passwd chat timeout = 2
passwd program =
password server = *
preload modules =
private dir = /var/db/samba4/private
raw NTLMv2 auth = No
rename user script =
restrict anonymous = 0
root directory =
samba kcc command = /usr/local/sbin/samba_kcc
security = USER
server role = standalone server
server schannel = Auto
server signing = default
smb passwd file = /var/db/samba4/private/smbpasswd
tls cafile = tls/ca.pem
tls certfile = tls/cert.pem
tls crlfile =
tls dh params file =
tls enabled = Yes
tls keyfile = tls/key.pem
tls priority = NORMAL:-VERS-SSL3.0
tls verify peer = as_strict_as_possible
unix password sync = No
username level = 0
username map =
username map cache time = 0
username map script =
aio max threads = 100
deadtime = 15
getwd cache = Yes
hostname lookups = Yes
keepalive = 300
max disk size = 0
max open files = 233687
max smbd processes = 0
name cache timeout = 660
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536
use mmap = Yes
get quota command =
Host msdfs = Yes
set quota command =
create krb5 conf = Yes
idmap backend = tdb
idmap cache time = 604800
idmap gid =
idmap negative cache time = 120
idmap uid =
neutralize nt4 emulation = No
reject md5 servers = No
require strong key = Yes
template homedir = /home/%D/%U
template Shell = /bin/false
winbind cache time = 300
winbindd privileged socket directory = /var/run/samba4/winbindd_privileged
winbindd socket directory = /var/run/samba4/winbindd
winbind enum groups = No
winbind enum users = No
winbind expand groups = 0
winbind max clients = 200
winbind max domain connections = 1
winbind nested groups = Yes
winbind normalize names = No
winbind nss info = template
winbind offline logon = No
winbind reconnect delay = 30
winbind refresh tickets = No
winbind request timeout = 60
winbind rpc only = No
winbind sealed pipes = Yes
winbind separator = \
winbind trusted domains only = No
winbind use default domain = No
dns proxy = No
wins hook =
wins proxy = No
wins server =
wins support = No
idmap config *: range = 90000001-100000000
idmap config * : backend = tdb
comment =
path =
administrative share = No
browseable = Yes
case sensitive = Auto
default case = lower
delete veto files = No
hide dot files = Yes
hide files =
hide special files = No
hide unreadable = No
hide unwriteable files = No
mangled names = Yes
mangling char = ~
map archive = Yes
map hidden = No
map readonly = yes
map system = No
preserve case = Yes
short preserve case = Yes
store dos attributes = Yes
veto files =
veto oplock files =
blocking locks = Yes
csc policy = manual
fake oplocks = No
kernel oplocks = No
kernel share modes = Yes
level2 oplocks = Yes
locking = Yes
oplock contention limit = 2
oplocks = Yes
posix locking = Yes
strict locking = No
afs share = No
available = Yes
copy =
delete readonly = No
dfree cache time = 0
dfree command =
directory name cache size = 0
dmapi support = No
dont descend =
dos filemode = Yes
dos filetime resolution = No
dos filetimes = Yes
fake directory create times = No
follow symlinks = Yes
fstype = NTFS
include =
magic output =
magic script =
postexec =
preexec =
preexec close = No
root postexec =
root preexec =
root preexec close = No
spotlight = No
volume =
wide links = No
cups options =
default devmode = Yes
force printername = No
lppause command =
lpq command = lpq -P'%p'
lpresume command =
lprm command = lprm -P'%p' %j
max print jobs = 1000
max reported print jobs = 0
printable = No
print command = lpr -r -P'%p' %s
printer name =
printing = bsd
printjob username = %U
print notify backchannel = No
queuepause command =
queueresume command =
use client driver = No
acl allow execute always = Yes
acl check permissions = Yes
acl map full control = Yes
durable handles = Yes
ea support = Yes
map acl inherit = No
nt acl support = Yes
profile acls = No
access based share enum = No
acl group control = No
admin users =
create mask = 0666
directory mask = 0777
force create mode = 0000
force directory mode = 0000
force group =
force unknown acl user = No
force user =
guest ok = No
guest only = No
hosts allow =
hosts deny =
inherit acls = No
inherit owner = No
inherit permissions = No
invalid users =
only user = No
read list =
read only = Yes
smb encrypt = default
username =
valid users =
write list =
aio read size = 0
aio write behind =
aio write size = 0
allocation roundup size = 1048576
block size = 1024
max connections = 0
min print space = 0
strict allocate = No
strict rename = No
strict sync = No
sync always = No
use sendfile = No
write cache size = 0
msdfs proxy =
msdfs root = No
msdfs shuffle referrals = No
ntvfs handler = unixuid, default
vfs objects =
[...]
これは、1つの大きなファイルを転送したときのコアごとのアクティビティを含むtop
のスクリーンショットです。
回答からの提案により、I ジャンボフレームを有効にする (9000)、TCPウィンドウサイズを約4倍に増やしました 数値が大きい それがあったものよりも、しかし私はまだより良い結果がありません。
更新:Fedora 25マシンをセットアップして同じテストを実行しましたが、何らかの理由でフルギガビットの速度が得られています。だから私の推測では、Ubuntu(これまでテストに使用した)が使用しているプロトコル(?)と関係があると思います。
Sambaはシングルスレッドです。これは多くの場合、選択/有効化されているオプションに応じてCPUにバインドされることを意味します。
SMBサーバーは、多くの場合、4 KB〜32/64KBの小さなネットワーク転送サイズをネゴシエートします。
Sambaを使用している場合は、max xmit
の値を増やしてみてください。デフォルトでは16644バイトに設定されていますが、もっと大きく設定してみてください(たとえば、65536)。
EDIT:わかりました、他のパラメータを試してみましょう。動作しない場合は、コメント/削除できます。
client max protocol = SMB2
server max protocol = SMB2
まだ行っていない場合は、ジャンボフレームを(ネットワークインターフェイスレベルで)有効にし、大きなTCPウィンドウサイズを設定します。