「Prelink」の版間の差分
Kusakata.bot (トーク | 投稿記録) 細 (文字列「http://linux.die.net/」を「https://linux.die.net/」に置換) |
Kusakata.bot (トーク | 投稿記録) 細 (文字列「http://lwn.net/」を「https://lwn.net/」に置換) |
||
4行目: | 4行目: | ||
ほとんどのプログラムは機能させるのにライブラリを必要とします。ライブラリは、リンカによってコンパイル時にプログラムに統合させたり (静的リンク)、ローダーによってプログラムの実行時に統合させることが可能です (動的リンク)。動的リンクにはコードのサイズが減って管理が楽になるという利点がありますが、プログラムが実行されるたびに、ローダーが該当するライブラリを見つけ出さなければなりません。ライブラリはメモリのあちこちに散らばっているため、性能にペナルティを与えてしまうことになり、必要とするライブラリが増えれば増えるほど、ペナルティも増加します。Prelink はシステムの動的リンカを使用して、再配置によってあらかじめリンクを行っておくことで (実行可能ファイルを "prelink" する) ペナルティを減らします。何らかの理由で、prelink された後にライブラリが変更されなければ、プログラムは実行時にライブラリを探すのに時間を費やす必要はなくなります。 |
ほとんどのプログラムは機能させるのにライブラリを必要とします。ライブラリは、リンカによってコンパイル時にプログラムに統合させたり (静的リンク)、ローダーによってプログラムの実行時に統合させることが可能です (動的リンク)。動的リンクにはコードのサイズが減って管理が楽になるという利点がありますが、プログラムが実行されるたびに、ローダーが該当するライブラリを見つけ出さなければなりません。ライブラリはメモリのあちこちに散らばっているため、性能にペナルティを与えてしまうことになり、必要とするライブラリが増えれば増えるほど、ペナルティも増加します。Prelink はシステムの動的リンカを使用して、再配置によってあらかじめリンクを行っておくことで (実行可能ファイルを "prelink" する) ペナルティを減らします。何らかの理由で、prelink された後にライブラリが変更されなければ、プログラムは実行時にライブラリを探すのに時間を費やす必要はなくなります。 |
||
− | {{Warning|Prelink の使用に対して反対する主張が [https://fedorahosted.org/fesco/ticket/1183 Fedora バグ #1183] でされています。[ |
+ | {{Warning|Prelink の使用に対して反対する主張が [https://fedorahosted.org/fesco/ticket/1183 Fedora バグ #1183] でされています。[https://lwn.net/Articles/341244/ LWN の記事] のまとめより: "総合して、pre-link はちょっとしたハックであり、わざわざそれを行うほどの効果があるかは不明である"。}} |
==インストール== |
==インストール== |
2018年2月6日 (火) 23:43時点における版
ほとんどのプログラムは機能させるのにライブラリを必要とします。ライブラリは、リンカによってコンパイル時にプログラムに統合させたり (静的リンク)、ローダーによってプログラムの実行時に統合させることが可能です (動的リンク)。動的リンクにはコードのサイズが減って管理が楽になるという利点がありますが、プログラムが実行されるたびに、ローダーが該当するライブラリを見つけ出さなければなりません。ライブラリはメモリのあちこちに散らばっているため、性能にペナルティを与えてしまうことになり、必要とするライブラリが増えれば増えるほど、ペナルティも増加します。Prelink はシステムの動的リンカを使用して、再配置によってあらかじめリンクを行っておくことで (実行可能ファイルを "prelink" する) ペナルティを減らします。何らかの理由で、prelink された後にライブラリが変更されなければ、プログラムは実行時にライブラリを探すのに時間を費やす必要はなくなります。
インストール
prelinkAUR パッケージをインストールしてください。
設定
全ての設定は /etc/prelink.conf
で行います。
使用方法
Prelink
次のコマンドは /etc/prelink.conf
で指定したディレクトリ内の全てのバイナリを prelink します:
# prelink -amR
除外リスト
議論ページより:
/etc/prelink.conf
# Skype -b /usr/lib32/skype/skype -b /usr/lib/skype/skype # Flash Player Plugin -b /usr/lib/mozilla/plugins/libflashplayer.so # NVIDIA -b /usr/lib/libGL.so* -b /usr/lib32/libGL.so* -b //usr/lib/libOpenCL.so* -b //usr/lib32/libOpenCL.so* -b /usr/lib32/vdpau/ -b /usr/lib/vdpau/ -b /usr/lib/xorg/modules/drivers/nvidia_drv.so -b /usr/lib/xorg/modules/extensions/libglx.so* -b /usr/lib/libnvidia-* -b /usr/lib32/libnvidia-* # Catalyst -b /usr/lib/libati* -b /usr/lib/fglrx* -b /usr/lib/libAMDXvBA* -b /usr/lib/libGL.so* -b /usr/lib/libfglrx* -b /usr/lib/xorg/modules/dri/fglrx_dri.so -b /usr/lib/xorg/modules/drivers/fglrx_drv.so -b /usr/lib/xorg/modules/extensions/fglrx/ -b /usr/lib/xorg/modules/linux/libfglrxdrm.so -b /usr/lib/xorg/modules/extensions/libglx.so
prelink の削除
全てのバイナリから prelink を削除:
# prelink -au
毎日実行される cron ジョブ
アップデートが行われても速度を保つために cron ジョブの設定が推奨されています (他のディストリのパッケージに含まれています)。/etc/cron.daily/prelink
として保存してください:
/etc/cron.daily/prelink
#!/bin/bash [[ -x /usr/bin/prelink ]] && /usr/bin/prelink -amR &>/dev/null
そして所有権とパーミッションの設定をしてください:
# chmod 755 /etc/cron.daily/prelink
また、AUR にある prelink-systemdAUR パッケージは上記の cron スクリプトと同じ効果を持つ systemd タイマーユニットをインストールします。
KDE
KDE に prelink のことを教えることで高速に起動することができます。全てのユーザーに適用されるように以下を設定すると良いでしょう:
/etc/profile.d/kde-is-prelinked.sh
export KDE_IS_PRELINKED=1
そして所有権とパーミッションの設定をしてください:
# chmod 755 /etc/profile.d/kde-is-prelinked.sh