Docker コンポーネントを実行しているノードの適切なメモリ監視を作成するのに苦労しています。Prometheus を cadvisor および node_exporter と組み合わせて使用します。
ノードごとの使用メモリを決定する最良の方法は何ですか?
方法 1 : この例では約 42% になります
(1-(node_memory_MemAvailable_bytes/node_memory_MemTotal_bytes))*100
方法 2 : 約 80% を与える
(1-((node_memory_MemFree_bytes+node_memory_Buffers_bytes+node_memory_Cached_bytes)/node_memory_MemTotal_bytes))*100
Q2: この違いはなぜですか? これから何を学ぶことができますか?
そこで、決定された個々の指標についてもう少し掘り下げました。
空きメモリ:私たちの実験では約5%でした
(node_memory_MemFree_bytes/node_memory_MemTotal_bytes)*100
バッファリングされたメモリ: 約 0.002%
(node_memory_Buffers_bytes/node_memory_MemTotal_bytes)*100
キャッシュメモリ:約15%
(node_memory_Cached_bytes/node_memory_MemTotal_bytes)*100
利用可能なメモリ: 58%
(node_memory_MemAvailable_bytes/node_memory_MemTotal_bytes)*100
FreeMem + BufferedMem + CachedMem が AvailableMem の周りにあると思います。しかし、それはこの単純な実験の結果ではありません。
Q3: なぜそうではないのですか?
Linux の空きメモリは、空きメモリ + バッファ メモリ + キャッシュ メモリで構成されていると言われています。メモリが不足すると、キャッシュされたメモリが解放される可能性があります。