内核参数 - net.core.netdev_max_backlog,当其太低时会发生什么

内核参数 - 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”是接收队列的最大大小。接收的帧将从 NIC 上的环形缓冲区中取出后存储在此队列中。对于高速卡,请使用高值以防止丢失数据包。在像 SIP 路由器这样的实时应用中,必须为长队列分配高速 CPU,否则队列中的数据将过期(旧)。

那么 - 当这个内核参数的值不足时,可能出现什么情况?

其他-参考-https://gist.github.com/leosouzadias/e37cd189794bb78de502ac25cb605576

https://community.cloudera.com/t5/Community-Articles/OS-Configurations-for-Better-Hadoop-Performance/ta-p/247300

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

https://docs.datastax.com/en/dse/5.1/dse-dev/datastax_enterprise/config/configRecommendedSettings.html

PDF -https://www.cisco.com/c/dam/en/us/solutions/collat​​eral/data-center-virtualization/big-data/cloudera-intel-cisco-hadoop-benchmark.pdf

答案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是被丢弃的数据包数量

运行该命令,通过将值转换为十进制,查看丢弃的数据包数量是否增加。如果数据包数量增加,则增加到net.core.netdev_max_backlog适当的值。

您可以通过运行以下命令暂时增加该值:

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_max_backlogsysctlnet.core.netdev_budget内核可调参数?

相关内容