代码拉取完成,页面将自动刷新
系统负载=正在运行的进程数+等待运行的进程数, 对于CPU load averages,可以将该值除以 CPU 数量,如果该比率超过1.0,则表示正在运行饱和
load averages有三个值,分别表示1分钟,5分钟,15分钟的系统平均负载
load averages值的一些解释:
如果平均值为 0.0,意味着系统处于空闲状态
如果 1min 平均值高于 5min 或 15min 平均值,则负载正在增加
如果 1min 平均值低于 5min 或 15min 平均值,则负载正在减少
如果它们高于系统 CPU 的数量,那么系统很可能会遇到性能问题(视情况而定)
观察工具
vmstat #虚拟内存和物理内存的统计
mpstat #每个CPU的使用情况
iostat #每个磁盘I/O的使用情况
netstat #网络接口的统计
star #各种各样的统计, 能归档历史数据
vmstat命令的使用
选项与参数:
-a #使用 inactive/active(活跃与否) 取代 buffer/cache 的内存输出信息;
-f #开机到目前为止,系统复制 (fork) 的程序数;
-s #将一些事件 (开机至目前为止) 导致的内存变化情况列表说明;
-S #后面可以接单位,让显示的数据有单位。例如 K/M 取代 Bytes 的容量;
-d #列出磁盘的读写总量统计表
-p #后面列出分区,可显示该分区的读写总量统计表
指标说明:
r #等待运行中的程序数量;
b #不可被唤醒的程序数量。r和b的值越大项目越,代表系统越忙碌
swpd #虚拟内存被使用的容量;
free #未被使用的内存容量;
buff #用于缓冲内存;
cache #用于高速缓存内存
si #由磁盘中将程序取出的量,
so #由于内存不足而将没用到的程序写入到磁盘的swap的容量
bi #由磁盘读入的区块数量;
bo #写入到磁盘去的区块数量。如果这部份的值越高,代表系统的 I/O 非常忙碌
in #每秒被中断的程序次数;
cs #每秒钟进行的事件切换次数;这两个数值越大,代表系统与周边设备的沟通非常频繁!
iostat命令的使用
使用示例:
iostat [-d] [-k] [device] [interval] [count]
选项与参数:
-d #只显示磁盘I/O的统计信息, 而不是默认信息, 默认信息中包含CPU使用情况
-k #按KB显示统计信息, 而不是按块显示
-x #显示扩展性能I/O统计信息
device #若指定设备,则只显示该设备信息
interval #采样间隔时间
count #获取样本总数
统计信息:
tps #每秒传输次数,该项为每秒对设备/分区读写的请求次数
kb_read/s #每秒读取磁盘的数据量,单位为K
kb_wrtn/s #每秒写入磁盘的数据量,单位为K
kb_read #在时间间隔内读取磁盘的数据总量
kb_wrtn #在时间间隔内写入磁盘的数据总量
Device #监测设备名称
rrqm/s #每秒需要读取需求的数量
wrqm/s #每秒需要写入需求的数量
r/s #每秒实际读取需求的数量
w/s #每秒实际写入需求的数量
rsec/s #每秒读取区段的数量
wsec/s #每秒写入区段的数量
rkB/s #每秒实际读取的大小,单位为KB
wkB/s #每秒实际写入的大小,单位为KB
avgrq-sz #需求的平均大小区段
avgqu-sz #需求的平均队列长度
await #等待I/O平均的时间(milliseconds)
svctm #I/O需求完成的平均时间
%util #被I/O需求消耗的CPU百分比
CPI 即 Cycle Per Instruction的缩写,表示每指令周期数,是一个很重要的指标, CPI较高代表CPU经常陷入停滞, 通常都是在访问内存,而较低的CPI则代表CPU基本没有停滞, 指令吞吐量较高, 这些指标指明了性能调优的主要方向
用户态时间/内核态时间
计算密集的应用程序几乎会把大量时间用在用户态代码上,这类例子有图像处理,基因组学和数据分析,I/O密集的程序系统调用频率较高, 通过执行内核代码进行I/O操作, 例如一个进行网络I/O的Web服务器
CPU性能分析方法
uptime #检查负载平均数,负载平均数超过了CPU数量通常代表CPU饱和
vmstat #每秒运行vmstat,检查(id)空闲列的值是否少于10%,少于10%可能是个问题
mpstat #检查单个热点(繁忙)CPU, 挑出一个可能的线程扩展性问题
top/prstat #看看那个进程和用户是CPU消耗大户
pidstat/prstat #把CPU消耗大户分解成用户和系统时间
perf/dtrace/stap/oprofile #从用户时间或者系统时间刨析CPU使用的堆栈跟踪, 以了解为什么使用这么多CPU
perf/cpustat #测量CPI
mpstat命令的使用
使用示例:
mpstat [-p (cpu|All)] [interval] [count]
选项与参数:
-p(cput|ALL) #告诉mpstat监控哪个CPU, CPU取值范围为0~(CPU总数-1)
interval #指明mpstat在采样之间应该等待的时长
count #采样的次数
指标说明:
user #在interval时间段里,消耗在用户态时间的百分比
nice #在interval时间段里,nice值为负进程的CPU时间(%)占比
system #在interval时间段里,消耗在内核态时间的百分比
iowait #在interval时间段里,等待I/O消耗时间的百分比
irq #处理软中断消耗时间的百分比
softirq #处理硬中断消耗时间的百分比
idle #CPU空闲时间百分比
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。