デスクトップメモリ不足の問題の診断中(追加情報U&Lから)キャッシュされていない「カーネルダイナミックメモリ」大きい:
# smem -twk
Area Used Cache Noncache
firmware/hardware 0 0 0
kernel image 0 0 0
kernel dynamic memory 1.1G 369.3M 801.7M
userspace memory 2.0G 133.3M 1.9G
free memory 734.1M 734.1M 0
----------------------------------------------------------
3.9G 1.2G 2.7G
他の2つのシステムでは、150MiB(デスクトップもありますが8GiBまたはRAMを含む)と29MiBであることを確認しました。私のデスクトップの20%未満です。
何がそんなに大きいのか、どうすればわかりますか?
注:ソースを確認してみると、smem
基本的にはそうです(memtotal - ユーザースペース - 無料 - キャッシュ)。
/proc/meminfo
:
#猫/proc/meminfo 総メモリー: 4051956kB 利用可能なメモリ:508276kB バッファ:35232kB キャッシュ: 651052KB スワップキャッシュ: 121380kB アクティブ: 1358008kB 非アクティブ:1351596kB アクティブ(匿名):1184616kB 非アクティブ(匿名):886904kB アクティビティ(ファイル):173392kB 非アクティブ(ファイル):464692kB 取り外し不可能:8616kB ロック:8616kB 総交換量: 4051952kB 翌日なし:3815780 kB ダーティ:348kB 書き換え:0kB 匿名ページ:1971164 kB 地図: 140108kB メモリ:44656kB タブレット:176564kB リサイクル可能:62080kB S回収キャンセル:114484 kB カーネルスタック:3352kB ページテーブル:43012kB NFS_不安定:0kB バウンス:0kB Tmpに書き換える:0kB コミット制限:6077928kB コミット済み_AS:3681164kB 合計 Vmalloc: 34359738367kB Vmalloc使用量:139780kB VmallocChunk: 34359570976kB ハードウェア損傷:0kB AnonHugeページ:448512 kB HugePages_Total: 0 HugePages_Free:0 HugePages_Rsvd: 0 HugePages_Surp: 0 大きいページサイズ: 2048kB DirectMap4k: 2536128kB DirectMap2M: 1656832kB
答え1
他の文を見たらzramを使っておられているようですね。それが私の家です。
私はzramをインストールし、多くのメモリを消費した経験があり、smem
あなたと同じ結果を得ます。smem
zram
その数に関係なく、値を計算するためにのみ使用されます/proc/meminfo
。コードを見て理解しようとすると、zram RAM占有率が最終的に次に計算されることがわかります。キャッシュされていない熱カーネル動的メモリワイヤー。
さらなる調査
この動作の背後にはzramがあるという直感に基づいて、お使いのコンピュータと同様の仕様(4GB RAMと2GB zramスワップ、スワップファイルなし)で仮想マシンを設定しました。
重量級アプリケーションを仮想マシンにロードしたところ、次の状態が表示されました。
huygens@ubuntu:~$ smem -wt -K ~/vmlinuz-3.2.0-38-generic.unpacked -R 4096M
Area Used Cache Noncache
firmware/hardware 130717 0 130717
kernel image 13951 0 13951
kernel dynamic memory 1063520 922172 141348
userspace memory 2534684 257136 2277548
free memory 451432 451432 0
----------------------------------------------------------
4194304 1630740 2563564
huygens@ubuntu:~$ free -m
total used free shared buffers cached
Mem: 3954 3528 426 0 79 858
-/+ buffers/cache: 2589 1365
Swap: 1977 0 1977
ご覧のとおり、free
858MBのキャッシュメモリが報告されていますが、これはsmem
キャッシュカーネル動的メモリでも報告されているようです。
その後、Chromiumブラウザを使用してシステムをさらに強調しました。最初は83 MBのスワップスペースのみが使用されます。しかし、いくつかのタブを開いた後、スワップはほぼ最大にすばやく切り替えられ、OOMを経験しました!zram
危険な側面があります。誤って設定すると(大きすぎると)透析装置のように戻ります。
当時、私は次のような結果を得ました。
huygens@ubuntu:~$ smem -wt -K ~/vmlinuz-3.2.0-38-generic.unpacked -R 4096M
Area Used Cache Noncache
firmware/hardware 130717 0 130717
kernel image 13951 0 13951
kernel dynamic memory 1355344 124072 1231272
userspace memory 961004 36456 924548
free memory 1733288 1733288 0
----------------------------------------------------------
4194304 1893816 2300488
huygens@ubuntu:~$ free -m
total used free shared buffers cached
Mem: 3954 2256 1698 0 4 132
-/+ buffers/cache: 2118 1835
Swap: 1977 1750 227
カーネルのダイナミックメモリ(キャッシュされた列とキャッシュされていない列)を見れば、逆に見えますか?これは、最初のケースでは、カーネルに報告されているのと同じ「キャッシュ」メモリがありますが、計算方法がわからないスワップメモリがあるためです(smemソースコードを確認するとzram占有は/ proc /に報告されません)free
。 meminfo )、これは単純な「総カーネルメモリ」としてカウントされません。 - "私が知っているmeminfoによって報告されたメモリタイプはキャッシュされています。"計算されたカーネルメモリ全体にRAMのスワップを追加するという事実は不明です。真ん中! )zram
smem
smem
この状態でhddスワップを有効にし、zramスワップをオフにし、zramデバイスをリセットしましたecho 1 > /sys/block/zram0/reset
。
その後、キャッシュされていないカーネルメモリは夏の雪のように溶けて「正常」値に戻ります。
結論として
smem
zram
まだだからそうかもしれない分割火したがって、/proc/meminfo
グローバルパラメータ(アクティブページサイズ、合計メモリなど)は報告されず、一部の特定のパラメータのみが報告されます。smem
これらの特定のパラメータのいくつかを「キャッシュ」として識別し、それらを合計して合計メモリと比較します。これにより、zram
使用されたメモリが計算されます。キャッシュされていない柱。
注:ところで、最新のカーネルでは、meminfo
消費された共有メモリも報告されます。これはまだ考慮されていないため、smem
noのzram
出力もsmem
慎重に考慮する必要があります。共有メモリを多用するアプリケーションを使用する場合。
使用された参考資料:
答え2
簡単に回収できるメモリが多く、目には大丈夫に見えます。正確に動作しないものは何ですか(「ああ、ひどいです。<ランダムプログラム>が提供する数字を見てください!」)?プログラムの競合(OOM、メモリ不足、ハンドラの起動)?プログラムを開始できませんか?感覚システムが悪いですか?継続的なディスク活動?ログに手がかりはありますか?
Linux〜する利用可能なメモリをすべて埋めてそのままにすることは、メモリを積極的に消去し、後で再利用するよりも安価です。停止(または開始直後)のマシンは、活発に使用されるマシンとは非常に異なる数字を提供します。