因此,在运行 Ubuntu 12.04 的 Linux 服务器上,我有一个文件夹,里面有大约 3000 个文件夹,每个文件夹中包含大约 3000 个文本文件。总共占用大约 80 GB。
因此,每当我进入这些文件夹时,系统就开始变得非常慢。系统是 Xeon E5-2620,带 64 GB RAM,硬盘是基本的 7200 RPM Seagate HDD(不记得它是否是 SATA 3.0)。
我目前还在删除这些文件,因为它们需要重新生成。rm 过程相当慢,但是我只是运行多线程 rm -rf,因此可能会有所改进。
你们有什么建议可以加快速度吗?谢谢
答案1
速度会比较慢。如果文件数量很多,运行 ls 时,需要获取文件的所有 inode 并将其载入内存。此外,所有文件都将在其 dentry 列表中遍历一条路径。内核也会缓存此信息。因此,当您第一次运行 ls 时,速度肯定会很慢。
一个非常简单的诊断方法是从一个选项卡对新目录运行 ls,然后转到另一个选项卡并运行slabtop -o
。这将显示 ext4 的缓存和 dentry slab 使用率增加。一旦缓存,后续对同一目录的 ls 耗时将减少。
您能做的唯一改进是获取更强大的磁盘或对数据进行条带化。这样就需要进行更少的磁盘寻道,从而提高性能。