如何解读“最佳”结果

如何解读“最佳”结果

我正在运行一个软件,在它运行时,我想知道它占用了多少 CPU 使用率或 RAM……以及其他可能有趣的事情。为此,我需要确切地知道诸如 、 等词的含义。VIRTSHR试图N在 Google 上找到它,但没有找到。有人可以指导我找到一个可以详细阅读这些命令的来源top吗?

此外,根据我的理解,%CPU显示 CPU 使用率并%MEM显示正在使用的 RAM 百分比。对吗?

另外,我不知道为什么会有 3-4 个用户同时使用 100% 的 CPU,有时甚至有人使用 400%。这是什么意思?

答案1

以下是示例输出top

top - 14:21:40 up 7 days, 21:57,  7 users,  load average: 0.13, 0.04, 0.04
Tasks: 107 total,   2 running, 105 sleeping,   0 stopped,   0 zombie
Cpu0  :  1.0% us,  1.0% sy,  0.0% ni, 96.1% id,  1.9% wa,  0.0% hi,  0.0% si
Cpu1  :  1.0% us,  1.0% sy,  0.0% ni, 98.0% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:   2050756k total,  2034236k used,    16520k free,    22252k buffers
Swap:  2097144k total,    87108k used,  2010036k free,  1609212k cached
  • 第一行很容易解释,只是为什么有三个不同的负载平均值并不明显:这些值使用三个不同的时间尺度。
  • 第二行:任务摘要,按状态分组
  • CPU 线路有两种模式,

    Cpu(s): 1.0% us, 0.5% sy, 0.0% ni, 98.5% id, 0.0% wa, 0.0% hi, 0.0% si

    其中所有 CPU 核心都汇总在一起,或者像上例中那样,每个核心都有自己的一行。您可以使用 在这些模式之间切换1。每个核心都可以 100% 使用,因此如果有两个核心,全部的最大值是200%。

    以下列表中的两个字母缩写以粗体显示(c&p 来自较早的答案):

    • 我们er:在用户模式下执行的正常进程
    • ce:在用户模式下执行的 niced 进程
    • 西stem:在内核模式下执行的进程
    • ID无所事事
    • io它:等待 I/O 完成
    • irq:服务中断[硬中断你好]
    • softirq: 服务软中断 [软中断]
    • 英石eal:非自愿等待
  • Mem 和 Swap 分别用于物理 RAM 和交换空间。

  • 进程列表在 top 的 man 页中有详细说明(2a. 字段描述)。由于您的手册页似乎不完整,下面是摘录;还有完整的副本互联网上的手册页。默认情况下显示这些列(使用 自定义f):

    PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

    回答您关于 CPU 使用率的具体问题:如果一个进程并行运行,即可以使用多个 CPU 核心,则 400% 的使用率表示 4 个核心已被完全使用。


PID -- 进程 ID:任务的唯一进程 ID,它会定期包装,但不会从零重新启动。

局部局部性病变 -- 父进程 Pid:任务父进程的进程 ID。

鲁用户 -- 真实用户名:任务所有者的真实用户名。

唯一标识 -- 用户 ID:任务所有者的有效用户 ID。Blockquote

用户 -- 用户名:任务所有者的有效用户名。

团体 -- 群组名称:任务拥有者的有效群组名称。

终端电话 -- 控制 Tty:控制终端的名称。这通常是启动进程的设备(串行端口、pty 等),并用于输入或输出。但是,任务不需要与终端相关联,在这种情况下,您将看到显示的“?”。

公共关系 -- 优先级:任务的优先级。

-- Nice 值:任务的 Nice 值。负的 Nice 值表示优先级较高,而正的 Nice 值表示优先级较低。此字段为零仅表示在确定任务的可调度性时不会调整优先级。

-- 最后使用的 CPU (SMP):表示最后使用的处理器的数字。在真正的 SMP 环境中,此数字可能会频繁更改,因为内核有意使用弱亲和性。此外,运行 top 的行为本身可能会破坏这种弱亲和性,并导致更多进程更频繁地更改 CPU(因为对 CPU 时间有额外的需求)。

