wrw*_*rwt 39 memory linux partitioning ubuntu
我的计算机上有 64 GB RAM 和 240 GB SSD,我将使用它们进行内存密集型计算(机器学习、数据挖掘等)。我在 Internet 上找到的大多数建议都是大约 2-4-8 GB RAM 的计算机,他们推荐 RAM 交换分区大小的 2 倍(即 128 GB)。
制作 128 GB 的交换分区是否合理?制作一个巨大的交换分区有什么好处?
我是否正确理解,以防我用完物理 RAM:
有人说在 SSD 上进行交换是个坏主意,因为它的读/写周期有限。使用交换会以多快的速度耗尽 SSD 读/写周期(据我所知,大约是 50000 次写入 IOPS)?
我正在使用 Linux ( Ubuntu 14.04 (Trusty Tahr))。
现在要设置 16 GB 的交换空间,因为它应该足够了(例如,RedHat 建议使用 4 GB),而 16 GB 的磁盘空间实际上并不是什么大问题。
Dav*_*rtz 36
您可能只需要少量的交换。当您有足够的 RAM 用于计算机的典型工作集时(我很确定您这样做了),您只需要交换两件事:
您需要交换来获取可能永远不会被 RAM 访问的信息,从而为磁盘缓存释放更多空间。许多应用程序在系统启动时运行,永远不会再被访问。您不希望他们弄脏的任何页面永远停留在 RAM 中。所以你需要交换来保存它们。
您需要交换来覆盖永远不会被填充的分配。这个空间必须是可用的,即使它不会被使用。没有它,系统将不得不拒绝分配内存,即使它有足够的空闲物理 RAM,因为它没有足够的后备存储来允许一次使用所有分配。
这些都不需要大量的交换。例如,16GB 应该绰绰有余。目的不是让您以速度为代价运行更大的工作集。目的是让您有效地使用 64GB,而不必用垃圾堵塞它或将其保留用于永远不会发生的边缘情况。
(我同意 Bert 的观点,4GB 很可能就足够了。)
Ber*_*ert 31
RedHat建议在 64 GB 的机器上使用 4 GB。
然而,调整大小更像是一门艺术而不是一门科学。这取决于机器的用途、您拥有多少磁盘空间和内存以及其他因素。请记住,您以后可以随时添加更多交换。
使用 2X 物理内存规则已经过时了,因为现在系统的内存量很大。但是不建议使用零交换运行,除非您知道自己在做什么。建议 4 GB 是一个很好的起点。
Kaz*_*Kaz 12
在 Linux 上,您需要足够的交换空间,以便可用的总虚拟内存 (RAM + SWAP) 足以满足您想要同时运行的所有进程及其最大虚拟占用空间。
如果您的交换空间少于此值,或者根本没有交换空间,则会发生以下情况:系统在尝试分配页面时内存不足。但是,即使没有交换,这仍然是软故障,因为系统有很多“受害者”页面可以删除以腾出空间:即所有文件支持的内存映射的页面,例如可执行文件和共享库!
随着您的系统需要越来越多的数据空间(无法换出),它会越来越多地疏散可执行代码(共享库和可执行文件),导致可怕的颠簸,因为工作集被修剪成越来越紧凑的一组页。
交换空间通过为要换出的匿名(非文件映射)页面提供一个位置来缓解这个问题:用于内存分配的页面,以便可执行代码可以保留在内存中。
即便如此,如果您不经常运行内存密集型任务,您可能可以在大部分时间运行无交换,并在需要时手动配置交换文件(而不是专用分区)。要即时制作交换文件,请成为 root 并:
dd if=/dev/zero of=/path/to/swapfile size=$((1024 * 1024)) count=32768 # 32 Gb.
mkswap /path/to/swapfile
swapon /path/to/swapfile
Run Code Online (Sandbox Code Playgroud)
当您不再需要它时:
swapoff /path/to/swapfile
rm /path/to/swapfile
Run Code Online (Sandbox Code Playgroud)
笔记:
您绝对不需要配置至少与 RAM 一样多的交换。这个经验法则可以追溯到操作系统,由于交换的设计方式,它是一个硬性要求。
当没有可用内存时,有一些方法可以使 Linux 严重失败,即通过操作这些 sysctl 条目的值:
vm.overcommit_memory
vm.overcommit_ratio
Run Code Online (Sandbox Code Playgroud) 归档时间: |
|
查看次数: |
38224 次 |
最近记录: |