首页 > 解决方案 > 通过 sysctl 命令设置的值未反映在内核中

问题描述

我正在尝试调整一些内核参数,特别是 net.core.netdev_budget 和 net.core.dev_weight 参数。我使用以下命令来设置这些参数

sudo sysctl -w net.core.dev_weight = 5
sudo sysctl -w net.core.netdev_budget = 10 

在 Linux 内核中,第一个参数的默认值为 64,第二个参数的默认值为 300。

在我更改这些值后,它们分别反映在 /proc/sys/net/core/dev_weight 和 /proc/sys/net/core/netdev_budget 中。

但是,当我在 napi_poll 跟踪点 (tracepoint:api:napi_poll) 附加一个 bpftrace 程序时。此跟踪点在代码中命中时提供 2 个主要值:

  1. work - 这是 napi_poll 函数处理的数据包数
  2. 预算- 这是 napi_poll 函数可以处理的最大允许数据包数,这等于 net.core.dev_weight 内核参数。

当我打印在命中该跟踪点时给出的值时,预算值始终为 64,即使我已通过 sysctl 命令将其设置为 5。

除了通过 sysctl -w 命令设置值以使其反映在内核中之外,我还需要做其他事情吗?

我正在使用 RHEL 版本 5.5.6-1.el7.elrepo.x86_64。

标签: linuxperformancelinux-kernelsysctl

解决方案


推荐阅读