4.1 I/O性能监控简介
磁盘I/O子系统是Linux系统中最慢的部分,这个主要归于CPU到物理操作磁盘之间的距离;如果那读取磁盘和读取内存的时间进行比较好比 7天和7分钟的区别;因此,Linxu内核就是要最低程度的降低I/O数。
1. buffer和cache的作用
当一个进程启动时,内核会先扫描caches和内存中有没有进程需要的数据,如果有就直接用,修改后在把脏页同步到磁盘即可。如果没有,则需要把磁盘的数先写到内存中的高速缓存中cache,这样能减少CPU等待时间,提高效率。
buffer、cache都是把磁盘数据写到内存中时用的,说白了他们俩都是内存的一部分;不过cache是高速缓存是把进程用的数据写到cache来减少cpu读取数据时间的;而buffer是当从磁盘中读取很长的数据,首先读入的一部分要放在buffer暂时存放,读完后一起使用;所以在cache占用的内存比较大时不能说系统性能差
2. 内存页的分类(type of memory pages)
(1) Read Pages 只读内存页,在buffer和cache中,进程不能修改
(2) Dirty Pages 脏页,这些页是在内核中已经被修改的数据页,要同步到磁盘
(3) Anonymous Pages 属于某一个进程,没有任何磁盘和他们相关,如果内存不足,kswapd进程将他们写入swap来释放内存空间
4.2 I/O监控
1. 每个I/O请求到磁盘都需要若干时间,主要因为磁盘的盘边必须旋转,机头必须寻到(从硬盘读写时,硬盘指示灯会一直闪)
Input/Output Operations Per Second 即每秒进行读写操作的次数,是衡量I/O性能的标准
2. 当cpu的 wa比较大时,说明CPU在等待I/O操作,说明磁盘处于超负荷状态
监控swap和系统分区,确保virtual memory不是文件系统的I/O瓶颈
5. 1 cpu sys 说明系统本身的调用占用的cpu比较高,这个cpu sys 比较高,一般是有大量的io操作;disk read disk writte;
数据加载到内存中可以用lock把数据锁住,这样再我们的内存不够需要交换出一部分数据到磁盘时,就不会把lock的数据交换出去;
否则会交换出去,然后下次用时需要重新read到内存中。这样会影响服务的latency、io