文件系统向外展现的空间使用,而非磁盘空间的真是用量,由于文件系统的元数据也会占用磁盘空间ios
若是存储过多的小文件、就可能碰到索引节点容量已满的问题redis
若是存储过多的小文件、就可能碰到索引节点容量已满的问题,从而能够减小访问慢速磁盘的次数缓存
第一个维度、从文件系统和磁盘 I/O 的性能指标出发。换句话说,当你想查看某个性能指标时,要清楚知道,哪些工具能够作到工具
第二个维度,从工具出发。也就是当你已经安装了某个工具后,要知道这个工具能提供哪些指标性能
根据指标招工学习
仍是那句话,找关联。多种性能指标间都有必定的关联性,不要彻底孤立的看待他们。想弄清楚性能指标的关联性,
就要通晓每种性能指标的工做原理。这也是为何我在介绍每一个性能指标时,都要穿插讲解相关的系统原理,再次但愿你能记住这一点。spa
一、先用 iostat 发现磁盘 I/O 性能瓶颈;
二、再借助 pidstat ,定位出致使瓶颈的进程;
三、随后分析进程的 I/O 行为;
四、最后,结合应用程序的原理,分析这些 I/O 的来源。线程
因此,为了缩小排查范围,我一般会先运行那几个支持指标较多的工具,如 iostat、vmstat、pidstat 等。而后再根据观察到的现象,结合系统和应用程序的原理,寻找下一
步的分析方向。我把这个过程画成了一张图,你能够保存下来参考使用。3d
图中列出了最经常使用的几个文件系统和磁盘 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 的性能指标不少,相应的性能分析工具也有很多,但熟悉了各指标含义后,你就会天然找到它们的关联。顺着这个思路往下走,掌握经常使用的分析套路也并不难。