RAMdisk 和有限元计算

计算科学 有限元 表现
2021-11-29 21:31:21

几年前我听说过Ramdisks ,甚至设置了一个用于在 mymachine 上进行测试。我没有彻底测试它,所以我无法真正判断性能改进(与普通 SSD 相比)。

Ramdisk 是您工作内存的一小部分,被分配给逻辑(软件)磁盘。因此,您可以将它们作为附加驱动器访问、放置文件和程序,以及在它们上运行模拟。

程序无论如何都会缓存在 RAM 中,但是很多程序会写入文件,在其中存储它们的网格数据、中间结果等。根据程序的内部结构,改进是可能的。在我的情况下,用于有限元计算。我使用的工具是作为科学项目创建的(并且大部分是维护的),因此可能缺少许多优化。我知道可能的数据丢失,这是可以接受的,尽管必须考虑。

使用 ramdisk 有什么好处吗?有没有人尝试过使用 ramdisk 进行计算,是否有任何值得(工作/奖励)的改进?在某些情况下使用它们是有意义的吗?

2个回答

现代高性能计算架构上真正高效的程序需要仔细设计算法和数据结构,以利用完整的内存层次结构(更不用说并行编程问题,你可能有多个线程、多个进程、SMP、NUMA、多个互连节点......)

如果您的问题被改写为

一个遗留程序,当核外存储是由主内存限制驱动的选择时编写的,是否会从将其暂存文件移动到 ramdisk 中受益?

我会回答说,唯一知道的方法是通过实验。但正如基里尔已经指出的那样,我不希望有显着的改进,因为几乎每个现代操作系统都会缓存磁盘访问。

在 *nix 世界中,您应该检查tmpfs的概念,它只需几行就可以实现,并且比普通的ramdisk/etc/fstab灵活得多例如,参见linux 内核的tmpfs.txt中的讨论。

大多数现代操作系统已经在主内存中缓存读取和写入文件,因此使用 RAM 磁盘不会获得任何好处——它只是数据缓存的另一层,不会比缓存操作系统为您保留的缓存。另一方面,您正在放弃大量无法再用于计算的内存。

唯一有意义的地方是您正在处理的文件系统是否是网络文件系统(例如,NFS-mounted)。在这种情况下,诸如链接具有大量随机访问文件的可执行文件之类的操作会变得非常慢,因为它们往往需要在您所在的机器和文件服务器之间频繁同步(这可能会更新磁盘上的文件,或者只是将其副本保存在缓存中)。这种通过网络进行的同步是昂贵的,应该尽量避免它。您可以通过在本地磁盘(例如,在/tmp文件系统中)或 RAM 磁盘上工作来避免这种情况。