操作系统性能分析介绍
我们开发的程序,基本上都是基于操作系统来执行的,操作系统统筹管理着计算机的各个硬件资源和软件运行的情况,所以我们开发的应用程序的性能,最直接的反馈就是在计算机的硬件运行情况上反应出来。
从用户的角度看,他们其实不在乎运用程序是怎样运行的,对他们来说就是一个黑盒,他们只知道,只要输入账号密码就能够登录系统,在购票系统里面,输入乘客信息,就可以购买了,具体架构实现如何是不关心的。而他们关心的是,我是否能够正常进入系统,成功买到票,在用这个系统的时候,好不好用,能否快速地响应。
在这里主要就是响应的时间,对于这个系统来说,一个是服务器内部逻辑运算处理的时间,另外一个是网络传输的时间,可以总结为以下公式:
用户响应时间 = 服务器响应时间 + 网络时间
系统性能分析思路
对系统性能进行分析,我们首先得了解这个系统的架构,资源的去向,在哪个地方可能出现性能瓶颈,通常分为这几块分析:
- 整体系统CPU利用率
- 一般期望平均可用CPU>20%
- CPU的主频,cache 大小、是否支持超线程
- 内存利用率
- 内存太小,系统进程会被阻塞,应用变慢,失去响应,OOM被kill
- 太大了浪费
- 虚拟内存的大小
- 磁盘I/O的利用率和延迟
- IO的TPS
- 平均IO数据
- 平均队列长度
- 平均服务时间
- 平均等待时间
- IO利用率
- 网络利用率
- 网络带宽限制
- 响应时间
- 网络延迟
- 阻塞
- 网络是否可达
- 防火墙是否开启
- 端口访问
- 路由寻址
系统应用类型基本上可以分为两类:
- IO Bound(IO 范畴)
- 大量数据处理
- 不对CPU以及网络发起更多的请求
- CPU Bound (CPU 范畴)
- 批量处理CPU请求及计算过程
分析思路,自顶向下,由应用程序往下分析;另一种是由底向上,从操作系统资源往上分析到应用程序:
CPU定位分析
内存定位分析
网络定位分析
IO定位分析
我们可以通过uptime、top、w,htop,dstat, nmon, glances等命令显示系统负载情况
top 进程状态间的切换和轮转
Windows 系统性能监控
1. 通过命令行 输入perfmon 打开
2. 启动资源监视器