我应该为转换和删除的图片使用ram磁盘吗?



我在这里有一个小程序(python 2.7),它运行在一台旧机器上,它基本上通过运行外部二进制文件来获取图片(对于时间间隔),并将它们转换为有效的格式以节省磁盘空间。

我想尽量减少磁盘操作,因为它已经很老了,我希望它能持续更长的时间。

此时程序将相机的数据写入磁盘,然后将其转换并删除原始数据。然而,它对每个图像都这样做,1-它在磁盘上写入一个大文件,2-读取它以转换,3-然后删除它…一堆不必要的磁盘操作,可以在ram中完成,因为原始文件不需要存储,只用作创建另一个文件的基础。

我确信ramdisk是解决方案,然后我在谷歌上搜索如何做到这一点,谷歌返回给我一堆不鼓励使用ramdisk的链接,原因有很多:因为它们在现代系统中没有用(我正在运行一个相当新的linux内核);只有当你想解密不应该出现在磁盘上的数据时,才应该使用它们;一些测试表明,ramdisk实际上可能比hd慢;操作系统有缓存…

所以我很困惑…

在这种情况下,我应该使用ramdisk吗?

谢谢。

PS:如果你想要更多的信息:我有一个专有的高分辨率相机,以及一个专有的二进制文件,我运行它来捕获单个图像,我可以指定它将在哪里写入文件,这是一个巨大的TIFF文件,然后python程序运行转换程序从imagemagick将其转换为JPEG,然后在tar中压缩它。bz2,所以质量几乎相同,但文件大小是TIFF的1/50。

我使用磁盘的经验与您在这里提到的是一致的。当我迁移到它们时,我失去了性能,因为内核可用的内存更少,它可以智能地缓存,这把事情搞砸了。

然而,从你的问题中,我明白你想优化磁盘操作的数量而不是速度,在这种情况下,RAM磁盘可能是有意义的。对于大多数这类问题,监控是正确的方法。

另一件让我震惊的事情是,如果你的原始映像不是那么大,你可能想买一个便宜的u盘,在它上做I/O,而不是在你的主驱动器上。这不是一个选择吗?

啊,只提供某些选项的专有二进制文件。耶。最简单的解决方案就是增加一个固态硬盘。您仍然需要将数据保存到磁盘,但是磁盘IO的读写量要高得多。

一个更好的解决方案是将tiff输出到标准输出,可能是另一种格式,然后将其输送到python程序。它永远不会击中硬盘驱动器,但这将是更多的工作。当然,如果二进制文件不允许这样做,那么它就没有意义了。

如果在Debian(及其衍生版本)上,使用"/run/shm"目录

最新更新