负载特征

  • 操作频率和类型
  • IO吞吐量
  • IO大小分布
  • 读写比例
  • 同步写比例
  • 随机和连续访问比例

静态性能调优

  • 文件系统记录的大小是多少
  • 是否开启了访问时间戳,还启用了哪些文件系统选项(压缩、加密)等
  • 文件系统的缓存是怎么配置,最大缓存大小是多少
  • 是否用了RAID
  • 用的是什么文件系统

尝试回答上面这些问题可以暴露一些容易被忽视的配置问题

性能检测

延时和操作频率
一个1字节的写入操作可能会产生多次磁盘的读和写,比如:

文件系统定位这个地址对应的128KB记录块,发现它未在缓存中
文件系统请求从磁盘加载那个记录块
磁盘进行了多次较小的IO读操作,一共读取128KB
文件系统把要写入的那个字节替换成新的数据
文件系统请求把128K的脏记录写到磁盘
磁盘写入128KB,可能还会分拆成多次写请求
文件系统写入新的元数据,比如访问时间

  • 操作并不平等
    比如每秒500次的IO操作负载性能如何,我们无法判断。影响性能的关键因素还包括:随机IO还是顺序IO、读取还是写入、同步写还是异步写、IO的大小等等

  • 应用程序与文件系统延迟
    比如一个程序执行一个事务花了200ms,其中180ms是在等待IO,程序程序被文件系统阻塞的时间为100 *(180/200) = 90%,假设我们解决文件系统IO等待,性能可以提升90%

  • 正确的描述一个文件系统负载 xx应用给文件系统产生了随机读负载,频率为180000/s次读,平均读大小是4KB,总操作频率是210000/s次,包括读取、统计、打开、关闭和每秒200次的同步写入,写评论相对于读较为稳定,高峰期读取能达到每秒40000次

观测工具

原生工具

mount

查看mount命令输出中,磁盘的挂载选项 比如relatime是一个提高性能的选项,只有在修改或则更新的时间距离上次时间超过一天时才触发更新,从而减少inode访问时间的更新,降低磁盘的IO开销

sar

sar -v 1

  • dentunusd 目录项缓存未用计数
  • file-nr 使用中的文件句柄数量
  • inode-nr 使用中的inode数量
  • pty-nr 使用的伪终端个数

BCC工具

opensnoop

opensoop -T

  • -T时间戳
  • -x 只显示失败的打开事件
  • -p PID 仅仅跟踪这个进程
  • -n 筛选进程名

    cachestat

    cachestat -T 1 显示内存命中率

ext4dist

extdist 10 1 10秒间隔和一次计数来展示一次10秒的跟踪,显示每种类型操作的延迟分布

Copyright © 运维知识库 all right reserved,powered by Gitbook文件修订时间: 2023-09-19 10:45:38

results matching ""

    No results matching ""