我应该对转换和删除的图片使用 ramdisk 吗?

Posted

技术标签:

【中文标题】我应该对转换和删除的图片使用 ramdisk 吗?【英文标题】:Should I use a ramdisk for pictures that are converted and removed? 【发布时间】:2011-11-28 15:51:31 【问题描述】:

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

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

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

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

所以我很困惑......

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

谢谢。

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

【问题讨论】:

我认为开机时间对磁盘驱动器比实际使用更重要。除非进入睡眠模式,否则使用 Ram 磁盘可能不会延长驱动器的使用寿命。不知道有没有人做过测试? 【参考方案1】:

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

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

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

【讨论】:

谢谢。便宜的 USB 驱动器当然是一种选择,但由于所讨论的系统有足够的内存,我认为 ramdisk 更可取。谢谢您的回答。 :)【参考方案2】:

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

一个更好的解决方案是将 tiff 输出到标准输出,也许以不同的格式,然后将它传送到你的 python 程序。它根本不会撞到硬盘,但它会做更多的工作。当然,如果二进制文件不允许你这样做,那就没有实际意义了。

【讨论】:

【参考方案3】:

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

【讨论】:

以上是关于我应该对转换和删除的图片使用 ramdisk 吗?的主要内容,如果未能解决你的问题,请参考以下文章

关于 Ramdisk 镜像的问题

我应该删除向量<short> 吗?

linux下使用ramdisk不直接访问文件

我应该对弹性搜索中的非日志数据使用基于时间的索引吗?

我应该在移动键盘上方使用媒体查询和转换: translateY(-%) 吗?

内核的ramdisk