sendfile
Igor Sysoev
is at rambler-co.ru
Fri Jul 25 19:24:48 MSD 2008
On Fri, Jul 25, 2008 at 06:59:52PM +0400, Монашёв Михаил wrote:
> Здравствуйте, Игорь.
>
> >> > Было замечено, что на выключение sendfile'а позволяет отдать больше mbit/s.
> >>
> >> А во что упирается скорость отдачи в твоём случае? В скорость дисков?
>
> > У меня - диск. Но вообще, это не про меня, а про опыт других.
>
> Выходит, что в твоём случае sendfile делает или лишние запросы к диску
> или делает их в менее оптимальной последовательности...
sendfile читает достаточно мелкими порциями: только, чтобы влазило в sendbuf.
Поэтому sendbuf имеет смысл увеличивать.
> >> > А пробовал ли кто-нибудь раздавать большие файлы на FreeBSD 7 с использованием
> >> > autotuning send buffers:
> >>
> >> > net.inet.tcp.sendspace=16384
> >> > net.inet.tcp.sendbuf_auto=1
> >> > net.inet.tcp.sendbuf_inc=8192
> >> > net.inet.tcp.sendbuf_max=131072
> >>
> >> А как увидеть какой размер буфера натюнил этот автотюнинг? Я
> >> посмотрел, у меня он по дефолту включен в FreeBSD 7.0-RELEASE-p3.
>
> > Вообще, net.inet.tcp.recvbuf_auto я бы рекомендовал выключить.
>
> >> Раздаю мелкие файлы не более 100 кб. в основном.
>
> > netstat -an|sort -rnk3
>
> Спасибо. Стало понятно какие эти recvbuf и senbuf имеют размеры.
>
> Только вот что странно: net.inet.tcp.sendbuf_inc и
> net.inet.tcp.recvbuf_inc на самом деле не используются, ибо инкремент
> буферов идёт с точностью до байта. И выключение
> net.inet.tcp.recvbuf_auto ничего не поменяло.
Инкремент, я думаю, делается значениями, близкими к _inc. А размеры
буферов кратны не килобайтам, а payload'у в MTU.
> sysctl net.inet.tcp|egrep "recvbuf|sendbuf"
> net.inet.tcp.recvbuf_max: 262144
> net.inet.tcp.recvbuf_inc: 16384
> net.inet.tcp.recvbuf_auto: 0
> net.inet.tcp.sendbuf_max: 262144
> net.inet.tcp.sendbuf_inc: 8192
> net.inet.tcp.sendbuf_auto: 1
>
> sysctl -d net.inet.tcp|egrep "recvbuf|sendbuf"
> net.inet.tcp.recvbuf_max: Max size of automatic receive buffer
> net.inet.tcp.recvbuf_inc: Incrementor step size of automatic receive buffer
> net.inet.tcp.recvbuf_auto: Enable automatic receive buffer sizing
> net.inet.tcp.sendbuf_max: Max size of automatic send buffer
> net.inet.tcp.sendbuf_inc: Incrementor step size of automatic send buffer
> net.inet.tcp.sendbuf_auto: Enable automatic send buffer sizing
>
>
> netstat -an|sort -rnk3|less
> tcp4 0 72825 83.222.14.150.80 93.81.46.80.1631 ESTABLISHED
> tcp4 0 66252 83.222.14.150.80 193.151.12.70.2504 ESTABLISHED
> tcp4 0 66228 83.222.14.150.80 92.125.242.242.50063 ESTABLISHED
> tcp4 0 66066 83.222.14.150.80 193.120.116.178.54774 LAST_ACK
> tcp4 0 65957 83.222.14.150.80 193.151.12.70.2480 ESTABLISHED
> tcp4 0 65853 83.222.14.150.80 217.150.57.205.4340 ESTABLISHED
> tcp4 0 65852 83.222.14.150.80 92.47.240.183.28168 ESTABLISHED
> tcp4 0 65852 83.222.14.150.80 92.113.84.196.3949 ESTABLISHED
> tcp4 0 65852 83.222.14.150.80 89.243.38.167.28158 ESTABLISHED
> tcp4 0 65852 83.222.14.150.80 89.232.124.88.3882 ESTABLISHED
> tcp4 0 65852 83.222.14.150.80 85.113.32.46.20020 ESTABLISHED
> tcp4 0 65852 83.222.14.150.80 81.16.82.54.2950 ESTABLISHED
> tcp4 0 65852 83.222.14.150.80 77.43.234.190.33293 ESTABLISHED
> tcp4 0 65852 83.222.14.150.80 195.161.25.51.16754 ESTABLISHED
> tcp4 0 65852 83.222.14.150.80 193.151.12.70.2526 ESTABLISHED
> tcp4 0 65852 83.222.14.150.80 193.151.12.70.2520 ESTABLISHED
> tcp4 0 65852 83.222.14.150.80 193.151.12.70.2519 ESTABLISHED
> tcp4 0 65852 83.222.14.150.80 193.151.12.70.2516 ESTABLISHED
> ...
>
> netstat -an|sort -rnk2|less
> tcp4 8320 30079 83.222.14.150.80 217.74.245.1.17493 ESTABLISHED
> tcp4 3932 54625 83.222.14.150.80 79.126.32.114.10922 ESTABLISHED
> tcp4 3697 60981 83.222.14.150.80 62.133.180.113.10177 ESTABLISHED
> tcp4 3401 38406 83.222.14.150.80 79.126.32.114.10929 ESTABLISHED
> tcp4 3065 50118 83.222.14.150.80 92.113.30.251.1699 ESTABLISHED
> tcp4 2608 64500 83.222.14.150.80 90.151.231.44.1223 ESTABLISHED
> tcp4 2306 0 83.222.14.150.80 87.245.171.9.1760 ESTABLISHED
> tcp4 2253 60429 83.222.14.150.80 79.126.32.114.10925 ESTABLISHED
> tcp4 2038 62007 83.222.14.150.80 212.0.201.233.13056 ESTABLISHED
> tcp4 1784 61532 83.222.14.150.80 86.57.194.195.4927 ESTABLISHED
> tcp4 1774 44979 83.222.14.150.80 79.126.32.114.10918 ESTABLISHED
> tcp4 1672 34814 83.222.14.150.80 77.51.3.247.1922 ESTABLISHED
> tcp4 1255 57207 83.222.14.150.80 87.245.171.9.1758 ESTABLISHED
> tcp4 1206 0 83.222.14.150.80 78.37.216.71.3500 ESTABLISHED
> tcp4 1148 316 83.222.14.150.80 87.245.171.9.1755 ESTABLISHED
> tcp4 995 58534 83.222.14.150.80 212.0.201.233.13058 ESTABLISHED
> tcp4 944 0 83.222.14.150.80 78.106.96.173.4683 ESTABLISHED
> tcp4 933 0 83.222.14.150.80 77.79.159.239.2326 ESTABLISHED
> tcp4 883 0 83.222.14.150.80 85.141.237.155.1312 ESTABLISHED
> tcp4 880 0 83.222.14.150.80 85.141.237.155.1314 ESTABLISHED
> ...
--
Игорь Сысоев
http://sysoev.ru
More information about the nginx-ru
mailing list