%CPU 列和负载在顶部

2023-12-27

我的一个 C++ 应用程序在顶部显示非常高的 %CPU,但负载却相当低。 myapp 总是占用 30% 左右,显示在“top”命令的最顶部,但负载总是像 0.00,所以我很困惑负载和 %CPU 列之间有什么区别?

top - 14:09:54 up 62 days,  2:52,  1 user,  load average: 0.00, 0.00, 0.00
Tasks: 124 total,   1 running, 123 sleeping,   0 stopped,   0 zombie
Cpu0  :  0.0%us,  0.0%sy,  0.0%ni, 99.7%id,  0.3%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu1  :  0.0%us,  0.0%sy,  0.0%ni, 99.3%id,  0.3%wa,  0.0%hi,  0.3%si,  0.0%st
Mem:   2054824k total,  1440364k used,   614460k free,     4644k buffers
Swap:  4194296k total,    16604k used,  4177692k free,   610784k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                         
14774 root      20   0 1201m 9416 1856 S 28.3  0.5 376:13.50 myapp                                                                                        
14746 mysql     20   0 2012m 157m 3888 S  0.3  7.8   5:01.08 mysqld                                                                                          

谁能告诉我理解%CPU和负载之间的区别?

先感谢您!


%CPU例如所示top是瞬时的,即当时正在使用什么,而load显示者uptime是平均值:

它通常以三个数字的形式出现,分别代表 最后一分钟、五分钟和十五分钟的系统负载 期间。

from 维基百科 https://en.wikipedia.org/wiki/Load_%28computing%29.

随着时间的推移,这些应该会收敛,但是虽然 %CPU 为 100% 最大值,但当有进程等待时,负载可能会高于 1。例如:

例如,可以将负载平均值解释为“1.73 0.50 7.98” 单CPU系统为:

最后一分钟,CPU 过载了 73%(1 个 CPU 有 1.73 个可运行进程,因此有 0.73 个进程需要等待轮流)

在最后 5 分钟内,CPU 负载不足 50%(没有进程必须等待轮流)

在最后 15 分钟内,CPU 过载 698%(1 个 CPU 有 7.98 个可运行进程,因此 6.98 个进程必须等待 转动)

Update:

我现在才注意到你的进程使用了​​ 28% 的 CPU,而top报告两个 CPU 的空闲率都超过 99%。我无法在我的 Linux 系统(Ubuntu 12.04、Intel i7-3770K 四核 HT)上重现此问题,请参阅下面的屏幕截图。

正常设置,无负载,显示所有核心的平均 CPU 使用率:

top - 18:10:04 up  7:50,  2 users,  load average: 0.00, 0.05, 0.15
Tasks: 157 total,   1 running, 156 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni, 99.9%id,  0.0%wa,  0.0%hi,  0.0%si, 0.0%st
Mem:  16528224k total,  1124956k used, 15403268k free,   148772k buffers
Swap: 15624188k total,        0k used, 15624188k free, 670460k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
    7022 root      20   0     0    0    0 S    0  0.0   0:00.14 kworker/0:1        
    1 root      20   0  3640 2060 1324 S    0  0.0   0:01.23 init               
    2 root      20   0     0    0    0 S    0  0.0   0:00.00 kthreadd           
    3 root      20   0     0    0    0 S    0  0.0   0:00.14 ksoftirqd/0        
    6 root      RT   0     0    0    0 S    0  0.0   0:00.00 migration/0

一个核心满载(运行yes > /dev/null),显示所有核心的平均 CPU 使用率:

top - 18:11:58 up  7:52,  2 users,  load average: 0.11, 0.07, 0.15
Tasks: 157 total,   2 running, 155 sleeping,   0 stopped,   0 zombie
Cpu(s): 12.5%us,  0.0%sy,  0.0%ni, 87.5%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  16528224k total,  1124880k used, 15403344k free,   148824k buffers
Swap: 15624188k total,        0k used, 15624188k free,   670472k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND           
 8254 tim       20   0  4188  280  228 R  100  0.0   0:04.88 yes                
    1 root      20   0  3640 2060 1324 S    0  0.0   0:01.23 init               
    2 root      20   0     0    0    0 S    0  0.0   0:00.00 kthreadd           
    3 root      20   0     0    0    0 S    0  0.0   0:00.15 ksoftirqd/0        
    6 root      RT   0     0    0    0 S    0  0.0   0:00.00 migration/0        

与 2) 相同,但显示每个核心的 CPU 使用情况:

