我有一台服务器运行一些代码,这些代码在一个目录中创建了数百万个小文件。起初,代码运行得非常快。大约一天后,它开始变慢了不少。我试图弄清楚这是代码的问题,还是目录中的文件数量的问题。
如果不存在文件,代码本身会创建一个文件,然后打开该文件并向其中写入一行。如果文件存在,它将打开该文件并向其中附加一行。
话虽如此,我一直在对我的代码进行基准测试并根据需要进行更改,但我还想对 XFS 进行基准测试,看看这是否是瓶颈。我的问题是,如何对 XFS 的读/写性能进行基准测试?
答案1
从您的应用程序开始并了解其性能。
- 向您的代码添加检测,这样您就可以测量任务需要多长时间。
- 监控主机操作系统指标,例如 CPU 和存储 IOPS。
- 文件系统和块设备响应时间与动态跟踪类似
xfsslower
和bioslower
- 使用类似工具捕获配置文件,
perf record
这样您就可以通过火焰图可视化查看 CPU 上的热点。尝试使用内核和用户程序的调试符号。
通常,在一个目录中放置数百万个文件不是一个好主意。即使支持,您也会获得巨大的目录元数据,需要很长时间才能列出。考虑一下您的应用程序制作的目录结构将每个目录的文件限制为几千个。