커널 페이지 테이블 격리를 비활성화하면 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을 설정 해제하는 것과 커널 메모리에 다른 영향을 미치는 이유는 무엇입니까?

관련 정보