Linux TCP симуляция буфера

499
user1728363

Я хотел бы запустить симуляции на приемном буфере Linux TCP, чтобы выяснить, насколько большим должен быть мой буфер.

Есть ли какое-либо программное обеспечение для такого моделирования? Было бы удобно иметь возможность заполнить буфер, чтобы увидеть, что происходит с моим приложением.

Обновление : кажется, что мы используем большие буферы, потому что мы получаем переполнение буфера. Наша сеть работает на скорости 1 Гбит, а пинг - всего 0,08 мс. Наши настройки буфера выглядят так:

net.ipv4.icmp_echo_ignore_broadcasts = 1  net.ipv4.conf.all.rp_filter = 1  fs.inotify.max_user_watches = 65536  net.core.rmem_max = 16777216  net.core.wmem_max = 16777216  net.core.rmem_default = 1733248  net.core.wmem_default = 1733248  net.ipv4.tcp_rmem = 4096 1733248 16777216  net.ipv4.tcp_wmem = 4096 1733248 16777216  net.ipv4.tcp_window_scaling = 1  net.ipv4.tcp_timestamps = 1 
0

1 ответ на вопрос

1
jcoppens

Check this article. It seems to do a good job describing the optimization process, and it has example code (Java and C) to access / change the sizes. There's also a link to a Linux tool to determine optimum size.

This other article show some things you can access using the /proc/sys file system, which is a nice source for real-time info. It shows how to use it using the command line.

Кажется, что мы используем большие буферы, потому что мы получаем переполнение буфера. Наша сеть работает на скорости 1 Гбит, а пинг - всего 0,08 мс. Наши настройки буфера выглядят так. net.ipv4.icmp_echo_ignore_broadcasts = 1 net.ipv4.conf.all.rp_filter = 1 fs.inotify.max_user_watches = 65536 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.core.rmem_32f = 17 wmem_default = 1733248 net.ipv4.tcp_rmem = 4096 1733248 16777216 net.ipv4.tcp_wmem = 4096 1733248 16777216 net.ipv4.tcp_window_scaling = 1 net.ipv4.tcp_timestamps = 1 user1728363 8 лет назад 0
Я включил ваши фактические данные в исходный вопрос. Вы всегда должны стараться хранить соответствующие данные вместе ... jcoppens 8 лет назад 0
Вычислив с формулой из первой ссылки, вы будете в порядке с 0,00008 * 1e9 / 9 = 10k буфера. Я нахожу 0,08 мс довольно впечатляющим (уверен, что вы не проверяете локальную сетевую карту? :) Если у вас есть доступ к двум машинам, я бы установил pathrate и попробовал. jcoppens 8 лет назад 1
К сожалению, сервер работает под управлением Windows XP. Сеть между сервером Windows и клиентом Linux составляет 1 Гбит / с, и они расположены в одной стойке сервера. Я также заметил, что RTT был действительно хорош, и я подтверждаю, что это для другого хоста, а не от localhost. user1728363 8 лет назад 0

Похожие вопросы