Linkers and Loadersの本では、実行可能ファイルが別のコードセクションを持つ理由の1つは、コードセクションを読み取り専用ページに保存できることで、パフォーマンスが向上することです。現代のOSでこれは本当ですか? Just in Time compilersがオンザフライでコードを生成しているのを見ると、書き込み可能なページが必要だと思います。これは、JITで生成されたコードが常に比較結果でパフォーマンスヒットを受けることを意味しますか?もしそうなら、どれくらいヒットしますか?書き込み可能なページのためJITパフォーマンスが低下しますか?
答えて
メモリ管理の効果(他の回答で説明されています)は、現在の命令ストリームが変更され、パイプラインの中間結果が破棄され、新しいコードが必要であるかどうかを継続的に確認する必要はありません読まれる。 jitコンパイルの場合、このシナリオは、コンパイラの設計、CPUパイプラインの深さ、CPU上のコードキャッシュのサイズ、およびそのコードを変更する可能性のある他のCPUの数によって頻繁に発生することがあります。コードが書き込み可能なページに生成され、その後実行可能かつ読み取り専用とマークされたうまく設計された最新のシステムでは、通常は許可されません。これはもちろんジットに固有のことではありません。それはあらゆる種類の自己修正コードで起こる可能性があります。
メモリ内のコードが実行可能プログラムによって直接サポートされていないため、ある種のヒットが発生するはずです。そのため、単に破棄するのではなくページアウトする必要があります。言いましたが、さまざまな形式のリンクでは、通常のコードページが汚れてしまい、ディスクイメージと同じ結果が得られなくなってしまいます。これは大きな問題ではありません。
パフォーマンスの向上は、ページが読み取り専用かどうかによって異なります。利点は、読み取り専用ページをプロセス間で共有できるため、より少ないメモリ(L1/L2/L3キャッシュと極端な場合はディスクの両方)のスワップを意味します。
JITは、不必要にJITするのではなく、ホット機能をJITするだけでこれを緩和しようとします。これは、ホット機能の数が比較的少ないため、わずかなメモリの増加しかもたらさない。
JITコンパイラはスマートで、JITtingの結果をキャッシュして(理論的に)共有できるようにすることもできます。しかし、これが実際に行われたかどうかはわかりません。
.NETです。NGENで。 –
- 1. Cassandraの書き込みパフォーマンスが低い
- 2. ログの書き込みが多すぎるとAndroidアプリケーションのパフォーマンスが低下しますか?
- 3. 可変フラットバッファ、パフォーマンスの低下?
- 4. JavaScriptのインラインイベントによってWebページの読み込みパフォーマンスが低下しますか?
- 5. cgiスクリプトは、Apacheの下で書き込み可能なファイルに書き込めません。
- 6. Row_Number()のためにクエリのパフォーマンスが低下しています
- 7. Websharperアプリケーションのパフォーマンスが低下し、メモリリークの可能性があります
- 8. ルアの書き込み可能なテーブル?
- 9. テーブルのパフォーマンスが低下します
- 10. ウェブアプリケーションの32ビットのみのDLLでパフォーマンスが低下する可能性がありますか?
- 11. IdentityServer 3のパフォーマンスが低下したMembershipReboot
- 12. 書き込み可能なselectInputセレクタ
- 13. Javascript + Selenium、書き込み可能なテスト
- 14. C++スタイルのキャストからパフォーマンスが低下しましたか?
- 15. 書き込み可能なfdsのためにselect()を実行するとビジーループが発生しますか?
- 16. sqlパフォーマンス低下 - 読み込み60,000 xmlファイル - ssis - xmlソース
- 17. Bouncycastle AES 256 JITのためにマルチスレッドの復号速度が低下する
- 18. PowerShellスクリプトのファイル読み込みのパフォーマンスが低すぎます
- 19. カサンドラの書き込みパフォーマンス
- 20. Postgresqlの書込み可能なスレーブは可能ですか?
- 21. のMySQL:パフォーマンスの低下が
- 22. ListAdapter.getView()を同期させるためにパフォーマンスが低下しますか?
- 23. Androidで書き込み可能な既存の画像のためのベストストレージファイル
- 24. TensorFlowは単純なネットワークではパフォーマンスが低下しますか?
- 25. 書き込み集中型アプリケーションのMongoDBのパフォーマンスが異常に低い
- 26. BCryptパフォーマンス低下
- 27. fwrite()パフォーマンス低下
- 28. Wordpressは.htaccessファイルは書き込み不可能ですが、書き込み可能です。
- 29. OpenBSDで書き込み可能で実行可能なマークバイナリ
- 30. ブラウザのJavaScriptで同時読み込み/書き込み読み書きの衝突が可能ですか?
実行時に読み取り専用ページを変更することは考えていませんでした。どのように通常それを行うのですか?私はLinux上で特にシステムコールを見ることは思い出せません。 –
セキュリティ上の理由からだけ.NETがページをR/Oとしてマークしていることは間違いありません。 –
システムコールはmprotectであり、POSIXの一部です。 –