首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Prometheus (Docker):确定每个节点的可用内存(哪个度量是正确的?)

Prometheus (Docker):确定每个节点的可用内存(哪个度量是正确的?)
EN

Stack Overflow用户
提问于 2020-05-12 12:03:10
回答 1查看 5K关注 0票数 8

我们一直在努力为运行Docker组件的节点创建一个良好的内存监视。我们使用普罗米修斯与顾问和node_exporter相结合。

确定每个节点使用的内存的最佳方法是什么?

方法1:在我们的示例中给出了大约42%的

代码语言:javascript
复制
(1-(node_memory_MemAvailable_bytes/node_memory_MemTotal_bytes))*100

方法2:给出约80%

代码语言:javascript
复制
(1-((node_memory_MemFree_bytes+node_memory_Buffers_bytes+node_memory_Cached_bytes)/node_memory_MemTotal_bytes))*100

Q2:为什么会有这种区别?我能从中学到什么?

因此,我更深入地研究了具体的衡量标准:

  1. Free内存:在我们的实验中大约是5%

(node_memory_MemFree_bytes/node_memory_MemTotal_bytes)*100

  • Buffered内存:大约0.002%

(node_memory_Buffers_bytes/node_memory_MemTotal_bytes)*100

  • Cached内存:大约15%

(node_memory_Cached_bytes/node_memory_MemTotal_bytes)*100

  • Availabable内存:58%

(node_memory_MemAvailable_bytes/node_memory_MemTotal_bytes)*100

我希望FreeMem + BufferedMem + CachedMem会出现在AvailableMem周围。但这不是这个简单实验的结果。

Q3:为什么这不是真的?

据说Linux上的空闲内存由空闲mem +缓冲mem +缓存mem组成。当内存不足时,缓存的内存可以被释放,等等。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-28 14:20:48

本文档详细说明了这些数字意味着什么:https://github.com/torvalds/linux/blob/master/Documentation/filesystems/proc.rst#meminfo

MemAvailable:估计有多少内存可用于启动新应用程序,而不进行交换。根据MemFree、SReclaimable、文件LRU列表的大小以及每个区域中的低水印进行计算。估计数考虑到系统需要一些页面缓存才能正常工作,而且由于正在使用的项目,并不是所有可收回的板子都可以收回。这些因素的影响因系统而异。

因此,MemAvailable是一种估计,无需将替换为新进程,就可以使用多少内存。FreeMem只是计算成MemAvailable的一个部分。BufferedMem和CachedMem可能会被考虑进来,但这些只是内存中可能被回收的一小部分:

缓冲区:对于原始磁盘块的相对临时存储不应该获得巨大的缓存(大约20‘t):内存中的缓存用于从磁盘读取的文件(分页缓存)。不包括SwapCached

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61751232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档