linux系统性能监控与优化(4)–IO

IO子系统一般是linux系统中最慢的部分。一个原因是它距离CPU的距离,另一个原因是它的物理结构。访问磁盘的时间与访问内存的时间是7天与7分钟的区别。linux kernel要尽量减少磁盘IO。

1.Reading and Writing Data linux内核以page为单位访问磁盘IO,一般为4K。 查看页大小:/usr/bin/time -v date Page size (bytes): 4096

2.Major and Minor Page Faults linux会将内存物理地址空间映射到虚拟内存,内核仅会映射需要的内存页。当应用启动时,内核依次搜索CPU cache和物理内存,查找是否有相应的内存页,如果不存在,则内核将会发起一次MPF(major page fault),将磁盘中的数据读出并缓存到内存中。 如果在buffer cache找到了对应的内存页,则将会产生一个MnPF(minor page fault). /usr/bin/time -v helloworld 第一次执行会发现大部分是MPF 第二次执行会发现大部分是MnPF

3.The File Buffer Cache 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

4.内存页的类型 read pages: 只读的页,并且在磁盘中有对应文件,一般是静态文件,二进制文件,库。当内存短缺时,这些页可以直接丢弃,放到free list. dirty pages: 在内存中被修改的页,需要使用pdflush/kswapd刷回磁盘。 anonymous pages: 属于某个进程的内存,但在磁盘中没有对应的文件,当内存短缺时,要写到swap

5.将数据页写回磁盘 可以使用fsync()或是sync()立即写回,如果没有直接调用这些函数,pdflush会定期刷回磁盘。

6.监控IO的工具 top,vmstat,iostat,sar 10万转速的磁盘,一般的响应时间是8ms,可以达到120~150IOPS.

7.顺序IO与随机IO 8.iotop可以显示所有应用的IO占用情况

9.总结 一旦CPU在等待IO,说明磁盘负载过重 计算磁盘可以承受的IOPS 顺序IO与随机IO 监控慢盘的等待时间和服务时间 监控swap

linux系统性能监控与优化(4)–IO

相关文章:

你感兴趣的文章:

标签云: