我想利用一些我很少使用的 RAM 来创建一个 RAM 驱动器,以便一些对系统很重的软件可以从使用该 RAM 中获得一点帮助。
我特别想运行Handbrake,最好使用 GUI。我有有关如何创建实际 RAM 驱动器的相关软件和信息,所以我不需要帮助,但我想知道是否
我可以设置手刹,以便在进行一些可能有助于改进的计算时,它有利于 RAM 驱动器而不是临时文件目录,如果不是...
是否可以将我的 Handbrake 安装在特定的地方(比如在实际的 RAM 驱动器上,以便它会自动使用它;我注意到 Ubuntu 从不要求安装位置,它只是把它想要的东西放在它想要的地方,我们有在这件事上几乎没有选择)。
但我也想知道“我可以在 RAM 驱动器上安装任何东西,还是只能与具有允许您强制它使用 ram 驱动器作为临时工作驱动器的设置的东西一起使用,或者是所有软件都只是安装在它所在的位置并且不可更改(从外行的角度来看)。
手刹确实使我的处理器工作非常努力并且变得非常温暖,这是之前被选为随机示例的另一个原因。
Handbrake 是一个视频转换工具。视频转换工具往往是 CPU/GPU 重的,而不是 IO 重的。
在 CPU 上编码,我通常每秒获得 25-100 帧。如果您有一部 50Mb/s 24fps 的电影,这意味着您必须摄取 200Mb/s 或 25MB/s。这是从文件中顺序读取,这是最简单和最可预测的IO。即使是旋转的 5400RPM 廉价笔记本电脑硬盘驱动器也不会出现零问题。
即使将编码率提高四倍,达到 400fps,也只有 100MB/s。这在 7200rpm 硬盘驱动器的范围内,对于 SSD来说微不足道。除非您有非常专业的视频编码硬件,否则您可能会看到使用 RAM 缓存视频转换数据对编码速度的改进为零。在这种情况下,要走的路可能是快速固态硬盘,它可以轻松处理每秒千兆字节的数据。
RAM 仅在磁盘 IO 是您的瓶颈时才有意义。要进行优化,您应该首先确定实际的瓶颈,然后找出解决该瓶颈的方法。
此外,将 RAM 专用于 RAM 驱动器可能会使事情变慢。Linux 非常擅长在未使用的 RAM 中缓存内容。但是,如果您通过使用专用 RAM 驱动器强制它缓存某些内容,则可能会因缓存而受益的内容不会被缓存。
当然,在某些情况下,您希望在 RAM 中显式缓存内容......
您必须快速缓存一些输入以进行处理。例如,这可能是来自某个外部传感器的数据突发,它以比您的磁盘更快的速度在短时间内提供数据。在这种情况下,在写入磁盘之前对其进行缓存是一个很好的策略。
您有一个进程,即 IO 绑定,需要临时存储数据集。
您有(少量)您不关心的数据,但您暂时需要。例如,这可能是网络服务器的 phpsession-files。
在很多情况下,第二个例子可以用管道代替,这样就不需要存储了。只有在必须立即提供完整数据集的情况下才需要存储。
在大多数其他情况下,无论如何您都必须将数据读取或写入磁盘。如果要保留转码的结果,则必须将其移至磁盘。如果要将要转码的视频移动到 RAM 驱动器,则必须先从磁盘读取它,依此类推...
请记住,操作系统默认将文件缓存在 RAM 中。每当操作系统读取文件时,它都会缓存在 RAM 中。当一个文件被写入时,它会被缓存。
通常,Linux 上的应用程序使用专用的 tmp 目录 /tmp 或 /var/tmp 来存储它们的临时文件。
/tmp
据称是为了快速短期使用,而/var/tmp
应该在靴子之间持续存在。如果您的目标是减少 SSD 磁盘的撕裂和磨损,那么当应用程序写入这些临时目录时,将 /tmp 移动到 RAM 将消除 SSD 磁盘活动。您可以移动
/tmp
到 RAM,将此行添加到您的/etc/fstab
:tmpfs 文件系统使用的内存根据需要增加和减少。如果内存不足,则使用交换。默认情况下,Ubuntu 已经默认使用 tmpfs 来处理
/run
,/dev/shm
等目录。显然,这是一个笼统的答案。如果应用程序也将 /tmp 用于其临时文件,它还将帮助您手刹。