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