0

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

我想最小化磁盘操作,因为它已经很老了,我希望它能持续一段时间。

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

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

所以我很困惑...

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

谢谢你。

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

4

3 回答 3

2

我对 ramdisk 的体验与您在此处提到的一致。当我转移到它们时,我失去了性能,因为内核可用的内存更少,无法智能地缓存,这把事情搞砸了。

但是,根据您的问题,我了解到您希望优化磁盘操作的数量而不是速度,在这种情况下,RAM 磁盘可能有意义。与大多数此类问题一样,监控是解决问题的正确方法。

让我印象深刻的另一件事是,如果您的原始图像不是那么大,您可能想购买一个便宜的 U 盘并在其上而不是在您的主驱动器上进行 I/O。这不是一个选择吗?

于 2011-11-28T16:25:19.380 回答
0

啊,仅提供某些选项的专有二进制文件。耶。最简单的解决方案是添加固态硬盘。您仍将保存到磁盘,但磁盘 IO 用于读写会高得多。

一个更好的解决方案是将 tiff 输出到标准输出,可能采用不同的格式,并将其通过管道传输到您的 python 程序。它根本不会撞到硬盘,但它会做更多的工作。当然,如果二进制文件不允许你这样做,那就没有意义了。

于 2011-11-28T16:38:25.377 回答
0

如果在 Debian(可能还有其衍生产品)上,请使用“/run/shm”目录。

于 2014-06-12T09:34:52.507 回答