ディレクトリに配布されたロケールファイルと比較して、ロケールアーカイブの利点は何ですか?

ディレクトリに配布されたロケールファイルと比較して、ロケールアーカイブの利点は何ですか?

locale-archive多くのLinuxディストリビューションでは、ファイルが優先される理由と、各ロケールに対してコンパイルされたファイルと比較して、ファイルの利点がどの程度あるのか疑問に思います。

答え1

たとえば、ロケールアーカイブにはシステムマニュアルページが作成された言語が含まれています。このメモリマッピングを使用すると、ディスク読み取り操作を実行するために必要なシステムコールを防止し、ファイルをメモリから読み取ることができるため、より高速なアクセスが可能になります。

メモリマッピングファイル(共有ライブラリと同様に)プロセスの仮想メモリの一部です。トップコマンド、VIRTフィールド。

したがって、メモリにマッピングされたロケールアーカイブ部分は、実際にはメモリに一度だけ存在するglibcを使用する各プロセスの仮想メモリ(デフォルトではすべて)に追加されます。

最後に、各プロセスについて、仮想メモリはプロセスの物理メモリ、つまりメモリマップされたロケールアーカイブ部分の量を過大評価します。

答え2

パフォーマンス。

以下のロケールファイルは、/usr/share/i18nいくつかの解析が必要なテキストファイルです。これをロードする各プロセスはそれを解析する必要があります。

locale-archiveアプリケーションがメモリ内のデータにアクセスする方法に近いバイナリ形式を使用します。それ自体は解析を必要としません。ファイルを開き、データ構造を読み取るだけです。地図ファイルがメモリに書き込まれます)。

さらに、メモリマップされたファイルはプロセス間で共有されるため、各プロセスがファイルを解析し、メモリ内のデータ構造の独自のコピーを構築する必要があるシナリオと比較してメモリが節約されます。

複数の小さなファイルの代わりに1つの大きなファイルを使用すると、関連するすべてのデータがより速くロードされます。 1つのファイルを開くだけで、ディレクトリ内のファイルを列挙する必要はありません。

関連情報