параметр ядра — net.core.netdev_max_backlog, что происходит, когда он слишком низкий
мы хотим понять, каковы аспекты, когдаnet.core.netdev_max_backlog
Значение ядра очень низкое и не соответствует рекомендациям
на наших машинах с Linux RHEL значение этого параметра равно1000
поскольку наши машины являются машинами HADOOP (кластер BIGDATA)
мы увидели, что лучшая практика — увеличить значение до65536
как описано на:
https://datasayans.wordpress.com/2015/11/04/ Performance-kernel-tuning-for-hadoop-environment/
фон:
Параметр ядра «netdev_max_backlog» — это максимальный размер очереди приема. Полученные кадры будут сохраняться в этой очереди после их взятия из кольцевого буфера сетевой карты. Используйте высокое значение для высокоскоростных карт, чтобы предотвратить потерю пакетов. В приложениях реального времени, таких как SIP-маршрутизатор, длинная очередь должна быть назначена высокоскоростному процессору, иначе данные в очереди будут устаревшими (старыми).
Итак, какие могут быть аспекты, когда этот параметр ядра имеет недостаточное значение?
другое - ссылка - https://gist.github.com/leosouzadias/e37cd189794bb78de502ac25cb605576
https://www.senia.org/2016/02/28/hadoop-and-redhat-system-tuning-etcsysctl-conf/
https://mapredit.blogspot.com/2014/11/hadoop-server- Performance-tuning.html
https://gist.github.com/phaneesh/38b3d80b38cc76abb1d010f598fbc90a
1 ответ
Каковы могут быть последствия, если значение этого параметра ядра недостаточно?
Выполните следующую команду:
for i in {1..30}; do date; cat /proc/net/softnet_stat; sleep 1; done
Результатом будет следующее:
001c1216 000000b0 00000040 00000000 00000000 00000000 00000000 00000000 00000000 00000000
02fdffa5 000000aa 00000032 00000000 00000000 00000000 00000000 00000000 00000000 00000000
02fdffa5 — количество пакетов. 000000aa — количество отброшенных пакетов.
Запустите команду и посмотрите, увеличилось ли количество отброшенных пакетов, преобразуя значение в десятичное. Если количество пакетов увеличилось, увеличьте его до соответствующего значения.
Вы можете временно увеличить значение, выполнив следующую команду:
sysctl -w net.core.netdev_max_backlog=2000
Вы можете сделать значение постоянным, выполнив следующую команду:
echo "net.core.netdev_max_backlog = X" >> /etc/sysctl.conf
Кроме того, значение 65536 является чрезмерным и ненужным для правильной работы системы. Вам, очевидно, следует измениться
X
на значение, которое вы хотите использовать.
Если второй и третий столбец softnet_stat не растут, то необходимо увеличить
Источник: Как настроить
net.core.netdev_max_backlog
и
net.core.netdev_budget
настройки ядра sysctl?