2

背景

私は数週間メインラインを掘り下げており、カーネルが自動的に合体する方法/場合 (およびどのような条件下で) を理解しようとしています。たとえば、512 の 4k PTE を単一の 2M PMD エントリに結合します。 hugetlbfs または THP を使用 - つまり、純粋に x86_64 であるためです。

私は以前、カーネル内の TLB/MMU/ページング サブシステムがこれを検出し、正しいことを実行するという仮定に沿っていましたが、実行時に debugfs の kernel_page_tables に表示される内容からすると、そうではないようです。大きな .text セクション モジュール (> 5MB) を使用したテスト。

質問)

1) カーネルが x86_64 アーキテクチャでページを大きなページに自動的に結合する場合、これを行うにはどのような条件を設定する必要がありますか?

2) カーネルがこれを自動的に行わない場合、手動で 512 個の 4k PTE を取得し、それらを結合/変換して PMD に入れるにはどうすればよいですか?

ヒントが必要です。私はこれをすべて自分で解決したいと思っていましたが、数週間が経ち、無謀な放棄で頭を悩ませています.

どうもありがとう

sc。

4

1 に答える 1