linux - 顶部命令输出中的 Mem 和 Swap

标签 linux caching buffer swap

我检查了集群节点的内存使用情况。 top命令的快照如下:

Mem:  24659948k total,  3113860k used, 21546088k free,   168328k buffers
Swap: 28667984k total,   570196k used, 28097788k free,   353460k cached

我对上面的输出有一些疑问。

  1. 节点有足够的可用物理内存。那为什么还要使用一些交换空间呢?
  2. 物理内存有 168328k 缓冲区。它是什么?它有什么用?
  3. 缓存交换相同的问题。它是什么?它有什么用?
  4. 上述输出对集群节点的性能有影响吗?

任何帮助将不胜感激。

最佳答案

使用的交换空间由您的“swappiness”系统值决定。
要查找您当前的设置,请尝试:

cat /proc/sys/vm/swappiness

该值的范围为 0-100,其中 100 表示主动交换,0 表示仅当 RAM 已满时才使用交换。
要临时调整该值,请尝试:

echo $YOURVALUE > /proc/sys/vm/swappiness

要永久调整它,请添加 sysctl 选项

echo $YOURVALUE >> /etc/sysctl.conf; sysctl -p

缓冲区和高速缓存用于通常打开和执行的命令。不用担心它们的空间被“使用”,如果需要 RAM,内核会自动释放该空间。您可以使用以下命令强制清除缓存(尽管实际上不需要):

sync; echo 3 > /proc/sys/vm/drop_caches

关于linux - 顶部命令输出中的 Mem 和 Swap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18086909/

相关文章:

android - ArcGIS 在 android 中使用 GeometryServer 创建缓冲区

ruby - 可以在不关闭 ruby​​ 文件的情况下取消链接文件吗?

linux - 在 Yocto Tree 中使用预建工具链

linux - Bash:使用不同的用户获取进程的pid

ios - Swift 应用程序终止会删除 Kingfisher 磁盘缓存

c - 如何将十六进制 ASCII 值保存到 C 中的数组(缓冲区)?

linux - 用于重新启动的 crontab 不起作用

c - 在 __m128 上右移 32 位的最快方法(Intel Intrinsics)

java - 处理 Rest API 的大响应

javascript - 在 Node 4.3 中使用 Buffer.from 时,TypeError Base64 不是一个函数