在运行浏览器时运行top
命令来检查 New RPi3 上的 CPU 性能和内存使用情况。
既然我们有一个4× ARM Cortex-A53, 1.2GHz
,我应该如何读取结果?
$ top
Mem: 327132K used, 620864K free, 29124K shrd, 5800K buff, 164492K cached
CPU: 80% usr 8% sys 0% nic 2% idle 0% io 0% irq 9% sirq
...
- 80% 的流程未经优化
- 8% 系统进程
2%闲置?
我的理解是,当它显示 80% 时,这意味着 400% 满容量中的 80%,因为我们有 4 个核心,对吗?
这是否意味着该
top
命令无法idle
正确计算?如何检查每个核心的使用率/空闲百分比?
我的 Linux(使用 Yocto for RPi3 构建的映像)
root@raspberrypi3:~# uname -a
Linux raspberrypi3 4.1.18 #1 SMP Thu Mar 17 10:26:07 CET 2016 armv7l GNU/Linux
root@raspberrypi3:~# lsb_release -a
LSB Version: core-4.1-noarch:core-4.1-arm
Distributor ID: poky
Description: Poky (Yocto Project Reference Distro) 1.8.1
Release: 1.8.1
Codename: fido
top
版本
root@raspberrypi3:~# top --version
top: unrecognized option '--version'
BusyBox v1.23.1 (2015-10-19 16:33:36 CEST) multi-call binary.
Usage: top [-b] [-nCOUNT] [-dSECONDS]
答案1
根据 的版本top
,CPU 使用情况摘要可能使用 100% 来表示一个核心的价值或表示可用 CPU 总量。根据您的输出,您似乎正在使用top
;的 BusyBox 版本它使用 100% 来表示总的可用 CPU 时间,因此您的 CPU 完全繁忙,大约 80% 的时间用于计算,大约 19% 的时间用于 I/O。每个进程的条目还提供了与整个可用处理能力相关的统计数据,因此在四核计算机上,每个线程的最高利用率为 25%。
procps 的版本top
(非嵌入式 Linux 上的版本,也是 Raspbian 等上的默认版本)使用不同的约定:对于全局 CPU 消耗,100% 是整个 CPU 的总和;但对于每个进程,100% 意味着一个 CPU 的价值。
顶部具有更好的界面并细分每个 CPU 的 CPU 使用率。在那里您会看到每个 CPU 的利用率。在单个进程上,htop 将一个 CPU 的价值计算为 100%,就像 procps 版本一样。
请记住,计算并不精确,而是基于抽样。 (进行精确的 CPU 利用率测量本身会占用大量 CPU 时间,尤其是在高争用的情况下。)2% 的空闲和完全繁忙之间没有显着差异。