%中央处理器 -- CPU 使用率:自上次屏幕更新以来,任务所占的 CPU 时间份额,以占总 CPU 时间的百分比表示。在真正的 SMP 环境中,如果“Irix 模式”关闭,top 将以“Solaris 模式”运行,其中任务的 CPU 使用率将除以 CPU 总数。您可以使用“I”交互命令切换“Irix/Solaris”模式。

时间 -- CPU 时间:任务自启动以来使用的总 CPU 时间。当“累积模式”处于开启状态时,每个进程及其已死亡子进程使用的 CPU 时间都会列出。您可以使用“S”切换“累积模式”,这是一个命令行选项和交互式命令。有关此模式的更多信息,请参阅“S”交互式命令。

时间+ -- CPU 时间,百分之一:与“TIME”相同,但通过百分之一秒反映更多的粒度。

%内存 -- 内存使用情况 (RES):任务当前使用的可用物理内存份额。

虚拟仿真测试系统 -- 虚拟映像 (kb):任务使用的虚拟内存总量。它包括所有代码、数据和共享库以及已换出的页面。VIRT = SWAP + RES

交换 -- 交换大小(kb):任务的总虚拟内存映像的换出部分。

可再生能源 -- 驻留大小(kb):任务已使用的非交换物理内存。 RES = CODE + DATA

代码 -- 代码大小(kb):用于可执行代码的物理内存量,也称为“文本驻留集”大小或 TRS。

数据 -- 数据+堆栈大小(kb):用于除可执行代码以外的物理内存量,也称为“数据驻留集”大小或 DRS。

自发性高血压 -- 共享内存大小 (kb):任务使用的共享内存量。它只是反映可能与其他进程共享的内存。

正常FLT -- 页面错误计数:任务中发生的重大页面错误数。当进程尝试读取或写入当前不存在于其地址空间中的虚拟页面时,就会发生页面错误。重大页面错误是指在使该页面可用时需要访问磁盘。

抗逆转录病毒 -- 脏页数:自上次写入磁盘以来被修改过的页面数。必须先将脏页写入磁盘,然后相应的物理内存位置才可用于其他虚拟页。

年代 -- 进程状态任务的状态可以是以下之一: = 不间断睡眠, R= 跑步, 年代=睡觉, 电视= 被追踪或被停止, = 僵尸。显示为正在运行的任务更应该被认为是“准备运行”——它们的 task_struct 只是在 Linux 运行队列中表示。即使没有真正的 SMP 机器,您也可能会看到许多处于此状态的任务,具体取决于 top 的延迟间隔和 nice 值。

命令 -- 命令行或程序名称:显示用于启动任务的命令行或相关程序的名称。您可以使用“c”在命令行和名称之间切换,这既是命令行选项,也是交互式命令。当您选择显示命令行时,没有命令行的进程(如内核线程)将只显示括号中的程序名称,如以下示例所示:(mdrecoveryd)如果显示太长而无法容纳在此字段的当前宽度中,则任何形式的显示都可能被截断。该宽度取决于所选的其他字段、它们的顺序和当前屏幕宽度。 笔记:“命令”字段/列是独一无二的,因为它不是固定宽度的。显示时,此列将分配所有剩余的屏幕宽度(最多 512 个字符),以适应程序名称在命令行中的潜在增长。

西哈努克市 -- 休眠函数:根据内核链接图 ('System.map') 的可用性,此字段将显示任务当前休眠的内核函数的名称或地址。正在运行的任务将在此列中显示破折号 ('-')。 笔记:通过显示此字段,top 自己的工作集将增加超过 700Kb。减少该开销的唯一方法是停止并重新启动 top。

标志 -- 任务标志:此列表示任务的当前调度标志,以十六进制表示法表示,并隐藏零。这些标志在 中有正式记录。在“字段选择”和“排序字段”屏幕上也可以找到不太正式的文档。

相关内容