GNU/Linux >> Linux の 問題 >  >> Linux

/proc/meminfo の MemTotal が変更されるのはなぜですか?

それは決して変わらないはずです。これは、RAM 内のいくつかの障害のある場所を示している可能性があります。 Memtest86+ を使用して RAM を診断できます。

それ以外では、仮想マシン ゲストを分析している場合にのみ、数値が変化する可能性があります。おそらく、VM ゲストが実行されているホストが、ゲストに割り当てられた RAM を調整しています。

編集 #1

MemTotal の変更につながる可能性のあるカーネル モジュールによるメモリ リークの可能性について議論しているこのフォーラムの投稿を掘り下げました。

抜粋:Re:システム メモリの量はどのように決定しますか?

<ブロック引用>

2008 年 7 月 30 日、Bill McGonigle は次のように書いています。

<ブロック引用>

2008 年 7 月 30 日 10:03 に、Thomas Charron は次のように書いています。

<ブロック引用>

MemTotal は変更される可能性があります。 MemTotal は、メモリ内のカーネル バイナリ自体によって使用されるメモリを表示しませんが、モジュールがメモリをリークする可能性があり、MemTotal からも削除される場合があります。この出来事の詳細は覚えていませんが、Paulis が今話していることは知っています。MemTotal をマシンに存在する物理メモリとして定義する場合、それは単なるバグです。カーネルが使用できる合計メモリとして表示すると、正しく実行されていますよね?

はい、「バグ」とはその数値が下がったときのことで、何かがリークしていること、つまり「不良カーネル」を意味します。少なくとも潜在的に「悪い」(バグの可能性がある) カーネル モジュール。


カーネルやモジュールにバグがあることに不安を感じていたので、さらに掘り下げて調べたところ、MemTotal ということがわかりました。 定期的に下向きまたは上向きに変化する可能性があります。これは定数ではなく、この値は、さまざまな状況下で、多くの場所でカーネル コードによって確実に変更されます。

例えば。 virtio_balloon kmod は MemTotal を減らすことができます また、それを再び増やします。もちろん、mm/memory_hotplug.c は [add|remove]_memory をエクスポートしています。 、どちらも多くのドライバーが使用しています。


Linux
  1. Linuxは複数の連続したパスセパレーター(/ home //// username /// file)をどのように処理しますか?

  2. Linux – / proc // exeシンボリックリンクは通常のシンボリックリンクとどのように異なりますか?

  3. 空きメモリの90%を埋める方法は?

  1. Linux – / proc/mntを/proc/ mountsにリンクしますか?

  2. / bin/shが/bin/bashではなく/bin/ dashを指すのはなぜですか?

  3. find -exec mv {} ./target/ + が機能しないのはなぜですか?

  1. プロセスが実行されているフォルダーを見つける方法は?

  2. なぜ /home 以外のものを別のパーティションに入れるのですか?

  3. /dev/tcp を使用するために < または > が必要な理由