top - 18:13:47 up  7:54,  2 users,  load average: 0.86, 0.36, 0.24
Tasks: 157 total,   2 running, 155 sleeping,   0 stopped,   0 zombie
Cpu0  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu1  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu2  :  0.3%us,  0.0%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu3  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu4  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu5  :100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu6  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu7  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  16528224k total,  1124756k used, 15403468k free,   148840k buffers
Swap: 15624188k total,        0k used, 15624188k free,   670472k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND           
 8254 tim       20   0  4188  280  228 R  100  0.0   1:53.98 yes                
    1 root      20   0  3640 2060 1324 S    0  0.0   0:01.23 init               
    2 root      20   0     0    0    0 S    0  0.0   0:00.00 kthreadd           
    3 root      20   0     0    0    0 S    0  0.0   0:00.15 ksoftirqd/0        
    6 root      RT   0     0    0    0 S    0  0.0   0:00.00 migration/0        

N.B.:我确实注意到第一个统计数据top显示不显示 100% 的 cpu 使用率yes,与您所拥有的类似。也许这就是问题所在?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

%CPU 列和负载在顶部 的相关文章

  • 即使 makefile 和源代码存在,为什么“Build Project”在 Eclipse Helios CDT 中显示为灰色?

    我无法构建我的项目 我在 Eclipse Helios 中创建了一个新的 CDT 项目 并告诉它使用现有的源代码和 makefile 这两者都正确显示在 Package 和 Project 视图中 然而 项目 菜单中的 构建全部 和 构建项
  • Nasm 打印到下一行

    我用 nasm Assembly 编写了以下程序 section text global start start Input variables mov edx inLen mov ecx inMsg mov ebx 1 mov eax 4
  • 在单个命令中使用前缀重命名文件夹中的所有文件

    重命名带有前缀的文件夹中的所有文件 Unix 假设一个文件夹有两个文件 a txt b pdf 那么它们都应该从一个命令重命名为 Unix a txt Unix b pdf 如果您的文件名包含没有空格并且你没有任何子目录 你可以使用一个简单
  • bash双括号问题

    我对 bash 脚本非常陌生 在使用双括号时遇到了问题 我似乎无法让它们在 Ubuntu Server 11 10 中工作 我的下面的脚本位于 if test sh 中 bin bash if 14 14 then echo FOO fi
  • Bash 中 $() 和 () 之间的区别

    当我打字时ls l echo file 支架的输出 这只是简单的回显 被获取并传递到外部ls l命令 就等于简单的ls l file 当我打字时ls l echo file 我们有错误 因为不能嵌套 内部外部命令 有人可以帮助我理解之间的区
  • 是否可以找到哪个用户位于 localhost TCP 连接的另一端?

    这是一个编程问题 但它是 Linux Unix 特定的 如果我从本地主机获得 TCP 连接 是否有一种简单的方法可以告诉哪个用户在 C 程序内建立了连接而无需 shell 我知道这对于 Unix 域套接字来说并不太难 我已经知道远程 IP
  • 跟踪 pthread 调度

    我想做的是创建某种图表 详细说明 Linux 中 两个 线程的执行情况 我不需要查看线程的作用 只需查看它们何时被安排以及持续多长时间 基本上是一条时间线 在过去的几个小时里 我一直在互联网上搜索跟踪 pthread 调度的方法 不幸的是
  • jpackage linux 创建的桌面文件不足

    我刚刚开始使用 jpackage 它是一个非常棒的工具 只要迈出一步 我的肩上的工作就减轻了很多 我对看起来硬编码且无法定制的东西越感到惊讶 JPackage 自动生成启动器 lib
  • 在 Ubuntu 上纯粹通过 bash 脚本安装 mysql 5.7

    我想要一个无需任何手动输入即可安装 MySQL 5 7 实例的 bash 脚本 我正在关注数字海洋教程 https www digitalocean com community tutorials how to install mysql
  • 在中断时获取 current->pid

    我正在Linux调度程序上写一些东西 我需要知道在我的中断到来之前哪个进程正在运行 当前的结构可用吗 如果我在中断处理程序中执行 current gt pid 我是否可以获得我中断的进程的 pid 你可以 current gt pid存在并
  • 如何从“git log”中查看 Git 中的特定版本?

    My git log显示为 enter code here git trial git log commit 4c5bc66ae50780cf8dcaf032da98422aea6e2cf7 Author king lt email pro
  • UDP 广播发送失败:在 Linux 2.6.30 上“网络无法访问”

    我用udp广播写了一个程序 代码段如下 struct sockaddr in broadcast addr socklen t sock len sizeof broadcast addr bzero broadcast addr sock
  • 编写多个mysql脚本

    是否可以在复合脚本中包含其他 mysql 脚本 理想情况下 我不想为包含的脚本创建存储过程 对于较大的项目 我想分层维护几个较小的脚本 然后根据需要组合它们 但现在 我很乐意学习如何包含其他脚本 source是一个内置命令 您可以在 MyS
  • gdb 错误 - 文件不是可执行格式:无法识别文件格式

    我正在尝试使用 gdb 调试某个名为 xdf 的程序 但是当我运行 gdb xdf 时 出现以下错误 home nealtitusthomas X ray astronomy heasoft 6 24 x86 64 pc linux gnu
  • 如何仅将整个嵌套目录中的头文件复制到另一个目录,在复制到新文件夹后保持相同的层次结构

    我有一个目录 其中有很多头文件 h 和其他 o 和 c 文件以及其他文件 这个目录里面有很多嵌套的目录 我只想将头文件复制到一个单独的目录 并在新目录中保留相同的结构 cp rf oldDirectory newDirectory将复制所有
  • Linux命令列出所有可用命令和别名

    是否有一个 Linux 命令可以列出该终端会话的所有可用命令和别名 就好像您输入 a 并按下 Tab 键一样 但针对的是字母表中的每个字母 或者运行 别名 但也返回命令 为什么 我想运行以下命令并查看命令是否可用 ListAllComman
  • 无关的库链接

    我有一个可能有点愚蠢的问题 因为我很确定我可能已经知道答案了 假设你有静态库A 动态共享库B和你的linux下的程序C 假设库 A 调用库 B 中的函数 并且您的程序调用库 A 中的函数 现在假设 C 在 A 中调用的所有函数都不使用 B
  • 如何通过代理将套接字连接到http服务器?

    最近 我使用 C 语言编写了一个程序 用于连接到本地运行的 HTTP 服务器 从而向该服务器发出请求 这对我来说效果很好 之后 我尝试使用相同的代码连接到网络上的另一台服务器 例如 www google com 但我无法连接并从网络中的代理
  • 如何从类似于 eclipse 的命令行创建可运行的 jar 文件

    我知道 eclipse 会生成一个可运行的 jar 文件 其中提取并包含在该 jar 文件中的所有库 jar 文件 从命令提示符手动创建 jar 文件时如何执行类似的操作 我需要将所有 lib jar 解压到类文件夹中吗 目前我正在使用 j
  • 如何在 Linux 主机上的 docker 容器中挂载目录 [重复]

    这个问题在这里已经有答案了 我想将一个目录从 docker 容器挂载到本地文件系统 该目录是网站根目录 我需要能够使用任何编辑器在本地计算机上编辑它 我知道我可以跑docker run v local path container path

