|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Eugene Grosbein 2:5006/1 07 Jan 2007 22:15:29 To : Alexander Kolesnikoff Subject : Re: BSD 6.1 & polling -------------------------------------------------------------------------------- 05 янв 2007, пятница, в 21:43 KRAST, Alexander Kolesnikoff написал(а): >> В случае с iperf тут тормозом, как ни странно, стал клиент - >> iperf после каждого write вызывает gettimeofday, что даже на UP ядре >> и таймере ACPI-fast выливается в громадный оверхед в system time. >> Дергать таймер 80 тысяч раз в секунду довольно дорого на FreeBSD >> Есть какой-нибудь бенчмарк, который так не делает? AK> ng_source ? Попробовал так. При помощи 'tcpdump -s0 -n -p -c1 -i fxp0 -w packet.raw src host $myip and udp port 5001' поймал один из тех пакетов, что шлет iperf. Размер данных UDP в нем 64 байта, плюс 20 байт заголовок UDP, плюс 8 байт заголовок IP, плюс 14 байт на ethernet, итого 106 байт. При помощи tail -c 106 packet.raw >packet.cap получил файл для ng_source. Сделал скрипт для измерения: #!/bin/sh ngctl mkpeer fxp0: source orphans output nghook fxp0:orphans input < packet.cap ngctl msg fxp0:orphans start 100000000 sleep 60 ngctl msg fxp0:orphans stop ngctl msg fxp0:orphans getstats ngctl shutdown fxp0:orphans Hа принимающей стороне (на сервере) сказал: ipfw add 5 allow udp from any to any in recv fxp0 (другого UDP-трафика тут все равно нет). Запустил скрипт, он после окончания тестирования выводит накопленную статистику и обнуляет её (гашением ng_source). Hа сервере результат показывает мне ipfw show 5. В результате на клиенте: Rec'd response "getstats" (1) from "[69]:": Args: { outOctets=609393046 outFrames=5748991 queueOctets=106 queueFrames=1 startTime={ tv_sec=1168178402 tv_usec=886685 } endTime={ tv_sec=1168178462 tv_usec=896665 } elapsedTime={ tv_sec=60 tv_usec=9980 } lastTime={ tv_sec=1168178402 tv_usec=886685 } } Hа сервере: 00005 2639889 242869788 allow udp from any to any in recv fxp0 Итого получаем: 2639889/5748991=45.9% успеха, или почти 55% потерь. В процессе тестирования буфера на выход на этой сетевой у клиента забивались вусмерть (пинг не ходил: ping: sendto: No buffer space available), ранее установленный ssh-коннект с сервером порвался. Вопрос - что именно меряет ng_source? Судя по всему, потери образовались еще до выхода в линию, на клиенте. Сам клиент при этом по процессору был 96% idle все время. Eugene -- А если не будут брать, отключим газ. --- slrn/0.9.8.0 (FreeBSD) * Origin: Svyaz Service JSC (2:5006/1@fidonet) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/2609365006297.html, оценка из 5, голосов 10
|