写点什么

Linux 性能优化实战 笔记 -IO 篇

用户头像
王传义
关注
发布于: 2020 年 07 月 02 日
Linux 性能优化实战 笔记-IO篇

主要来自下面专栏



基础篇:Linux 文件系统是怎么工作的?



命令



  • free 输出的 Cache,是页缓存和可回收 Slab 缓存的和

  • 具体Cache大小 cat /proc/meminfo | grep -E "SReclaimable|Cached"

  • man slabtop

slabtop - display kernel slab cache information

  • man slabinfo

cat /proc/slabinfo | grep -E '^#|dentry|inode'



理解三个缓存: 页缓存、目录项缓存以及索引节点缓存





文件系统和虚拟文件关系

  • 目录项、索引节点、逻辑块以及超级块,构成了 Linux 文件系统的四大基本要素

敲黑板:目录项本身就是一个内存缓存,而索引节点则是存储在磁盘中的数据

  • Linux 内核在用户进程和文件系统的中间,又引入了一个抽象层,也就是虚拟文件系统 VFS(Virtual File System)

  • 这些文件系统,要先挂载到 VFS 目录树中的某个子目录(称为挂载点),然后才能访问其中的文件



Linux 磁盘I/O是怎么工作的



命令

  • pidstat -d 1



思路与行动



文件系统、通用块层以及设备层,就构成了 Linux 的存储 I/O 栈。

存储系统的 I/O ,通常是整个系统中最慢的一环。



所以,Linux 采用多种缓存机制,来优化 I/O 的效率,

比方说,为了优化文件访问的性能,采用页缓存、索引节点缓存、目录项缓存等多种缓存机制,

减少对下层块设备的直接调用。



同样的,为了优化块设备的访问效率,使用缓冲区来缓存块设备的数据。



案例篇:为什么我的磁盘I/O延迟很高?



回顾:



再用 strace 和 lsof ,来定位应用程序以及它正在写入的日志文件路径。





问题描述:





分析:









一个SQL查询要15秒,这是怎么回事?





相关命令



  • pstree -t -a -p 27458

  • lsof -p 27458

  • docker exec -i -t mysql mysql

  • strace -f -p 27458





案例篇:Redis响应严重延迟,如何解决?





  • 命令

  • strace -f -T -tt -p 9085







用户头像

王传义

关注

希望每一位来访的朋友都能有所收获! 2017.11.30 加入

如果有疑问 wang_cyi@163.com 联系

评论

发布
暂无评论
Linux 性能优化实战 笔记-IO篇