随机推荐

  • 在java中填充数字直到字符串长度为8个字符?

    我正在阅读 但找不到完整的片段 我正在寻找一个函数 它接受一个字符串并在左侧填充零 0 直到整个字符串的长度为 8 位 我找到的所有其他片段只让整数控制要填充的数量 而不是让整数控制填充的数量 直到整个字符串的长度为 x 位 在Java中
  • 为什么 Oracle 会忽略“完美”索引?

    我有这张表 create table demo key number 10 not null type varchar2 3 not null state varchar2 16 not null lots more columns 和这个
  • HiLo 还是身份?

    只是想获得一些关于主键的意见 使用身份 序列号或使用 HiLo 策略 查询高值并增加应用程序本身的低值 会更好吗 如果您将 SQL Server 2005 2008 与大型表 gt 100 万行 一起使用 您可能需要考虑this http
  • Java 变量隐藏方法重写概念

    我正在努力理解 Java 继承的变量 阴影方法和重写概念 Case 1 class Car public int gearRatio 8 public String accelerate return Accelerate Car clas
  • 链接某些 Windows API 时出现链接器错误

    我的系统中有一个 makefile 项目 最近 我添加了一些使用以下 Windows API 的新函数 RegOpenKeyEx RegEnumKeyEx RegCloseKey RegGetValue 为了拥有这些 APIS 我添加了wi
  • 尝试运行 ts-node 脚本时出现未知文件扩展名“.ts”错误

    我正在尝试运行在带有两个 ts 文件的常规文件夹中创建的脚本 一份包含脚本 另一份包含运行脚本的辅助函数 我还导入了更多东西 例如 axios 或表单数据 问题是 当我尝试使用 ts node 运行脚本时 节点脚本 ts 出现如下错误 Ty
  • 定期JavaFX服务

    我想从我的 JavaFX 应用程序定期执行任务 该任务从远程流中提取数据 虽然我知道我可以使用计时器 如下所示 JavaFX周期性后台任务 https stackoverflow com questions 9966136 javafx p
  • 在 iOS 中获取 iPhone 位置,无需将首选项“定位服务”设置为“开”

    我正在写一个类似于的守护进程克里斯 阿尔瓦雷斯守护进程 http chrisalvares com blog 7 creating an iphone daemon part 1 我想在未经用户许可的情况下在后台获取设备位置 如果Locat
  • 使用 Bitbucket Pipelines 从 docker 实例通过 SSH 连接到临时计算机

    使用新的 Bitbucket Pipelines 功能 我如何从它启动的 docker 容器通过 SSH 访问我的暂存盒 我的管道中的最后一步是 sh在暂存上部署必要代码的文件 但是由于我的暂存盒使用公钥身份验证并且不知道 docker 容
  • F# 交互式中的 Windows UI(UWP 或 8.1)

    通过引用默认的 WPF DLL 使用纯代码 WPF 可以轻松完成任何操作 r PresentationCore dll r PresentationFramework dll other DLLs r WindowsBase dll let
  • 使用Python从屏幕捕获视频数据

    有没有办法使用Python 也许使用OpenCV或PIL 连续抓取整个或部分屏幕的帧 至少以15 fps或更高的速度 我见过用其他语言完成的 所以理论上它应该是可能的 我不需要将图像数据保存到文件中 实际上 我只是希望它输出一个包含原始 R
  • Typescript 能够进行简单的函数组合吗?

    Typescript 能够进行简单的函数组合吗 我写出了以下用于测试的 compose map 和 filter 的基本实现 下面先设置类型和功能 然后再实现 javascript 似乎没问题 但打字稿显示误报compose用来 具体来说
  • 使用Remoting时如何在.NET3.5中使用App.config而不需要在App.config中添加Remoting相关配置?

    我正在尝试将 App config 用于托管远程处理并在 NET3 5 中开发的 Windows 服务应用程序 在该 App config 中 我想保留一些将在整个解决方案中使用的值 我没有向其中添加远程关系配置内容 但是在运行应用程序时
  • TypeORM 中 .limit() 和 .take() 之间的区别

    我对具有相似目的的不同 TypeORM 方法感到困惑 来自 TypeORM 文档 take 分页限制 设置要获取的最大实体数 skip 分页偏移量 设置要跳过的实体数量 我不太理解 分页限制 偏移 的含义 但是 不幸的是 我找不到任何有关区
  • 如何在FMX2中直接访问TBitmap像素(TBitmap.ScanLine替换)?

    The FMX Types TBitmap http docwiki embarcadero com Libraries XE2 en FMX Types TBitmap类有ScanLine http docwiki embarcadero
  • 如何设计反应制表符表的样式?

    任何人都可以向我提供一些有关如何设计反应制表符表样式的信息吗 我一直在尝试更改标题颜色 边框等 但徒劳无功 我只在文档中找到类名 例如className table bordered table striped 但这对我没有帮助 我想创建自
  • 如何让 Monodevelop 重新使用英语作为其语言

    我不知道这是怎么发生的 但是当我启动 Monodevelop 时 菜单突然以英语以外的语言出现 我尝试重新安装应用程序以及手动删除库下其他目录中的工件 没有运气 重新安装后 它仍然以另一种语言加载 您可以在选项 首选项对话框下更改语言 对我
  • 随机化框中的 (x,y,z) 坐标

    我对 python 相当陌生 在我当前的任务中 它研究的是 3D 粒子 问题的第一部分要求创建一个程序 将相同的 不重叠的粒子放入立方晶格中 所以我下面的代码只是迭代所有可能的组合 将其放入 XYZ 文件中 xyz 文件的格式如下 1000
  • 用随机数据填充对象的 C# 库[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想用随机数据填充我的对象 用于测试目的 是否有库可以做到这一点 某种反射方法 它将遍历对象图并初始化原
  • %CPU 列和负载在顶部

    我的一个 C 应用程序在顶部显示非常高的 CPU 但负载却相当低 myapp 总是占用 30 左右 显示在 top 命令的最顶部 但负载总是像 0 00 所以我很困惑负载和 CPU 列之间有什么区别 top 14 09 54 up 62 d