符号链接到 ramdisk 后,I/O 密集型操作的性能没有提高

Mat*_*ark 7 linux performance ramdisk symbolic-link io

我们有一个系统可以转换一组数千多 MB 的文件。在转换的每一步之后,它都会将中间文件写入磁盘。这个概念类似于暂存盘。

我们有在 RAID 6 中运行的高性能 SAS 驱动器,但由于 RAM 和 CPU 都没有受到太大影响,我怀疑我们的瓶颈之一实际上是将中间文件写入暂存目录。

我们在这些系统上有很多 RAM,而 RHEL 开箱即用,带有一个 RAM 驱动器 /dev/shm。因此,作为快速测试,我删除了临时目录,并将其符号链接到 ram 驱动器中的目录。性能是一样的还是稍微差一点?如何?

去磁盘获取符号链接是否会以某种方式否定 ramdisk 的性能优势?

我在某些场景中对此进行了测试,我知道我们接触了超过 10GB 的数据(java vm 的最大值),因此它不应该被缓存。

我在这里缺少什么?

Dav*_*rtz 7

您缺少的是文件写入几乎总是非阻塞的。只要操作系统有足够的内存,文件写入只会写入内存。操作系统会将这些写入刷新到磁盘,因为它有这样做的资源。由于您有大量 RAM、正在写入小文件并且拥有快速磁盘,因此您的应用程序可能几乎不需要等待写入完成。

作为一个完整的猜测,我认为您实际上受到应用程序架构的限制。您说 CPU 不会受到太大影响,但这可能意味着您的应用程序过于粗糙,无法利用 CPU 的大部分资源。例如,如果您的 CPU 有 8 个内核,但您的应用程序架构是单进程、单线程,则它只能使用一个内核。