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

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

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

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

这些系统上有大量 RAM,RHEL 出厂时带有 RAM 驱动器 /dev/shm。因此,为了进行快速测试,我删除了暂存目录,并将其符号链接到 RAM 驱动器中的目录。性能相同还是略差?为什么?

进入磁盘来获取符号链接是否会以某种方式抵消 ramdisk 的性能优势?

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

我在这里遗漏了什么?

答案1

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

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

相关内容