sendfile(2) patch и отдача больших файлов на 7-STABLE amd64

Artemiev Igor ai at kliksys.ru
Tue Feb 3 11:55:07 MSK 2009


On Tue, Feb 03, 2009 at 09:26:30AM +0300, Igor Sysoev wrote:
> То есть,
> 
> 1) загрузились,
> 2) поставили kern.ipc.sfreadahead=64,
> 3) сделали несколько закачек, первая из них быстрая, остальные - медленные,
> 4) поставили kern.ipc.sfreadahead=1,
> 5) сделали несколько закачек, все из них быстрые.
> 
> Так ?
> И при этом при повторных закачках всё равно происходит обращение к диску ?
Да, только kern.ipc.sfreadahead=16, а так всё точь в точь. Обращение к диску
есть при каждой закачке.

> Если это так, то я не понимаю, почему: sfreadahead используется только
> во время чтения. Если страница файла уже в памяти (а они все в памяти, о чём
> говорит 1039M Inactive), то код проходит мимо sfreadahead и он вообще
> не должно влиять на выполнение.
Выглядит так, будто UIO_NOCOPY отрабатывается не совсем ожидаемо. Можно,
конечно, предположить, что этот флаг zfs пока не поддерживается, но с ufs
проблема тоже наблюдается

Ну вот в аттаче два ядерных трейса, соответствующих началу закачки: 1й с
выключенным zfs prefetch и zil, второй с включенными.  В обоих идёт обращение к
диску. Может это как-то поможет.

Вообще, у тебя самого оно по-прежнему работает на свежей 7.1-STABLE? У меня
означенный выше эффект воспроизводится на 6.4-STABLE и 7.1-STABLE.
-------------- next part --------------
  5667   1    2578693792514 syscall enter thread 0xffffff002b24b370 pid 1285 proc nginx code 393
  5668   1    2578693793886 uma_zalloc_arg thread 2b24b370 zone 64 flags 2
  5669   1    2578693795685 uma_zalloc_arg thread 2b24b370 zone 64 flags 2
  5672   1    2578693798317 v_incr_usecount: vp 0xffffff002b1f9bd0 holdcnt 2 usecount 1

  5676   1    2578693800242 lockmgr(): lkp == 0xffffff002b1f9c68 (lk_wmesg == "zfs"), owner == 0xffffffffffffffff, exclusivecount == 0, flags == 0x3002, td == 0xffffff002b24b370
  5678   1    2578693800921 acquire(): lkp == 0xffffff002b1f9c68, extflags == 0x40, wanted == 0x60000
  5679   1    2578693802174 acquire(): lkp == 0xffffff002b1f9c68, extflags == 0x40, wanted == 0x1050000
  5683   1    2578693805408 v_incr_usecount: vp 0xffffff002b1f9bd0 holdcnt 3 usecount 2

  5686   1    2578693806472 lockmgr(): lkp == 0xffffff002b1f9c68 (lk_wmesg == "zfs"), owner == 0xffffff002b24b370, exclusivecount == 1, flags == 0x6, td == 0xffffff002b24b370
  5692   1    2578693809440 uma_zalloc_arg thread 2b24b370 zone mbuf_packet flags 1
  5719   1    2578694122151 lockmgr(): lkp == 0xffffff002b1f9c68 (lk_wmesg == "zfs"), owner == 0xffffffffffffffff, exclusivecount == 0, flags == 0x3001, td == 0xffffff002b24b370
  5721   1    2578694123264 acquire(): lkp == 0xffffff002b1f9c68, extflags == 0x40, wanted == 0x70000
  5723   1    2578694126155 uma_zalloc_arg thread 2b24b370 zone 128 flags 2
  5743   1    2578694143046 uma_zalloc_arg thread 2b24b370 zone 16 flags 258
  5744   1    2578694145209 uma_zalloc_arg thread 2b24b370 zone zio_cache flags 2
  5745   1    2578694148408 lock_init: 0xffffff000de00a78 (sx) zio->io_lock
  5746   1    2578694149136 uma_zalloc_arg thread 2b24b370 zone 32 flags 2
  5768   1    2578694172663 uma_zfree_arg thread 2b24b370 zone 32
  5773   1    2578694178032 lock_destroy: 0xffffff000de00a78 (sx) zio->io_lock
  5774   1    2578694178382 uma_zfree_arg thread 2b24b370 zone zio_cache

