一、性能指标

二、文件系统I/O性能指标

1、存储空间的使用情况

文件系统向外展示的空间使用,而非磁盘空间的真是用量,因为文件系统的元数据也会占用磁盘空间

2、索引节点的使用情况

如果存储过多的小文件、就可能碰到索引节点容量已满的问题

3、缓存使用情况

如果存储过多的小文件、就可能碰到索引节点容量已满的问题,从而可以减少访问慢速磁盘的次数

4、文件IO

三、磁盘I/O性能指标

四、性能工具

1、文件系统原理

2、磁盘I/O原理

3、狂打日志案例

4、磁盘I/O延迟的单词热度案例

5、MYSQL的案例

6、redis的案例

五、性能指标和工具的联系

第一个维度、从文件系统和磁盘 I/O 的性能指标出发。换句话说,当你想查看某个性能指标时,要清楚知道,哪些工具可以做到

根据指标找工具

第二个维度,从工具出发。也就是当你已经安装了某个工具后,要知道这个工具能提供哪些指标

根据指标找工具

根据指标招工

六、如何迅速分析 I/O 的性能瓶颈

那有没有什么方法,可以又快又准地找出系统的 I/O 瓶颈呢?

还是那句话,找关联。多种性能指标间都有一定的关联性,不要完全孤立的看待他们。想弄清楚性能指标的关联性,
就要通晓每种性能指标的工作原理。这也是为什么我在介绍每个性能指标时,都要穿插讲解相关的系统原理,再次希望你能记住这一点。

1、先用 iostat 发现磁盘 I/O 性能瓶颈;
2、再借助 pidstat ,定位出导致瓶颈的进程;
3、随后分析进程的 I/O 行为;
4、最后,结合应用程序的原理,分析这些 I/O 的来源。

所以,为了缩小排查范围,我通常会先运行那几个支持指标较多的工具,如 iostat、vmstat、pidstat 等。然后再根据观察到的现象,结合系统和应用程序的原理,寻找下一
步的分析方向。我把这个过程画成了一张图,你可以保存下来参考使用。

图中列出了最常用的几个文件系统和磁盘 I/O 性能分析工具,以及相应的分析流程,箭头则表示分析方向。这其中,iostat、vmstat、pidstat 是最核心的几个性能工具,它们也提
供了最重要的 I/O 性能指标。举几个例子你可能更容易理解。

例如,在前面讲过的 MySQL 和 Redis 案例中,我们就是通过 iostat 确认磁盘出现 I/O性能瓶颈,然后用 pidstat 找出 I/O 最大的进程,接着借助 strace 找出该进程正在读写的
文件,最后结合应用程序的原理,找出大量 I/O 的原因。

再如,当你用 iostat 发现磁盘有 I/O 性能瓶颈后,再用 pidstat 和 vmstat 检查,可能会发现 I/O 来自内核线程,如 Swap 使用大量升高。这种情况下,你就得进行内存分析了,
先找出占用大量内存的进程,再设法减少内存的使用。

另外注意,我在这个图中只列出了最核心的几个性能工具,并没有列出前面表格中的所有工具。这么做,一方面是不想用大量的工具列表吓到你。在学习之初就接触所有核心或小
众的工具,不见得是好事。另一方面,也是希望你能先把重心放在核心工具上,毕竟熟练掌握它们,就可以解决大多数问题。

所以,你可以保存下这张图,作为文件系统和磁盘 I/O 性能分析的思路图谱。从最核心的这几个工具开始,通过我提供的那些案例,自己在真实环境里实践,拿下它们。

七、小结

今天,我们一起复习了常见的文件系统和磁盘 I/O 性能指标,梳理了常见的 I/O 性能观测工具,并建立了性能指标和工具的关联。最后,我们还总结了快速分析 I/O 性能问题的思路。

还是那句话,虽然 I/O 的性能指标很多,相应的性能分析工具也有不少,但熟悉了各指标含义后,你就会自然找到它们的关联。顺着这个思路往下走,掌握常用的分析套路也并不难。

最新文章

  1. 联合体(union)的使用方法及其本质
  2. Selenium Chrome浏览器的启动以及proxy设置
  3. Unity3d Asset Server启动问题
  4. WinForm开发浏览器,WebBrowser获取页面内容,如何解决中文乱码
  5. Scene is unreachable due to lack of entry points and does not have an identifier for runtime access
  6. My advice to young people - Donald Knuth [video]
  7. GDAL1.11版本号对SHP文件索引加速測试
  8. Oracle字符编码
  9. [HAOI2006]受欢迎的牛
  10. 个人作业2-英语学习案例app分析
  11. pygame 弹力球及其变速的实现
  12. 芝麻HTTP:
  13. 前端之CSS内容
  14. mac终端命令及pycharm常用快捷键记录
  15. Jenkins配置从节点
  16. 如何发起、防御和测试XSS攻击,我们用DVWA来学习(下)
  17. python bif
  18. 20、collections模块和re模块(正则表达式详解)
  19. python实现的椭圆曲线加密
  20. usaco 校园网

热门文章

  1. pytorch_13_pytorch 中tensor,numpy,PIL的转换
  2. CodeForce 176C Playing with Superglue
  3. 排障利器之远程调试与监控 --jmx & remote debug
  4. App_Code下类无法引用问题
  5. C 函数指针、回调函数
  6. js、jquery、css属性及出错集合
  7. Java生鲜电商平台-商品价格的设计与架构
  8. js 设计模式——策略模式
  9. affine_trans_pixel 和 affine_trans_point_2d的区别
  10. A dependency may only have one source