web-dev-qa-db-ja.com

randomize_va_spaceを使用しない理由はありますか?

強化のためのカーネルオプションを少し検討してきましたが、展開するのが良いと思われるオプションがあります-randomize_va_space。しかし、その機能を有効にする前に、グーグル検索を開始し、主にそれをオフにする方法の説明を見つけました。通常は理由はありませんが、「遅くなる」ところをいくつかの理由で見ましたが、それは古いスレッドでした。

このカーネルパラメータが原因で問題が発生するなど、機能をアクティブにしない理由はありますか?

2
user857990

一部のCコードをデバッグするとき、特にフリーアクセス後のバグを追跡する場合、アドレス空間のランダム化はバグを確定的でないため非常に不便です。オフにすると、問題をより簡単に再現できます。これをオフにするのはよい理由です開発マシン上(本番システムとは対照的に)。

減速に関しては、「興味深いアドレス」がより広い空間に広がるため、理論的な効果があります。 x86ハードウェアの [〜#〜] mmu [〜#〜] は、前方テーブルを使用してアドレス空間(仮想空間から物理空間へのマッピング、最近のPowerPCで使用されている逆のテーブルとは対照的)を表すためプロセッサ)、アドレススペースのランダム化により、キャッシュにわずかな追加の圧力が発生することが予測されます(MMUテーブルの一部を読み取るために、より多くのキャッシュメモリが使用されます)。ただし、すべてのパフォーマンスについてに関連する問題については、このような速度低下を厳密に測定して確認してから、厳しい対策を講じることを強くお勧めします。つまり、特定のシステムでのパフォーマンスが必死である場合は、アドレス空間のランダム化をオフにすることをお勧めします。平均して問題になります。

8
Thomas Pornin

私はこのパーティーに遅れましたが、コードをプロファイリングするとき、スタックの開始アドレスを含むさまざまな要因が、予期しないが重要な測定バイアスをもたらすことが示されています( Mytkowiczet alを参照)。 、2009 )。 ASLRが同様の効果をもたらすと想定することは合理的です。

0
Emmet