我有一台运行 Ubuntu 服务器 12.04LTS 的戴尔 pd2950(2x4core) 服务器。并且有一个 VLC 编码器实例正在运行。最近我更新了 VLC 的脚本 (VLM) 以提高质量,这意味着我也在增加 CPU 利用率。所以我开始调整脚本以避免超过最大利用率。我使用 top 来监控 CPU 利用率。我发现平均负载高于 100%(我总共有 8 个内核,所以 8.00 是 100%)但仍有 20-35% 空闲,例如:
top - 21:41:19 up 2 days, 17:15, 1 user, load average: 9.20, 9.65, 8.80
Tasks: 148 total, 1 running, 147 sleeping, 0 stopped, 0 zombie
Cpu(s): 32.8%us, 0.7%sy, 29.7%ni, 36.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1982680k total, 1735672k used, 247008k free, 126284k buffers
Swap: 0k total, 0k used, 0k free, 774228k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
9715 wilson RT 0 2572m 649m 13m S 499 33.5 13914:44 vlc
11663 wilson 20 0 17344 1328 964 R 2 0.1 0:02.00 top
1 root 20 0 24332 2264 1332 S 0 0.1 0:01.06 init
2 root 20 0 0 0 0 S 0 0.0 0:00.09 kthreadd
3 root 20 0 0 0 0 S 0 0.0 0:27.05 ksoftirqd/0
4 root 20 0 0 0 0 S 0 0.0 0:00.00 kworker/0:0
5 root 0 -20 0 0 0 S 0 0.0 0:00.00 kworker/0:0H
为了确认我的 CPU 没有超线程,我试过:
wilson@server:/$ nproc
8
并且为了减少刷新时间造成的采样偏差,我也尝试过:
wilson@server:/$ top -d 0.1
我看了半天%id这个数字,一直没有低于14。
我也试过:
wilson@server:/$ uptime
21:57:20 up 2 days, 17:31, 1 user, load average: 9.03, 9.12, 9.35
1m平均负载往往达到14-15。所以我想知道我的系统出了什么问题?有没有人遇到过这个问题?
更多信息:
我正在使用带有 x264 编解码器的 VLC 来编码实时 HTTP 流(应用程序/八位字节流)。它使用 ffmpeg(libavc) 解码并输出为 Apple HLS(.ts 段)。我在为 x264 添加参数后发现了这个问题:
level=41,ref=5,b-adapt=2,direct=auto,me=umh,subq=8,rc-lookahead=60,analyse=all
这几乎等于 preset=slower。如您所见,我的 VLC 实时运行。参数为:
wilson@server:/$ chrt -p -f 99 vlc-wrapper
最佳答案
您的系统似乎没有任何问题。错误的似乎是您对 CPU accounting 的理解。特别是,平均负载与 CPU 使用率几乎没有任何关系。平均负载基于准备运行的进程数(不等待 I/O、网络、键盘输入等),前提是有可用的 CPU 可供调度。确实,给定一个 8 核系统,如果所有 8 个核都 100% 忙碌,每个核都有一个 CPU 绑定(bind)线程,您的平均负载应该在 8.00 左右,完全有可能平均负载为 200.0,CPU 使用率接近 0%。所有这一切都表明您有 200 个准备运行的进程,但是一旦它们被安排好,它们在返回等待某种输入之前几乎什么都不做。
您的 top
输出显示 vlc
似乎使用了大致相当于您的 5 个核心,但它并不表示您是否有 100% 的 5 个核心每个,或者如果所有 8 个核心每个都为 62.5%。 top
列出的所有其他进程也会影响您的平均负载以及 CPU 使用率。特别是,top
像您的 0.1 秒示例那样以较短的延迟运行,可能会使您的平均负载本身增加近 1,尽管总体而言,它并没有使用大量 CPU 时间。
关于Linux(Ubuntu)平均负载高于总真实利用率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23566758/