Потери\ошибки на интерфейсах есть?
Wed, 21 Mar 2012 06:20:05 +0400 от Владимир Друзенко<[email protected]>: Приветствую всех. (Заранее прошу прощение за простыню.) Системы: * клиент: i386 Core 2 Duo [email protected] 4Gb DDR2 800MHz; * сервер: amd64 Xeon [email protected] 2Gb DDR2 FB-DIMM 667MHz; * на обеих машинках RELENG_9 начала февраля 2012; * обе на гигабите: модели мам, сетевух и свитчей запощу, если есть необходимость в этом; * NFS на сервере на ZFS (по хэндбуку), ZFS RAIDZ на 4x2Tb WD RE4; * все тесты проводил в 4-5 msk - загрузка сети и серверов практически нулевая. Собственно в чём причина написания сего сообщения: непонятки со скоростью копирования по NFS. Всё началось с банального копирования файлов по NFS - ну очень медленно. При этом по самбе такое не наблюдается. Начал тестить: # grep documents /etc/fstab server.ip:/datastorage/documents /mnt/documents nfs rw,intr,soft,bg 0 0 # dd if=/dev/zero of=/usr/test.zero count=256 bs=1024k 256+0 records in 256+0 records out 268435456 bytes transferred in 2.950790 secs (90970710 bytes/sec) # time cp /usr/test.zero /mnt/documents/ real 2m1.657s user 0m0.000s sys 0m0.599s # echo $((268435456/(2*60+2))) 2200290 Это всего-то 2.2Mbytes/s! Мало даже для 100Mbit/s сети. Вот самба (тот же каталог на сервере, что и по NFS, samba 3.6.3): # time cp /usr/test.zero /mnt/smb0/ real 0m6.197s user 0m0.000s sys 0m0.286s # echo $((268435456/6)) 44739242 44.7Mbytes/s - не идеал, но уже неплохо. Решил потестить dd: (строки вида "256+0 records in" и "256+0 records out" убрал, чтобы не мешали) # dd if=/dev/zero of=/mnt/documents/test.zero count=512k bs=512 268435456 bytes transferred in 5.776159 secs (46473003 bytes/sec) # dd if=/dev/zero of=/mnt/documents/test.zero count=256k bs=1024 268435456 bytes transferred in 5.275812 secs (50880407 bytes/sec) # dd if=/dev/zero of=/mnt/documents/test.zero count=128k bs=2048 268435456 bytes transferred in 5.009737 secs (53582744 bytes/sec) # dd if=/dev/zero of=/mnt/documents/test.zero count=64k bs=4096 268435456 bytes transferred in 4.465294 secs (60115963 bytes/sec) # dd if=/dev/zero of=/mnt/documents/test.zero count=32k bs=8192 268435456 bytes transferred in 4.616121 secs (58151737 bytes/sec) # dd if=/dev/zero of=/mnt/documents/test.zero count=16k bs=16384 268435456 bytes transferred in 4.792773 secs (56008381 bytes/sec) # dd if=/dev/zero of=/mnt/documents/test.zero count=8k bs=32k 268435456 bytes transferred in 4.698532 secs (57131773 bytes/sec) # dd if=/dev/zero of=/mnt/documents/test.zero count=4k bs=64k 268435456 bytes transferred in 4.558262 secs (58889872 bytes/sec) # dd if=/dev/zero of=/mnt/documents/test.zero count=2k bs=128k 268435456 bytes transferred in 4.987123 secs (53825714 bytes/sec) # dd if=/dev/zero of=/mnt/documents/test.zero count=1k bs=256k 268435456 bytes transferred in 4.925698 secs (54496937 bytes/sec) # dd if=/dev/zero of=/mnt/documents/test.zero count=512 bs=512k 268435456 bytes transferred in 4.954061 secs (54184931 bytes/sec) # dd if=/dev/zero of=/mnt/documents/test.zero count=256 bs=1024k 268435456 bytes transferred in 119.418152 secs (2247861 bytes/sec) ?????????????????????????????????????????????????????????????????? Начал экспериментировать: # dd if=/dev/zero of=/mnt/documents/test.zero count=256 bs=800k 209715200 bytes transferred in 3.649696 secs (57461007 bytes/sec) # dd if=/dev/zero of=/mnt/documents/test.zero count=256 bs=810k 212336640 bytes transferred in 5.292056 secs (40123658 bytes/sec) # dd if=/dev/zero of=/mnt/documents/test.zero count=256 bs=820k 214958080 bytes transferred in 4.571811 secs (47018145 bytes/sec) # dd if=/dev/zero of=/mnt/documents/test.zero count=256 bs=830k 217579520 bytes transferred in 5.237694 secs (41541090 bytes/sec) # dd if=/dev/zero of=/mnt/documents/test.zero count=256 bs=840k 220200960 bytes transferred in 7.006737 secs (31427033 bytes/sec) # dd if=/dev/zero of=/mnt/documents/test.zero count=256 bs=850k 222822400 bytes transferred in 5.609241 secs (39724162 bytes/sec) # dd if=/dev/zero of=/mnt/documents/test.zero count=256 bs=860k 225443840 bytes transferred in 4.649138 secs (48491536 bytes/sec) # dd if=/dev/zero of=/mnt/documents/test.zero count=256 bs=870k 228065280 bytes transferred in 102.918602 secs (2215977 bytes/sec) # dd if=/dev/zero of=/mnt/documents/test.zero count=256 bs=880k 230686720 bytes transferred in 103.500444 secs (2228848 bytes/sec) # dd if=/dev/zero of=/mnt/documents/test.zero count=256 bs=890k 233308160 bytes transferred in 109.924715 secs (2122436 bytes/sec) # dd if=/dev/zero of=/mnt/documents/test.zero count=256 bs=900k 235929600 bytes transferred in 113.634523 secs (2076214 bytes/sec) Для сравнения проверил на двух системах с Linux (тотже /datastorage/documents): - машинка на том же свитче, что и клиент: # dd if=/dev/zero of=/mnt/test.zero count=256 bs=1M скопировано 268435456 байт (268 MB), 4,12729 c, 65,0 MB/c - машинка на том же свитче, что и сервер: # dd if=/dev/zero of=/mnt/test.zero count=256 bs=1M 268435456 bytes (268 MB) copied, 4,59726 s, 58,4 MB/s А вот ещё интересный результат: # dd if=/dev/zero of=/mnt/test.zero count=64 bs=4M 268435456 bytes transferred in 6.616688 secs (40569459 bytes/sec) Это amd64 RELENG_8 августа 2011, подключена к тому же свитчу, что и сервер. 40+Mbytes/s выдаёт на всех размерах блоков начиная с 512bytes и до 4Mbytes. Даже виртуалка (i386 RELENG_9 той же даты, что и клиент, и сервер) выдаёт под 40Mbytes/s блоками 1Mb: # dd if=/dev/zero of=/mnt/test.zero count=256 bs=1M 268435456 bytes transferred in 7.061516 secs (38013858 bytes/sec) Гуглить пробовалhttp://lists.freebsd.org/pipermail/freebsd-performance/2007-June/002710.html nfsv3,readahead=4,wsize=32768,rsize=32768 помогло слабо: # dd if=/dev/zero of=/mnt/documents/test.zero count=256 bs=1M 268435456 bytes transferred in 74.214095 secs (3617041 bytes/sec) Или вот от туда же: # dd if=/dev/zero bs=1M count=256 | dd of=/mnt/documents/test.zero bs=1M 256+0 records in 256+0 records out 268435456 bytes transferred in 7.489181 secs (35843099 bytes/sec) 0+4096 records in 0+4096 records out 268435456 bytes transferred in 7.485994 secs (35858359 bytes/sec) С какого перепугу он размер блока меняет? Ну да ладно - это не относится к теме. Итог: хочу копировать по NFS с нормальной скоростью, без использования dd. Отсюда стандартные вопросы: "кто виноват?" и "что делать?". Может есть ещё какие хитрые клиентские опции/настройки? Спасибо, что дочитали! :-]
