繁体   English   中英

Linux(Ubuntu)的平均负载高于完全真实利用率吗?

[英]Linux(Ubuntu) load average higher than total-true-utilization?

我有一台运行Ubuntu服务器12.04LTS的Dell 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

这几乎等于预设=慢。 如您所见,我的VLC实时运行。 参数为:

wilson@server:/$ chrt -p -f 99 vlc-wrapper

您的系统似乎没有任何问题。 您对CPU记帐的理解似乎有问题。 特别是,平均负载与CPU使用率几乎没有任何关系。 平均负载基于准备好运行的进程数(不等待I / O,网络,键盘输入等),如果有可用的CPU可供调度。 的确,在给定8核系统的情况下,如果所有8核均100%忙于每个CPU绑定线程 ,则您的平均负载应在8.00左右,完全有可能将平均负载为200.0,而0%CPU使用率。 这说明您有200个准备运行的进程,但是一旦安排好它们,它们几乎什么也不做,然后再返回等待某种输入。

您的top输出显示vlc似乎使用了大约5个内核,但是并没有表明您是否有5个内核(每个100%),或者是否所有8个内核都在62.5%。 top列出的所有其他其他进程也会影响平均负载以及CPU使用率。 尤其是,运行时间短(例如您的示例为0.1秒)的top延迟可能会使您的平均负载本身增加近1,尽管总的来说,它并没有占用大量CPU时间。

读这个:

了解平均负载与CPU使用率

如果平均负载为7,并带有4个超线程处理器,这是否不意味着CPU的工作容量约为7/8?

不,这仅意味着作业队列中平均7个正在运行的进程

但是我认为我们不能使用平均负载作为参考数字来确定系统是否过载。 因此我想知道是否有内核级的CPU实用化统计工具?(为什么使用内核级,因为这会降低性能损失)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM