专栏首页北京马哥教育linux系统性能监控与优化(4)–IO

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

来源链接:http://www.trueeyu.com/?p=1761 网摘文章,如有问题,请联系我们

本文分享自微信公众号 - 马哥Linux运维(magedu-Linux),作者:小鳄

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-10-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • LINUX上MYSQL优化三板斧

    云豆贴心提醒,本文阅读时间7分钟 现在MySQL运行的大部分环境都是在Linux上的,如何在Linux操作系统上根据MySQL进行优化,我们这里给出一些通用简...

    小小科
  • 77%的Linux运维都不懂的内核问题

    小小科
  • Linux内存被吃掉了,它去哪里了?

    在Windows下资源管理器查看内存使用的情况,如果使用率达到80%以上,再运行大程序就能感觉到系统不流畅了,因为在内存紧缺的情况下使用交换分区,频繁地从磁盘上...

    小小科
  • LINUX上MYSQL优化三板斧

    云豆贴心提醒,本文阅读时间7分钟 现在MySQL运行的大部分环境都是在Linux上的,如何在Linux操作系统上根据MySQL进行优化,我们这里给出一些通用简...

    小小科
  • 【LINUX内核】内存管理

    _count:页的引用计数器。如果该字段为-1,则相应页框空闲,并可分配给任一进程或内核本身;如果该字段的值大于或等于0,则说明页框分配给一个或多个进程,或用于...

    心跳包
  • 如何通过Smem命令行检查Ubuntu上的内存使用情况

    如何检查Ubuntu Linux上的内存使用情况,我们可以安装并使用Smem内存报告工具来显示Ubutnu Linux系统上的内存使用情况。 Smem是一个命令...

    企鹅号小编
  • cgroup其他部分 IO + hugepage

    cgroup还有其他一些限制特性,如io,pid,hugetlb等,这些用处不多,参见Cgroupv1。下面介绍下与系统性能相关的io和hugepage,cgr...

    charlieroro
  • [MySQL] mysql地理位置服务geometry字段类型

    这个字段类型是mysql5.7新增的功能,主要就是解决坐标存储和距离计算的常见问题

    陶士涵
  • 系统通知,居然有人使用拉取?

    广义系统通知,有1对1的通知,以及一对多的通知,有相对实时的业务通知,以及能够容忍一定延时的系统通知。结合具体的场景来看下,这样的一些系统通知,究竟是推还是拉?

    架构师之路
  • CodeSmith 创建Ado.Net自定义模版(四)

    CodeSmith 创建Ado.Net自定义模版(四) 接上一篇:    CodeSmith 创建Ado.Net自定义模版(三) 编写业务逻辑层的模版:Step...

    Porschev

扫码关注云+社区

领取腾讯云代金券