dadv: (chuck)
[personal profile] dadv

Простейшая задача: передать с NFS-сервера (FreeBSD 9.2-STABLE/amd64) один крупный файл в несколько гигабайт на NFS-клиент (FreeBSD 8.4-STABLE/amd64) как можно быстрее в условиях локальной сети. У сервера физический линк 1G, у клиента 100M. Передача по ftp полностью насыщает линк 100M, скорость больше 11MB/s.

А вот с NFS всё волшебно. Начал разбираться оттого, что при монтированиии "по умолчанию" скорость была очень низкой, меньше 50Mbit/s. Провел несколько серий тестов, переключая на сервере две реализации NFSv3 (oldnfs и newnfs, по умолчанию newnfs) и включая/выключая TSO4 на сетевой карте сервера (em0/82574L/MSI-X), а на клиенте режимы монтирования TCP/UDP и размер блока на приём (rsize).

  • Первым делом заподозрил проблему в newnfs и переключил сервер на oldnfs v3. Обнаружил, что с увеличением rsize скорость заметно растет и в итоге получается вполне удовлетворительная, но есть некий предел увеличения rsize:

    • UDP: rsize - скорость
      12288 - 10,204 MB/s
      13312 - 10,234 MB/s
      14336 - 10,288 MB/s
      14847 - 10,350 MB/s
      14848 - 6,9 MB/s
      15360 - 7,626 MB/s

      Вплоть до rsize=14847=14.5*1024-1 скорость стабильная, а увеличив rsize на единицу, получаем как резкое уменьшение пиковой скорости, так и нестабильную скорость, постоянные срывы в несколько раз, сопровождаюшиеся опять разгонами и новыми срывами.

    • TCP с отключенным TSO4: rsize - скорость
      2048  - 6,194 MB/s
      4096  -  9,535 MB/s
      8192  - 10,593 MB/s
      10240 -  9,959 MB/s
      11264 - 10,586 MB/s
      11519 - 10,607 MB/s
      11520 -  2,263 MB/s
      12288 -  2,378 MB/s
      16364 -  5,728 MB/s

      В этом случае похожая картина, тоже есть порог rsize=11519=11.25*1024-1.

    • TCP с включенным TSO4: rsize - скорость
      2048  - 6,172 MB/s
      4096  - 9,630 MB/s
      8192  - 10,549 MB/s
      11775 - 10,630 MB/s
      11776 - 2,234 MB/s
      12288 - 2,188 MB/s
      14336 - 1,705 MB/s

      Тут тоже есть свой волшебный порог rsize=11775=11.5*1024-1

  • Затем решил вернуться к newnfs на сервере и повторить все тесты.

    • UDP: rsize - скорость
      2048   - 4,545 MB/s
      4096   - 7,263 MB/s
      8192   - 9,558 MB/s
      12288  - 10,109 MB/s
      14336  - 10,305 MB/s
      14847  - 10,288 MB/s
      14848  - 3,600 MB/s
      15360  - 4,660 MB/s

      Предел тот же самый, что в oldnfs: 14847.

    • TCP с включенным TSO4: rsize - скорость
      11775  - 10,461 MB/s
      11776  - 2,763 MB/s
      

      Опять предел тот же самый, что в oldnfs: 11775.

    • TCP с отключенным TSO4: rsize - скорость
      11775  - 10,528 MB/s
      11776  - 2,232 MB/s
      
      А вот тут предел получился не тот, что в oldnfs для TCP с отключенным TSO4, а тот, что в предыдущем тесте.

Такие дела. Скорость на клиенте снималась по показаниям systat -ifstat. На сервере во время тестирования было Free 5G физической памяти и mbufs в достатке:

# sysctl kern.ipc | grep nmb
kern.ipc.nmbufs: 4870650
kern.ipc.nmbjumbo16: 253676
kern.ipc.nmbjumbo9: 338238
kern.ipc.nmbjumbop: 380519
kern.ipc.nmbclusters: 400000
# netstat -m
40958/1927/42885 mbufs in use (current/cache/total)
40956/1770/42726/400000 mbuf clusters in use (current/cache/total/max)
40956/900 mbuf+clusters out of packet secondary zone in use (current/cache)
0/104/104/380519 4k (page size) jumbo clusters in use (current/cache/total/max)
0/0/0/112746 9k jumbo clusters in use (current/cache/total/max)
0/0/0/63419 16k jumbo clusters in use (current/cache/total/max)
92151K/4437K/96589K bytes allocated to network (current/cache/total)
0/0/0 requests for mbufs denied (mbufs/clusters/mbuf+clusters)
0/0/0 requests for mbufs delayed (mbufs/clusters/mbuf+clusters)
0/0/0 requests for jumbo clusters delayed (4k/9k/16k)
0/0/0 requests for jumbo clusters denied (4k/9k/16k)
0/0/0 sfbufs in use (current/peak/max)
0 requests for sfbufs denied
0 requests for sfbufs delayed
0 requests for I/O initiated by sendfile
0 calls to protocol drain routines

Date: 2014-02-23 11:55 (UTC)
From: [identity profile] b-a-t.livejournal.com
Так вывод-то какой?

Date: 2014-02-23 15:16 (UTC)
From: [identity profile] dadv.livejournal.com
Вывод как обычно - с тюнингом оно работает, как надо, по дефолту - не факт. И тюнинг нетривиален.

Date: 2014-02-23 17:57 (UTC)
From: [identity profile] victor-sudakov.livejournal.com
А вот помнится на Солярке NFS без всяких настроек дал максимальную для физического линка скорость. Я аж удивился тогда, думал таких скоростей не бывает.

Profile

dadv: (Default)
Choose your future

July 2024

M T W T F S S
12 34567
891011121314
15161718192021
22232425262728
293031    

Tags

Style Credit

Powered by Dreamwidth Studios