Linuxでプログラムの起動を高速化するためのPrelinkおよびPreload

このノートでは、Linuxシステムの高速化に役立つ2つのユーティリティ、特にアプリケーションの起動-prelinkpreloadについて説明します。 プレリンクは、実行可能ファイルを最適化してライブラリにすばやくリンクします。 プリロードキャッシュは、一般的に使用されるライブラリとプログラムをキャッシュします。

カットの下の詳細。



プレリンク



ほとんどのLinuxアプリケーションは、操作に必要なさまざまな機能を含む動的にロードされたライブラリを使用します。 アプリケーションを起動するたびに、これらのライブラリもロードする必要があります。 多数の接続がある重いアプリケーションの場合、このプロセスには時間がかかる場合があります。 同時に、ライブラリ自体を変更しない場合、ライブラリをリンクするために実行されるアクションは同じです。 prelinkユーティリティを使用すると、実行可能ファイルのライブラリにリンクを直接登録できるため、アプリケーションの起動が高速化されます。 これは、アプリケーションを再コンパイルせずに行われます。

配布手段を使用してprelinkアプリケーションをインストールします。 ファイル/etc/prelink.confには、prelinkがファイルを処理するパスのリストが含まれています。 ほとんどの場合、このリストを変更する必要はありません;ディストリビューションの作者がこれを行ってくれました。 prelink -amfR (--all --conserve-memory --force --random)



を実行して、すべてのアプリケーションをprelink -amfR (--all --conserve-memory --force --random)



リンクします。 オプションの説明:

-a-すべて、すべての実行可能ファイルに事前リンクを適用します。

-m-仮想メモリスペースを節約します。 これは、リンクする必要のあるライブラリが多数ある場合に必要です。

-f-既に公開されているファイルの事前リンクを強制します。 これは必要です prelinkは、依存ライブラリが変更されている可能性がある既存の古いリンクファイルの処理を停止します。

-R-ランダム、アドレスのランダムな順序を選択します。これにより、バッファーオーバーフロー攻撃に対するセキュリティが向上します。

ライブラリやアプリケーションを更新するたびにprelinkを実行する必要があることに注意してください。 cronで実行するように割り当てることができます。



プリロード



プリロードは、頻繁に使用されるプログラムとライブラリに関する情報を収集し、それらをメモリにキャッシュしてクイック起動するデーモンです。 したがって、RAMが少ない場合は使用するのは合理的ではありません。 設定は/etc/preload.confファイルにあります。 デフォルト値が最も適している可能性が高いですが、主なオプションについて説明します。

model.cycle-使用済みのプログラムとライブラリに関するデータをシステムからプリロードする頻度。

model.halflife-プリロードが古い情報をダンプする頻度。

model.minsizeは、プリロードが処理するプログラムまたはライブラリのサイズ制限です。

ファイル/var/lib/preload/preload.state



で、プリロードの操作に関する情報を確認できます。



テスト中



timeユーティリティを使用して、「php -v」コマンドの実行を数秒間隔で5回測定しました。 最初に、最適化なしの5つの測定、次にprelinkユーティリティが起動され、5つの測定が実行されました。 最後に、プリロードデーモンが起動され、phpがプリロードキャッシュに表示された後、5回の測定が再度実行されました。 結果はチャートに表示されます(数字-ミリ秒):







デスクトップでは、多数のリンクされたライブラリを使用する「重い」DEにより、パフォーマンスの向上が大幅に向上することに注意してください。



使用した材料は次のとおりです。

* www.gentoo.org/doc/en/prelink-howto.xml

* sourceforge.net/projects/preload



UPD: このコメントでは、 snakeyeはY軸が0から始まるより正確なプロットを提供します。

UPD2: このコメントで、 wRARは-f prelinkオプションの説明を修正します。



All Articles