Linux中cpu与内存性能监测
2018-09-07 本文已影响23人
caoxinyiyi
现在工作中需要,需要重点学习一下,如何看linux的机器的性能。
top命令
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况。主要看
Cpu(s): 19.6%us, 0.5%sy, 0.0%ni, 79.4%id, 0.5%wa, 0.0%hi, 0.0%si, 0.0%st
19.6%us 用户空间占用CPU百分比
0.3% sy 内核空间占用CPU百分比
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
9346 root 20 0 7957m 2.5g 16m S 226.7 9.0 115875:55 java
5716 work 20 0 716m 274m 7124 S 3.3 1.0 443:03.03 wtable-server
PR:进程的优先级别,越小越优先被执行
VIRT:进程占用的虚拟内存
RES:进程占用的物理内存
%CPU:进程占用CPU的使用率
%MEM:进程使用的物理内存和总内存的百分比
top 运行中可以通过 top 的内部命令对进程的显示方式进行控制, 最主要是如下的结果命令
N - 以 PID 的大小的顺序排列表示进程列表
P - 以 CPU 占用率大小的顺序排列进程列表
M - 以内存占用率大小的顺序排列进程列表
q - 退出 top
sar命令
sar命令也是Linux系统中重要的性能监测工具之一,它可以周期性地对内存和CPU使用情况进行采样。
基本语法:
sar t [n] , t为采样间隔,是必选的, n为采样次数,是可选的
常用选项:
-u:CPU利用率
-r 内存利用率
-R 内存状况
-b I/O 和传输速率信息状况
-q 队列长度和平均负载
-S 交换空间利用率
示例:
Linux 2.6.32-504.el6.x86_64 (bjm6-191-106.58os.org) 2018年09月07日 _x86_64_ (8 CPU)
15时33分45秒 CPU %user %nice %system %iowait %steal %idle
15时33分46秒 all 25.44 0.00 0.63 0.38 0.00 73.55
平均时间: all 25.44 0.00 0.63 0.38 0.00 73.55
vmstat命令
vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。相比top,它可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)。
基本语法:
vmstat t [n] , t为采样间隔,是必选的, n为采样次数,是可选的, 当未设置n的时候,会一直采样
> vmstat 1 1
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
31 0 1874084 1294596 327952 18367116 0 0 0 9 0 0 7 1 92 0 0
r 表示运行队列(就是说多少个进程真的分配到CPU),当这个值超过了CPU数目,就会出现CPU瓶颈了,这个也和top的负载有关系,一般负载超过了3就比较高,超过了5就高,超过了10就不正常了,服务器的状态很危险。top的负载类似每秒的运行队列。如果运行队列过大,表示你的CPU很繁忙,一般会造成CPU使用率很高。
b 表示阻塞的进程
swpd 虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了
free 空闲的物理内存的大小
us 用户CPU时间
sy 系统CPU时间
id 空闲 CPU时间,一般来说,id + us + sy = 100,一般我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率
iostat命令
iostat命令主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。
入门使用:
iostat -d -k 1 2
参数 -d 表示,显示设备(磁盘)使用状态;-k某些使用block为单位的列强制使用Kilobytes为单位;1表示数据显示每隔1秒刷新一次, 2是总共取2次的数据,是可选的。如果2没有填这个参数,则一直会每隔1秒进行刷新。
运行结果:
> iostat -d -k 1 1
Linux 2.6.32-504.el6.x86_64 (bjm6-191-106.58os.org) 2018年09月07日 _x86_64_ (8 CPU)
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 6.76 2.03 66.86 145694346 4789234140
tps:该设备每秒的传输次数。"一次传输"意思是"一次I/O请求"。多个逻辑请求可能会被合并为"一次I/O请求"。"一次传输"请求的大小是未知的。
kB_read/s:每秒从设备(drive expressed)读取的数据量;
kB_wrtn/s:每秒向设备(drive expressed)写入的数据量;
kB_read:读取的总数据量;
kB_wrtn:写入的总数量数据量;这些单位都为Kilobytes。
free命令
> free
total used free shared buffers cached
Mem: 28726748 27418708 1308040 1180 327952 18413396
-/+ buffers/cache: 8677360 20049388
Swap: 32767996 1874084 30893912
Shared:多个进程共享的内存总额
Buffers/cached:磁盘缓存的大小
第三行(-/+ buffers/cached):
used:已使用多大。
free:可用有多少。
从应用程序的角度来说,可用内存=系统free memory+buffers+cached