Cumulus Linux 交换机上的 NetQ Agent CPU 利用率
概述
NetQ Agent 是在交换机上运行的应用程序。它监控和收集交换机上的遥测数据,并将其流式传输到云端或本地部署的 NetQ 平台。与交换机上运行的其他应用程序一样,当 CPU 可用时,NetQ Agent 可能会导致 CPU 利用率过高。这不会干扰正常的交换机流量,但可以手动限制。
问题呈现
您可能会遇到在运行 Cumulus Linux 的交换机上 NetQ Agent 导致 CPU 利用率过高的情况。当通过 SNMP 或 Grafana 或其他监控工具监控 CPU 时,您可能会看到这种高利用率,其形式为基于您为 CPU 使用率设置的阈值设置的警报或事件。
管理 NetQ Agent 行为
监控 NetQ Agent 和其他服务的 CPU 使用率的一种方法是在 Cumulus Linux 交换机上运行以下命令
root@hostname:/var/log# ps %mem | head
PID PPID CMD %MEM %CPU
889 1 /usr/sbin/switchd 6.5 18.8
1246 1 /usr/share/venvs/netq-apps/ 2.9 0.0
10866 10773 /usr/share/venvs/netq-agent 2.2 11.9
10773 1 /usr/share/venvs/netq-agent 2.0 1.3
10957 10866 /usr/share/venvs/netq-agent 1.9 1.6
1243 1 /usr/bin/python -O /usr/sbi 1.1 0.0
1020 1 /usr/bin/python /usr/sbin/p 0.6 0.2
1245 1 /usr/bin/python /usr/bin/ne 0.5 0.9
1021 1 /usr/bin/python /usr/sbin/s 0.5 0.4
Cumulus Linux 具有内置的负载均衡算法,可调节 CPU 使用率,从而允许 NetQ Agent 仅在 CPU 可用时才使用 CPU。NetQ Agent 是一个低优先级 Linux 进程,以优先级级别 5 运行。当没有调度争用时,NetQ Agent 可以使用 CPU 可用的尽可能多的带宽。当存在争用时,它会屈服于更高优先级的进程,例如协议守护程序以及交换机 ASIC 驱动程序和内核任务。
您还可以选择在 NetQ 2.4.1 和 Cumulus Linux 3.6.x、3.7.x 或 4.1 及更高版本中设置 NetQ Agent 可以使用的 CPU 带宽量限制。在 Cumulus Linux 交换机上运行以下 NetQ CLI 命令以限制 NetQ Agent 的 CPU 利用率
netq config add agent cpu-limit <limit>
建议的起始限制为 60%。如果您发现此值过高或过低,可以进行调整。
例如,您可以检查当前设置的值,修改它,然后验证它是否已更改。
检查当前设置的限制。
root@hostname:/var/log# netq config show agent cpu-limit CPU Quota ----------- 100%
将 NetQ Agent 的 CPU 使用率限制修改为最高 60%。
root@hostname:/var/log# netq config add agent cpu-limit 60 Successfully set agent CPU limit to 60 Please restart agent(netq config restart agent) root@hostname:/var/log# netq config restart agent Restarting netq-agent... Success!
验证设置。
root@hostname:/var/log# netq config show agent cpu-limit CPU Quota ----------- 60
您还可以 JSON 格式查看设置
root@hostname:/var/log# netq config show agent cpu-limit json { "cpu-limit":60 }
结论
虽然 NetQ Agent 可能会导致交换机上的 CPU 使用率过高,但它不会干扰正常运行。NetQ 将 NetQ Agent 指定为低优先级服务,因此仅在 CPU 可用时才使用 CPU。如果您愿意,您可以通过使用 NetQ CLI netq config add agent cpu-limit
命令设置限制来控制 NetQ Agent 使用的可用 CPU 带宽量。