IO子系统一般是linux系统中最慢的部分。一个原因是它距离CPU的距离,另一个原因是它的物理结构。访问磁盘的时间与访问内存的时间是7天与7分钟的区别。linux kernel要尽量减少磁盘IO。
linux内核以page为单位访问磁盘IO,一般为4K。
查看页大小:/usr/bin/time -v date
Page size (bytes): 4096
linux会将内存物理地址空间映射到虚拟内存,内核仅会映射需要的内存页。当应用启动时,内核依次搜索CPU cache和物理内存,查找是否有相应的内存页,如果不存在,则内核将会发起一次MPF(major page fault),将磁盘中的数据读出并缓存到内存中。
如果在buffer cache找到了对应的内存页,则将会产生一个MnPF(minor page fault).
/usr/bin/time -v helloworld
第一次执行会发现大部分是MPF
第二次执行会发现大部分是MnPF
file buffer cache用来减少MPF,增加MnPF,它将会持续增长,直到可用内存比较少或是内核需要为其它应用来释放一些内存。free内存比较少,并不能说明系统内存紧张,只能说明linux系统充分使用内存来做cache.
cat /proc/meminfo
MemTotal: 24730888 kB
总内存
MemFree: 2633168 kB
空闲内存
Buffers: 2191776 kB
写buffer(这里有问题吧,应该是block cache吧)
Cached: 15879728 kB 读cache
read pages: 只读的页,并且在磁盘中有对应文件,一般是静态文件,二进制文件,库。当内存短缺时,这些页可以直接丢弃,放到free list.
dirty pages: 在内存中被修改的页,需要使用pdflush/kswapd刷回磁盘。
anonymous pages: 属于某个进程的内存,但在磁盘中没有对应的文件,当内存短缺时,要写到swap
可以使用fsync()或是sync()立即写回,如果没有直接调用这些函数,pdflush会定期刷回磁盘。
top,vmstat,iostat,sar
10万转速的磁盘,一般的响应时间是8ms,可以达到120~150IOPS.
## 8.iotop可以显示所有应用的IO占用情况
一旦CPU在等待IO,说明磁盘负载过重
计算磁盘可以承受的IOPS
顺序IO与随机IO
监控慢盘的等待时间和服务时间
监控swap
来源链接:http://www.trueeyu.com/?p=1761 网摘文章,如有问题,请联系我们