性能测试之存储解析
对于大多数存储应用来说分为快速存储的内存和低速的硬盘
对于linux中,当一个进程启动后,首先执行cpu cache和memory,弱没有则进入低速硬盘查找
需要说明一下,对于linux中磁盘提高速度可以修改block和page size来提高速度
当然最简单的可以修改文件系统,例如ext3 ext2 reiserfs xfs jfs
若有对于文件存储系统则修改多个文件系统或者参数来确定性能
若检测某个写入文件则可以通过time命令来诊断cpu、内存、磁盘和内存读取了多少页数据、swap最主要的文件系统读写性能。
若监测磁盘io可以使用vmstat iostat结合去看随机或者顺序读取磁盘的效率。
vmstat可对操作系统的虚拟内存、进程、CPU活动进行监视。不足之处是无法对某个进程进行深入分析
这里只需要关注,memony首先系统会先使用free 然后在调用swap,需要关注是否会导致swap使用过大。
需要查看bi和bo这里是从块设备读入、写入数据的总量
结合iostat关注unitl(一秒中有百分之多少的时间用于I/O操作) await(平均每次设备I/O操作的等待时间)
svctm(平均每次设备I/O操作的服务时间)三个参数
如果until长时间100%说明存储有瓶颈了,需要降低或者使用内存来处理。
svctm 一般要小于 await (因为同时等待的请求的等待时间被重复计算了),svctm 的大小一般和磁盘性能有关,CPU/内存的负荷也会对其有影响,请求过多也会间接导致 svctm 的增加。
await 的大小一般取决于服务时间(svctm) 以及 I/O 队列的长度和 I/O 请求的发出模式。如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;
如果 await 远大于 svctm,说明 I/O 队列太长,应用得到的响应时间变慢,如果响应时间超过了用户可以容许的范围,这时可以考虑更换更快的磁盘,调整内核 elevator 算法,优化应用,或者升级 CPU。
队列长度(avgqu-sz)也可作为衡量系统 I/O 负荷的指标,但由于 avgqu-sz 是按照单位时间的平均值,所以不能反映瞬间的 I/O 洪水。