cpu 基本信息

命令

$   lscpu

示例

Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:    1
Core(s) per socket:    1
Socket(s):             4
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 79
Model name:            Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz
Stepping:              1
CPU MHz:               2199.998
BogoMIPS:              4399.99
Hypervisor vendor:     VMware
Virtualization type:   full
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              30720K
NUMA node0 CPU(s):     0-3

TOP 命令

命令

$   top

top - 07:57:03 up 314 days, 22:07,  1 user,  load average: 0.78, 0.74, 0.71
Tasks: 185 total,   1 running, 184 sleeping,   0 stopped,   0 zombie
Cpu(s): 25.3%us,  0.2%sy,  0.0%ni, 74.5%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   3924152k total,  3654960k used,   269192k free,   298772k buffers
Swap:  8388604k total,    11580k used,  8377024k free,  1705120k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                         
 5035 ryo      20   0 5261m 1.2g 6468 S 101.1 30.9 444:48.63 java                                                                                           
27085 ryo      20   0  797m 109m 4188 S  0.3  2.9 368:07.60 filebeat  

字段解释

VIRT:virtual memory usage 虚拟内存

  • 进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等

  • 假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量

RES:resident memory usage 常驻内存

  • 进程当前使用的内存大小,但不包括swap out

  • 包含其他进程的共享

  • 如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反

  • 关于库占用内存的情况,它只统计加载的库文件所占内存大小

SHR:shared memory 共享内存

  • 除了自身进程的共享内存,也包括其他进程的共享内存

  • 虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小

  • 计算某个进程所占的物理内存大小公式:RES – SHR

  • swap out后,它将会降下来

DATA

  • 数据占用的内存。如果top没有显示,按f键可以显示出来。

  • 真正的该程序要求的数据空间,是真正在运行中要使用的。

top 运行显示的调整

top 运行中可以通过 top 的内部命令对进程的显示方式进行控制。

内部命令

如下:

s – 改变画面更新频率
l – 关闭或开启第一部分第一行 top 信息的表示
t – 关闭或开启第一部分第二行 Tasks 和第三行 Cpus 信息的表示
m – 关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息的表示
N – 以 PID 的大小的顺序排列表示进程列表
P – 以 CPU 占用率大小的顺序排列进程列表
M – 以内存占用率大小的顺序排列进程列表
h – 显示帮助
n – 设置在进程列表所显示进程的数量
q – 退出 top
s – 改变画面更新周期

属性含义

序号 列名 含义
a PID 进程id
b PPID 父进程id
c RUSER Real user name
d UID 进程所有者的用户id
e USER 进程所有者的用户名
f GROUP 进程所有者的组名
g TTY 启动进程的终端名。不是从终端启动的进程则显示为 ?
h PR 优先级
i NI nice值。负值表示高优先级,正值表示低优先级
j P 最后使用的CPU,仅在多CPU环境下有意义
k %CPU 上次更新到现在的CPU时间占用百分比
l TIME 进程使用的CPU时间总计,单位秒
m TIME+ 进程使用的CPU时间总计,单位1/100秒
n %MEM 进程使用的物理内存百分比
o VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
p SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。
q RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
r CODE 可执行代码占用的物理内存大小,单位kb
s DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
t SHR 共享内存大小,单位kb
u nFLT 页面错误次数
v nDRT 最后一次写入到现在,被修改过的页面数。
w S 进程状态。(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程)
x COMMAND 命令名/命令行
y WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名
z Flags 任务标志,参考 sched.h

默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。

更改显示内容

可以通过下面的快捷键来更改显示内容。

通过 f 键可以选择显示的内容。

按 f 键之后会显示列的列表,按 a-z 即可显示或隐藏对应的列,最后按回车键确定。

按 o 键可以改变列的显示顺序。

按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z 可以将相应的列向左移动。最后按回车键确定。

按大写的 F 或 O 键,然后按 a-z 可以将进程按照相应的列进行排序。而大写的 R 键可以将当前的排序倒转。

top使用方法:

使用格式:

top [-] [d] [p] [q] [c] [C] [S] [s] [n]

参数说明:

d:指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。

p: 通过指定监控进程ID来仅仅监控某个进程的状态。

q: 该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。

S:指定累计模式。

s:使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。

i:使top不显示任何闲置或者僵死进程。

c: 显示整个命令行而不只是显示命令名。

常用命令说明:

Ctrl+L:擦除并且重写屏幕

K:终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15。在安全模式中此命令被屏蔽。

i:忽略闲置和僵死进程。这是一个开关式命令。

q:退出程序

r: 重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。

S:切换到累计模式。

s:改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s。需要注意的是如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加。

f或者F:从当前显示中添加或者删除项目。

o或者O:改变显示项目的顺序

l:切换显示平均负载和启动时间信息。

m: 切换显示内存信息。

t: 切换显示进程和CPU状态信息。

c:切换显示命令名称和完整命令行。

M: 根据驻留内存大小进行排序。

P: 根据CPU使用百分比大小进行排序。

T: 根据时间/累计时间进行排序。

W: 将当前设置写入~/.toprc文件中。

参考资料

Linux tail 命令详解