新しい仮想マシンでのtopは、私のプロセスが100 GBの仮想メモリを消費していることを示しています。 オーバーコミットのために可能 であると読みましたが、少し多すぎます。特にVMに6 GBの実メモリ、2 GBのスワップ、および単一の40 GB HDパーティションがある場合、私はこのようなものを見たことがありません。
101 GB VIRTの面白いプロセスはEclipse IDE(数分前に開始))であり、98 GB VIRTのWebKitWebProcessがあります。他のすべてのプロセスには、約1〜2 GBの正常なVIRT値があります。 。3つのツールすべてがそれに同意しているようです:top
、htop
およびps
。
詳細:
Linux 4.15.0-38-generic x86_64 GNU/Linux、Linux Mint 19 Tara
Java HotSpot(TM)64ビットサーバーVM(ビルド25.191-b12、混合モード)
バージョン:2018-09(4.9.0)ビルドID:20180917-1800
/ proc // mapsの内容は
00400000-00401000 r-xp 00000000 08:01 132092 /usr/lib/jvm/Java-8-Oracle/jre/bin/Java
00600000-00601000 r--p 00000000 08:01 132092 /usr/lib/jvm/Java-8-Oracle/jre/bin/Java
00601000-00602000 rw-p 00001000 08:01 132092 /usr/lib/jvm/Java-8-Oracle/jre/bin/Java
014fc000-02ebe000 rw-p 00000000 00:00 0 [heap]
c0000000-d0000000 rw-p 00000000 00:00 0
d0000000-100000000 ---p 00000000 00:00 0
100000000-1012c6000 rw-p 00000000 00:00 0
1012c6000-140000000 ---p 00000000 00:00 0
7ef800000000-7ef800004000 rw-p 00000000 00:00 0
7ef800004000-7ef8000ec000 rw-p 00000000 00:00 0
7ef8000ec000-7ef800100000 rw-p 00000000 00:00 0
7ef800100000-7f0800000000 rw-p 00000000 00:00 0
7f0800000000-7f1000000000 ---p 00000000 00:00 0
表示されている最後の2行lineは、0x7f0800000000 - 0x7ef800100000 ≈ 68.7e9
のように犯人のようです。私が見つけたものから、それは許可のないマップされていないプライベートリージョンです。私が言えるのはそれだけです..。
ほとんどの場合、インデックスを作成できるすべてのファイルをmmapしています。 Kafka数千のファイルのマッピング)でも同様ですが、通常、仮想フットプリントははるかに高い(〜10x)です)。以下を実行できます。
cat /proc/{PID}/maps
({PID}はEclipseプロセスIDです)。これが当てはまるかどうかを確認します。実際にそうである場合は、vm.max_map_count
in sysctl
仮想フットプリントが大きすぎる場合。