• 请不要在回答技术问题时复制粘贴 AI 生成的内容
goforwardv2
V2EX  ›  程序员

Linux 机器系统负载(load average)高会影响 ping 值吗(单纯地通过 ICMP 获得的值)? 在 load average 高并且进出带宽够用的情况下, 可以通过提高服务器进程的优先级来缩短响应时间吗?

  •  
  •   goforwardv2 · Jan 7, 2021 · 2326 views
    This topic created in 2126 days ago, the information mentioned may be changed or developed.

    由于 ICMP 有时会被中间路由封掉,所以写了一个 UDP 的服务器, 通过 UDP 包的往返时长计算 ping 值。但是当 UDP 服务器所在的机器高负载时,ping 值会时不时的升高。升高的原因可能有两个:

    1. 网络抖动
    2. UDP 服务器响应慢

    对于(2)可否通过提高 UDP 服务器的优先级来缩短响应时间?

    6 replies  •  2021-01-09 21:24:03 +08:00
    markgor
    markgor
    Jan 7, 2021
    1
    负载高会影响,特别是云服务器,影响更加厉害。
    lvzhiqiang
    lvzhiqiang
    Jan 7, 2021
    2
    保证 UDP 服务器的 CPU 资源使用的情况下,理论是可以缩短响应时间。 毕竟,多个进程争抢 CPU 资源,优先级高的肯定能优先满足。
    hatebugs
    hatebugs
    Jan 7, 2021
    3
    1. 先看 load 高是不是 D 状态占用的,如果 CPU 使用率不高,ping 结果影响应该不大,如果是 CPU 使用率高,会影响 ICMP 的延时,因为 CPU 要对包进行封包解包处理。
    2.高服务器进程的优先级在 CFS 下会让 CPU 调用的 vruntime 增加,可以让进程获得更多的 CPU 资源来处理要干的事,具体缩短响应时间可以有好多方法来优化。
    性能优化需要综合考虑,不是非黑即白
    12101111
    12101111
    Jan 8, 2021
    4
    ICMP ECHO 是内核处理的, UDP 是用户态处理的, 调整调度上的优先级可以提高响应时间,但是肯定不会减小到 ICMP 的水平
    goforwardv2
    goforwardv2
    OP
    Jan 8, 2021
    5
    @hatebugs 通过 top 和 sar 等命令观察, 高负载时 cpu 确实满了。 同时 iowait 基本为 0. 没有 D 状态进程。 但是当 cpu 降下来之后,idle 高于 80%时,无 D 状态进程时, 平均负载还是会高, 要 3 分钟之后才恢复正常。平均负载的第一个参数不是反映的是过去 1 分钟的负载吗, 怎么没有及时刷新? 求大佬高见。
    hatebugs
    hatebugs
    Jan 9, 2021 via Android
    6
    @goforwardv2 load 内核计算就是会有延迟的,而且 load 只要不比 cpu 个数高就没事。可以用 perf 或其他工具看下 cpu 使用的热点函数在哪,具体的去优化。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3079 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 12:18 · PVG 20:18 · LAX 04:18 · JFK 07:18
    ♥ Do have faith in what you're doing.