カーネルページテーブル分離を無効にするとMemTotalが減少するのはなぜですか?

カーネルページテーブル分離を無効にするとMemTotalが減少するのはなぜですか?

Isoカーネル(Linux 5.4.60)、Isoハードウェア、Iso構成(ケースA:CONFIG_PAGE_TABLE_ISOLATION = y、ケースB:CONFIG_PAGE_TABLE_ISOLATION = nを除く)

iomemは同じマッピングを報告します(Bの場合、カーネルコードサイズがやや低いことを除く)。

ただし、cat /proc/meminfoMemTotal Case B < MemTotal Case A が報告されます (~20K)。

もちろん、これは完全に境界線にあることを知っています。しかし、KPTI(Kernel Page Table Isolation)を無効にすると、MemTotalがどれだけ減少するかを知りたいです。

(もちろん何度も確認しました。)


編集:メインラインLinux 5.4.66(x86_64)の詳細:

ケースA(CONFIG_PAGE_TABLE_ISOLATION = y):

8.166.984KB memtotal(/proc/meminfoで報告)

メモリ:8163640K / 8387700K利用可能(8194Kカーネルコード、415K rwdata、1528K rodata、776K init、788K bss、224060K予約、0K cma予約)(起動時に報告)

ケースA'(CONFIG_PAGE_TABLE_ISOLATION = y)ですが、noptiを起動します。:

上記のレポートに変更はありませんか? ? ?

ケースB(CONFIG_PAGE_TABLE_ISOLATION = n):

8.166.964KB memtotal(/proc/meminfo によって報告される) => -20KB / CASE A ???

メモリ:8163640K / 8387700K利用可能(8194Kカーネルコード、407K rwdata、1528K rodata、756K init、816K bss、224060K予約済み、0K cma予約済み)

言い換えれば:

  • データセグメントは8Kに減少し、initセグメントは20Kに減少し、bssセグメントは8+20に増加します。

まだ存在する元の質問に追加するには(私にとってより重要です):

1 / CONFIG_PAGE_TABLE_ISOLATIONをオフにすると、合計20Kのメモリが減少するのはなぜですか?

2/§15.3で述べたように、2MBのRAMはどこで消費されますか?文書

3/nopti の起動が CONFIG_PAGE_TABLE_ISOLATION の設定解除とカーネルメモリに異なる影響を与えるのはなぜですか?

関連情報