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
评论