有什么方法可以获取按某些参数分组的磁盘统计信息,例如:
按大小/延迟写入?按大小/延迟读取?
就像是:
total writes - 100
writes by size:
- < 4096 - 20
- 4096 - 16384 - 30
...
其中 4096/16384 是块大小。
答案1
使用 eBPF 按延迟进行分组:https://github.com/iovisor/bcc/blob/v0.9.0/tools/biolatency_example.txt
我不知道按大小分组。使用 eBPF 或 blktrace 绝对是可能的。 (我认为blktrace
管理费用略高)。
令人困惑的是,block/blk-stat.c
实现了某种延迟直方图。 (请参阅对“bucket”的引用。但是,它仅在内核内部的几个地方使用:无法从内核外部使用它。