Active(anon)+ Inactive(anon)はAnonPages以上です。

Active(anon)+ Inactive(anon)はAnonPages以上です。
$ grep -iE 'anon' /proc/meminfo
Active(anon):    2962828 kB
Inactive(anon):  1039836 kB
AnonPages:       2599436 kB
AnonHugePages:         0 kB

Q1. 「Large Pages」がゼロであると仮定すると、Active(anon)+ Inactive(anon)とAnonPagesに違いがある理由をご存知ですか?

Q2.匿名メモリの最良の総合要約は何ですか?

私が探しています人間のプロセス、しかしそれは私に多くを言わない:

アクティブ(匿名)%lu(Linux 2.6.28以降)[記録されます。 ]

非アクティブ(匿名)%lu(Linux 2.6.28以降)[記録されます。 ]

[...]

AnonPages%lu(Linux 2.6.18以降):

ファイルがサポートされていないページは、ユーザー空間ページテーブルにマップされます。


$ uname -r  # My kernel version
5.0.17-200.fc29.x86_64

zoneinfoでも同じ二分法を見ることができます。

$ getconf PAGESIZE
4096

$ grep -C0 -i anon /proc/zoneinfo
      nr_inactive_anon 261105
      nr_active_anon 742227
--
      nr_isolated_anon 0
--
      nr_anon_pages 651405
--
      nr_anon_transparent_hugepages 0
--
      nr_zone_inactive_anon 0
      nr_zone_active_anon 0
--
      nr_zone_inactive_anon 59018
      nr_zone_active_anon 329082
--
      nr_zone_inactive_anon 202087
      nr_zone_active_anon 413145
$ grep -C0 -E "Node|zone[^_]" /proc/zoneinfo
Node 0, zone      DMA
--
Node 0, zone    DMA32
--
Node 0, zone   Normal
--
Node 0, zone  Movable
--
Node 0, zone   Device
$ cat /proc/meminfo
MemTotal:        8042664 kB
MemFree:         1697716 kB
MemAvailable:    3108172 kB
Buffers:          186476 kB
Cached:          3046440 kB
SwapCached:        14580 kB
Active:          3830020 kB
Inactive:        1738252 kB
Active(anon):    2965992 kB
Inactive(anon):  1044420 kB
Active(file):     864028 kB
Inactive(file):   693832 kB
Unevictable:      276372 kB
Mlocked:           13560 kB
SwapTotal:       2097148 kB
SwapFree:        1465040 kB
Dirty:              7376 kB
Writeback:             0 kB
AnonPages:       2602632 kB
Mapped:           696488 kB
Shmem:           1670792 kB
KReclaimable:     164272 kB
Slab:             327948 kB
SReclaimable:     164272 kB
SUnreclaim:       163676 kB
KernelStack:       21408 kB
PageTables:        42976 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     6118480 kB
Committed_AS:   14143048 kB
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
Percpu:             3424 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:               0 kB
DirectMap4k:      492084 kB
DirectMap2M:     7774208 kB
DirectMap1G:     1048576 kB

答え1

aで生成されたファイルは(および)ではtmpfs計算されますが、では計算されません(ファイルデータがスワップデバイスにページングされていない限り)。Active(anon) + Inactive(anon)ShmemAnonPages

これの説明は次のとおりです。Red Hat ドキュメント、簡単なテストで確認できます。したがって、わずかな違いが見えるのは驚くべきことではありません。

これは完全な説明ではないことがわかります...

  • Active(anon): 2965992 kB
  • Inactive(anon): 1044420 kB
  • AnonPages: 2602632 kB
  • Shmem: 1670792 kB

Active(anon) + Inactive(anon)私が期待するものとの違いは、AnonPages + Shmem次のように説明できます。

  • Unevictable: 276372 kB

これは2番目の質問を提起します:-).「削除できない」メモリが「Mlocked」メモリより大きいのはなぜですか?

  • Mlocked: 13560 kB

関連情報