Linux性能优化实战学习笔记:第三十讲
一、性能指标
二、文件系统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 的性能指标很多,相应的性能分析工具也有不少,但熟悉了各指标含义后,你就会自然找到它们的关联。顺着这个思路往下走,掌握常用的分析套路也并不难。
最新文章
- 联合体(union)的使用方法及其本质
- Selenium Chrome浏览器的启动以及proxy设置
- Unity3d Asset Server启动问题
- WinForm开发浏览器,WebBrowser获取页面内容,如何解决中文乱码
- Scene is unreachable due to lack of entry points and does not have an identifier for runtime access
- My advice to young people - Donald Knuth [video]
- GDAL1.11版本号对SHP文件索引加速測试
- Oracle字符编码
- [HAOI2006]受欢迎的牛
- 个人作业2-英语学习案例app分析
- pygame 弹力球及其变速的实现
- 芝麻HTTP:
- 前端之CSS内容
- mac终端命令及pycharm常用快捷键记录
- Jenkins配置从节点
- 如何发起、防御和测试XSS攻击,我们用DVWA来学习(下)
- python bif
- 20、collections模块和re模块(正则表达式详解)
- python实现的椭圆曲线加密
- usaco 校园网
热门文章
- pytorch_13_pytorch 中tensor,numpy,PIL的转换
- CodeForce 176C Playing with Superglue
- 排障利器之远程调试与监控 --jmx &; remote debug
- App_Code下类无法引用问题
- C 函数指针、回调函数
- js、jquery、css属性及出错集合
- Java生鲜电商平台-商品价格的设计与架构
- js 设计模式——策略模式
- affine_trans_pixel 和 affine_trans_point_2d的区别
- A dependency may only have one source