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