Linuxカーネルが私のプロセスのメモリページを交換しないと仮定すると、RAMの物理的な場所が変わらないと仮定できますか、それともカーネルはページを移動できますか?
私が尋ねる理由は、私がmemtester
最初から自分のページを作成することを検討しており、新しく割り当てられたページがプロセスが以前にテストしたRAMの同じ物理的な場所にある可能性があるかどうかを知りたいからです。
ベストアンサー1
私は、割り当てられたページの物理アドレスが変更され、後続の割り当てで以前に使用された物理ページを再利用できる2つの状況を知っています。
- (あなたが言ったように)交換してください
- 圧縮
前者は、メモリをロックすると、すべての場合に防止できます。mlock()
またはmlockall()
。後者の場合、これvm.compact_unevictable_allowed
sysctl
また、ゼロに設定する必要があります(圧縮が有効な場合はデフォルトで有効になっています)。
透明ページデフラグはスワッピングと圧縮の両方を使用しますが、独自の項目を多く追加します。sysctl
グローバルに圧縮を無効にし、テスト中のメモリをロックする以外に必要かどうかは不明です。