-------------- next part --------------
  5900   1     512071563563 syscall enter thread 0xffffff001e8d2370 pid 888 proc nginx code 393
  5901   1     512071566440 uma_zalloc_arg thread 1e8d2370 zone 64 flags 2
  5902   1     512071568841 uma_zalloc_arg thread 1e8d2370 zone 64 flags 2
  5905   1     512071575694 v_incr_usecount: vp 0xffffff00271a53f0 holdcnt 2 usecount 1

  5909   1     512071581133 lockmgr(): lkp == 0xffffff00271a5488 (lk_wmesg == "zfs"), owner == 0xffffffffffffffff, exclusivecount == 0, flags == 0x3002, td == 0xffffff001e8d2370
  5911   1     512071582323 acquire(): lkp == 0xffffff00271a5488, extflags == 0x40, wanted == 0x60000
  5912   1     512071585753 acquire(): lkp == 0xffffff00271a5488, extflags == 0x40, wanted == 0x1050000
  5916   1     512071593768 v_incr_usecount: vp 0xffffff00271a53f0 holdcnt 3 usecount 2

  5919   1     512071595693 lockmgr(): lkp == 0xffffff00271a5488 (lk_wmesg == "zfs"), owner == 0xffffff001e8d2370, exclusivecount == 1, flags == 0x6, td == 0xffffff001e8d2370
  5925   1     512071605682 uma_zalloc_arg thread 1e8d2370 zone mbuf_packet flags 1
  5952   1     512071924084 lockmgr(): lkp == 0xffffff00271a5488 (lk_wmesg == "zfs"), owner == 0xffffffffffffffff, exclusivecount == 0, flags == 0x3001, td == 0xffffff001e8d2370
  5954   1     512071929572 acquire(): lkp == 0xffffff00271a5488, extflags == 0x40, wanted == 0x70000
  5956   1     512071934521 uma_zalloc_arg thread 1e8d2370 zone 128 flags 2
  5978   1     512071966154 uma_zalloc_arg thread 1e8d2370 zone 16 flags 258
  5979   1     512071968863 uma_zalloc_arg thread 1e8d2370 zone zio_cache flags 2
  5980   1     512071972524 lock_init: 0xffffff000dd5aa78 (sx) zio->io_lock
  5981   1     512071973784 uma_zalloc_arg thread 1e8d2370 zone 32 flags 2
  6005   1     512072007412 uma_zfree_arg thread 1e8d2370 zone 32
  6010   1     512072013677 lock_destroy: 0xffffff000dd5aa78 (sx) zio->io_lock
  6011   1     512072016498 uma_zfree_arg thread 1e8d2370 zone zio_cache
  6020   1     512072035776 uma_zfree_arg thread 1e8d2370 zone 16
  6040   1     512072057336 uma_zalloc_arg thread 1e8d2370 zone 16 flags 258
  6041   1     512072058337 uma_zalloc_arg thread 1e8d2370 zone zio_cache flags 2
  6042   1     512072059534 lock_init: 0xffffff000de81268 (sx) zio->io_lock
  6043   1     512072060360 uma_zalloc_arg thread 1e8d2370 zone 32 flags 2
  6067   1     512072085868 uma_zfree_arg thread 1e8d2370 zone 32
  6072   1     512072094653 lock_destroy: 0xffffff000de81268 (sx) zio->io_lock




More information about the nginx-ru mailing list