V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
goforwardv2
V2EX  ›  程序员

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

  •  
  •   goforwardv2 · 119 天前 · 685 次点击
    这是一个创建于 119 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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