如何知道 hadoop Linux 机器的正确交换大小

如何知道 hadoop Linux 机器的正确交换大小

我们正在使用许多 hadoop 集群

现在我们使用交换大小 - 16G

   free -g
                  total        used        free      shared  buff/cache   available
   Mem:            125           1         123           0           0         123

   Swap:            15           0          15

但众所周知,交换实际上使用磁盘的内存非常慢

在一些hadoop组件如zookeeper服务器中,交换应该被禁用!

但我有一种感觉,在hadoop机器中交换应该是最小的

我觉得我需要把它降到4G,

但我想得到更多意见

答案1

您可以通过使用 来最大限度地减少交换的使用swappiness。您可以使用命令获取当前值:

cat /proc/sys/vm/swappiness

如果您想更改它,请编辑/etc/sysctl.conf并添加行,例如

vm.swappiness = 1

(根据Cloudera的建议)并执行

sysctl -p 

(作为root

答案2

一般建议是:如果 RAM 大于 1 GB,则交换大小应至少等于 RAM 大小的平方根,最多为 RAM 大小的两倍

人们还可以从 Redhat 找到类似的指南。

如果您只有一个具有 512GB 或更多 DDR4 RAM 的系统,并且将 Linux 安装在一个 500GB、300GB 或 80GB 的较小磁盘上,该怎么办?

swap的定义(如有错误请指正)是不是一个分区在磁盘上当系统内存不足时(当时只有 32 个MB或 1国标的)那么当 RAM 已满时系统可以利用交换来保持活动状态;当时这是有道理的,因为磁盘存储通常总是比 RAM 更大、更经济、更可用,而且很容易耗尽32MB内存。

快进到 21 世纪,RAM 现在很便宜,家用电脑可以轻松拥有 16GB 或更多 RAM;服务器可以轻松拥有 256GB 或更多 RAM;例如,简单的戴尔服务器(以及许多其他服务器)现在提供高达 3TB RAM 的选项。 RAM 很容易超过可用磁盘空间量。

根据经验和一些事实,我的观点是:

  • 对于 21 世纪的计算硬件来说,任何关于交换空间的指导方针现在都已经过时了。
  • 你的 Android 手机(Linux)有交换空间吗?考虑具有 16,32,64 GB(闪存?)内存的智能手机与笔记本电脑/个人电脑的计算能力和性能?几年前[交换空间已分区]。
  • 您可以在多种不同类型的存储介质上安装多种 Linux 发行版
  • 你是不需要有一个SWAP分区供linux运行
  • 重要的是有多少 RAM,并根据可用 RAM 的数量了解系统的限制。
  • Swappiness = 一个内核参数,定义 Linux 内核将 RAM 内容复制到交换区的数量和频率。你想让操作系统在 RAM 的范围内做任何它想做的事情;如果 RAM 从未达到 100%,则此参数几乎毫无意义,因为不会向定义为交换的内容写入任何内容。
  • 如果你有 256GB RAM 并且用完了,此时任何数量的交换都是毫无意义的... HDD 或 SSD 上的 2GB 交换没有意义,拥有 256GB RAM...如果您有的话,磁盘上 GB 的交换区只是浪费空间GB 的交换区,如果 RAM 达到 100%,系统仍然会阻塞并且基本上变得无响应(几乎一直都是这样)
  • 如果您认为需要交换,那么您需要更多 RAM。如果您的系统没有足够的 RAM,那么您需要一个更新/更好的系统来提供足够的 RAM 容量。
  • 你的问题应该是交换的合适尺寸是多少?。无论是hadoop、linux还是windows,如果我们同意的定义就应该是无关紧要的交换因为交换分区是一些存储空间,只有当 RAM 已满时操作系统才会使用它。
  • 还要查找磁盘缓存并理解它......linux 吃了我的内存。始终使用 RAM(因此尽可能多)以获得最佳性能。使用自由的linux 中的命令并观察其值缓存的此外用过的自由的
  • 我讨厌交换。

答案3

要更改交换大小,您需要首先禁用交换:

swapoff (swap partition)

sudo dd if=/dev/zero of=(swap partition) bs=1M count=(newsize in MB) oflag=append conv=notrunc

mkswap (swap partition)

swapon (swap partition)

关键是你必须始终尽量避免交换的使用;使用情况与磁盘空间量无关紧要;确实,如果你有更大的交换空间,你可以处理更多的进程,但目的是尽量避免使用交换,因为它会降低系统的总体性能。

无论如何,这并不意味着您必须禁用它,始终建议保留一些磁盘空间用于紧急情况下的交换。一般建议是:

如果 RAM 大于 1 GB,则交换大小应至少等于 RAM 大小的平方根,最多为 RAM 大小的两倍

因此,如果可能的话,只要您的硬盘有足够的空间,请尝试应用该规则。

相关内容