prelink は、大概は不要
Gentoo Wiki にも載っている prelink ですが、結論から言うと、現在では多くの状況では不要です。
prelink
は、それぞれのプログラムに必要な共用ライブラリ(Shared Object)を、動的にロードするのではなく予め組み込んでしまうためのソフトウェアです。
prelink
を用いることで、ライブラリ組込み済のプログラムの実行開始は早くなります。
その代わり、そのプログラムのサイズは大きくなりますし、ライブラリを組込む際の処理に時間と負荷がかかりますし、ライブラリやプログラムが更新されたらまた組込み直しをせねばなりません。
こうした処理のために一般的には、 cron
で定期的に prelink
を実行することになります。
prelink
は、 RedHat 発祥のソフトウェアです。
そのことからも想像がつく通り、サーバ用途で便利だったはずです。
常時稼働のシステムで、負荷の少ない時間帯に prelink
を実行しておくことで、プログラムの起動やシステム再起動が早くなります。
しかし現在の動向からすると、prelink
は時代遅れです。
まず、エンドユーザが用いるような、常時稼働ではないシステムでは、 cron
で prelink
を回すのは定時ではなくなってしまいます。一般的には anacron
が頃合いを見計らって実行することになってしまいます。しかし、必要なときだけシステムを起動する状況では、裏で prelink
が回るのは邪魔です。
次に、サーバ用途でも、少なからぬサーバでは効果が少なかったり邪魔になってしまう時代になりました。
速いシステムでは、 prelink
で得られる効果は小さくなっています。
また、日夜に亘りリクエストを受けるようなサーバであれば、暇な時間帯というのはありません。
現に、 Fedora では prelink
はデフォルトではなくなっています。#1183 (Don't enable prelink by default in Fedora) – FESCo
それでも prelink
は、一定の状況下では効果的ではありますが、はたしてそうした状況にあるのか否かを検討して導入しないと、
prelink
のたびに負荷がかかる、プログラムの実行バイナリが書き換わりサイズも増えるといったデメリットを、予め知らないうちに被ってしまいます。