NUMAシステムでのメモリ管理の改善
NUMAシステムのページテーブル管理を簡素化する新しいアプローチ。
― 1 分で読む
目次
メモリ管理はコンピュータの動作において重要な部分で、特に異なるプロセッサ間で大量のデータを扱うときに大事だよ。非一様メモリアクセス(NUMA)モデルを使用するシステムでは、メモリがノードに分けられていて、それぞれが独自のメモリとプロセッサを持ってる。このため、ページテーブルやトランスレーションルックアサイドバッファ(TLB)を管理するのが難しくなることがあるんだ。
ページテーブルとTLBとは?
ページテーブルは、オペレーティングシステムがメモリをどのように異なるタスクに割り当てるかを管理するのに役立つ。物理メモリのどこにデータが保存されているかを追跡するんだ。TLBは特別なキャッシュで、これらのメモリアドレスの取得を早めて、データにアクセスするのにかかる時間を短縮する。
プロセスがメモリにアクセスする必要があるとき、ページテーブルを通じて対応する物理アドレスを探すんだ。もし必要なアドレスがTLBにないと、TLBミスが起きて、必要な情報を取得するのにもっと手間と時間がかかる。
NUMAシステムの課題
NUMAシステムでは、ローカルノードのメモリにアクセスするのがリモートノードのメモリにアクセスするよりも一般的に速い。この速度の違いが問題になることがあって、プロセスが異なるNUMAノードにあるメモリにアクセスしようとすると、パフォーマンスが遅くなる。
こういうシステムでメモリを管理するとき、オペレーティングシステムはページテーブルの更新を処理しなきゃいけなくて、しばしば全プロセッサでTLBの無効化が必要になる。このプロセスはTLBシュートダウンとして知られてる。残念ながら、このプロセスは特に複数のプロセッサを持つシステムでは大きな遅延を引き起こすことがあるんだ。
TLBシュートダウンのコスト
ページテーブルが更新されるたびに、オペレーティングシステムは古いデータをキャッシュしている可能性がある全てのプロセッサでTLBエントリを無効にしなきゃいけなくなる。このプロセスは非効率的で、遅延がマイクロ秒から数十マイクロ秒に及ぶことがある。スレッドの数が増えると、これらの遅延はさらに悪化して、特に高スレッドアプリケーションでカスケード式の遅延を引き起こす。
提案された解決策の概要
こうした課題に対処するために、新しい管理メカニズムが提案された。このメカニズムは、NUMAシステムにおけるページテーブルの扱いを効率化し、すべてのノードでのページテーブルの完全な複製の必要性を減らすことを目指してる。重点は、オンダマンドかつ部分的なページテーブルの複製に置かれていて、オーバーヘッドを最小限に抑えるんだ。
新しいページテーブル管理メカニズム
提案された管理システムは、いくつかの目標を達成しようとしている:
メモリオーバーヘッドの削減:すべてのノードにページテーブルを複製する代わりに、実際に必要なものだけを複製するよ。
アドレス変換の最適化:必要なページテーブルを、必要とするプロセッサの近くに保持することで、アドレス変換の速度を向上させることを目指してる。
TLBシュートダウンの最小化:どのノードがページテーブルのコピーを持っているかを把握することで、不必要なTLBシュートダウンを制限して、遅延を減らすんだ。
部分的な複製の利点
新しいメカニズムは、ページテーブルの部分的でオンデマンドの複製を作成することに焦点を当ててる。これは、すべてのノードに全ページテーブルの完全なコピーを持つのではなく、現在使用中のものや最近アクセスされたものだけを該当ノードに複製するってこと。
この戦略を採ることで、システムはメモリ使用量とコヒーレンス更新の必要性を減らせるから、どのコピーが現在のものかを追跡する際のオーバーヘッドが少なくなる。こうすれば、更新が必要なときに、どのノードに通知するべきかが分かる。
評価と結果
提案された方法は、従来の方法と比較してその効果を調べるために、複数ソケット(プロセッサ)を持つシステムでテストされた。
パフォーマンスの改善
さまざまなアプリケーションで、新しいシステムは従来の方法に比べて大幅なパフォーマンス向上を示した。例えば、mprotectやmunmapのような操作を行うとき、提案されたメカニズムはある場合ではパフォーマンスを最大40倍向上させることができた。他のメモリ操作でもページテーブルの最適化管理によってオーバーヘッドが減り、パフォーマンスが向上した。
TLBシュートダウンの削減
このメカニズムはTLBシュートダウンの削減も実現してる。どのノードがどのページテーブルを共有しているかを詳細に把握することで、必要ないノードでのTLBの不必要な無効化を避けられる。これにより、ノード間で送るべき中断が減るから、スムーズで早い動作が実現できるんだ。
実際のアプリケーションでの結果
新しい方法をウェブサーバーやキー・バリュー・ストアなどの実際のソフトウェアに適用したとき、改善点がより明確になった。例えば、ウェブサーバーの文脈では、提案されたシステムが複数のリクエストを効率的に処理し、TLBシュートダウンの影響が少なくなったことで、スループットが向上し、応答時間が早くなった。
キー・バリュー・ストアにおいても、メモリ保護に関連するオーバーヘッドを減らしながらページテーブルを管理することで、再びスループットが向上することができた。全体的に、さまざまなアプリケーションで一貫した改善が見られたんだ。
メモリ管理操作
システムは基本的なメモリ管理操作も改善した。例えば、メモリの割り当てや解放中、ページテーブル管理の負荷が減ったおかげでプロセスが速くなった。この方法では、mmap、munmap、mprotectのような操作が従来のシステムに比べて効率的になった。
結論
要するに、NUMAシステムにおけるページテーブル管理のための提案された方法は、よりスマートで効率的なアプローチを提供してる。部分的かつオンデマンドの複製にシフトし、不要なTLBシュートダウンを最小化することで、全体的なシステムパフォーマンスを向上させることができるんだ。これにより、リソースの利用が改善され、多くのスレッドやソケット環境での操作が早くなる。
今後の作業は、これらのメカニズムをさらに最適化したり、類似の課題が存在する仮想化シナリオへの拡張を検討することに焦点を合わせられるかもしれない。メモリ管理の改善を続けることで、システムは現代のアプリケーションやハードウェアの増大する要求に応じていけるようになるんだ。
タイトル: numaPTE: Managing Page-Tables and TLBs on NUMA Systems
概要: Memory management operations that modify page-tables, typically performed during memory allocation/deallocation, are infamous for their poor performance in highly threaded applications, largely due to process-wide TLB shootdowns that the OS must issue due to the lack of hardware support for TLB coherence. We study these operations in NUMA settings, where we observe up to 40x overhead for basic operations such as munmap or mprotect. The overhead further increases if page-table replication is used, where complete coherent copies of the page-tables are maintained across all NUMA nodes. While eager system-wide replication is extremely effective at localizing page-table reads during address translation, we find that it creates additional penalties upon any page-table changes due to the need to maintain all replicas coherent. In this paper, we propose a novel page-table management mechanism, called numaPTE, to enable transparent, on-demand, and partial page-table replication across NUMA nodes in order to perform address translation locally, while avoiding the overheads and scalability issues of system-wide full page-table replication. We then show that numaPTE's precise knowledge of page-table sharers can be leveraged to significantly reduce the number of TLB shootdowns issued upon any memory-management operation. As a result, numaPTE not only avoids replication-related slowdowns, but also provides significant speedup over the baseline on memory allocation/deallocation and access control operations. We implement numaPTEin Linux on x86_64, evaluate it on 4- and 8-socket systems, and show that numaPTE achieves the full benefits of eager page-table replication on a wide range of applications, while also achieving a 12% and 36% runtime improvement on Webserver and Memcached respectively due to a significant reduction in TLB shootdowns.
著者: Bin Gao, Qingxuan Kang, Hao-Wei Tee, Kyle Timothy Ng Chu, Alireza Sanaee, Djordje Jevdjic
最終更新: 2024-01-27 00:00:00
言語: English
ソースURL: https://arxiv.org/abs/2401.15558
ソースPDF: https://arxiv.org/pdf/2401.15558
ライセンス: https://creativecommons.org/licenses/by/4.0/
変更点: この要約はAIの助けを借りて作成されており、不正確な場合があります。正確な情報については、ここにリンクされている元のソース文書を参照してください。
オープンアクセスの相互運用性を利用させていただいた arxiv に感謝します。