可能重复:
我可以将所有 RAM 用作应用程序数据吗?
当我在后台执行某些操作(解压、编译、备份等)时,我的硬盘处于负载状态,例如,Firefox 和 Chromium 需要很长时间才能启动并且反应非常慢。
当我的硬盘处于负载之下时,我仍然有足够的可用 RAM 和可用 CPU。
如何将整个 Firefox 或 Chromium 包括所有依赖项复制到 RAM 中?
我不在乎持久性,我只想查看一些网站,视频等。
有一些指令将缓存放入 /dev/shm,但速度并没有提高多少。将配置文件放入 RAM 驱动器可能也很容易……但如何将具有所有依赖项的二进制文件放入 RAM?
答案1
您不需要将所有依赖项复制到 RAM 中,因为现代应用程序不会同时加载其所有功能。它们会在必要时从磁盘加载它们。
是的,系统有时可能会使用 HDD 来腾出足够的 RAM 空间,以便可以加载可能需要更多 RAM 的其他应用程序。因此,它使用一项称为“交换”的功能。
“交换”很好,因为它可以让你同时加载更多应用程序。但它占用硬盘,这是一个缓慢的过程。
因此,如果您认为您有足够的 RAM 根本不使用交换,那么您可以完全禁用交换。
暂时禁用交换:sudo swapoff -a
在终端中运行此命令并按回车键。
如果你想永久禁用交换,请执行以下操作:
- 打开终端并运行
sudo gedit /etc/fstab
- 小心地删除包含单词的行
swap
。保存并退出 gedit。 - 重新启动并再次登录。
注意:您应该备份/etc/fstab
文件,以便在出现问题时可以恢复。
备份:sudo cp /etc/fstab /etc/fstab.backup
恢复:sudo cp /etc/fstab.backup /etc/fstab
希望这会有所帮助
答案2
内存管理由操作系统本身处理。它安排所有进程以相同的时间执行。这是多处理操作系统的基础。
此外,将进程的多少数据加载到 RAM 中由应用程序决定。如果应用程序需要的内存多于可用内存,则操作系统会通过将部分内存写入虚拟页面(Linux 系统中的 SWAP 空间)来处理。(搜索Paging technique of OS
)。因此,如果您有足够的内存,请确保操作系统按照应用程序的请求正确使用它。
因此基本上您无法将任何东西复制到 RAM。(另外 RAM 驱动器是什么?)写入 RAM 是由操作系统完成的。
我对此表示怀疑there are plenty free CPU while the background task is running
。可能你误解了某件事。
最后,您可以使用该命令来更改进程的优先级,以便 CPU 为该进程提供更多时间。renice
或者nice
。但是,当您更改优先级时,系统可能会冻结/崩溃,行为不稳定。
答案3
Linux 内核会自动将正在使用的文件加载到 RAM 中,因此按照您的要求做不会有任何特别的好处。当您编译或执行其他重负载进程时,您所描述的是 CPU 瓶颈(处理能力)。最好的解决方案是尝试赋予每个作业的优先级 - 具体来说,将“后台”作业设置为占用更少的 CPU,但需要更多时间才能完成。
这可以通过使用‘nice’命令来实现: http://manpages.ubuntu.com/manpages/oneiric/man2/nice.2.html
答案4
启动任何应用程序前启动密集进程(编译)。这样,它们将已经加载到 RAM 中,并且响应速度会更快。
降低 swappiness 以避免使用 swap,从而减少磁盘使用量。请注意,更改 swappiness 不会不是禁用交换文件,只会让内核在决定将内容移至交换时更加保守。非常低的交换率将使内核不使用交换,除非您绝对、肯定没有 RAM。http://en.wikipedia.org/wiki/Swappiness
nice
使用和启动密集型进程ionice
以降低其 CPU 和 I/O 优先级,这应该可以让交互式应用程序更灵敏。阅读man nice
和man ionice
以了解这两个实用程序的作用。nice -n 19 ionice -c2 -n7 your-intensive.process