「E4rat」の版間の差分
(同期) |
|||
4行目: | 4行目: | ||
[[it:E4rat]] |
[[it:E4rat]] |
||
[[ru:E4rat]] |
[[ru:E4rat]] |
||
− | [[zh- |
+ | [[zh-hans:E4rat]] |
{{Related articles start}} |
{{Related articles start}} |
||
{{Related|ブートパフォーマンスの向上}} |
{{Related|ブートパフォーマンスの向上}} |
||
77行目: | 77行目: | ||
{{ic|1=init=/sbin/e4rat-preload}} を永続的に[[カーネルパラメータ]]に追加してください。 |
{{ic|1=init=/sbin/e4rat-preload}} を永続的に[[カーネルパラメータ]]に追加してください。 |
||
+ | == e4rat と init システム == |
||
− | === 代案: e4rat-preload-lite === |
||
+ | e4rat-collect はデフォルトで実行時に {{ic|/sbin/init}} を置き換えます。{{ic|systemd}} のデフォルト環境では、このファイルは {{ic|/lib/systemd/systemd}} のシンボリックリンクになっています。他のプロセス (例: {{ic|/usr/bin/busybox}}) を PID 1 に指定する必要がある場合、{{ic|/etc/e4rat.conf}} を編集して {{ic|init}} パラメータを設定することで変更することが可能です: |
||
− | [https://bbs.archlinux.org/viewtopic.php?id=117776&p=1 jlindgren] によって開発されている代わりの preload バイナリが存在し、起動時間をさらに数秒ほど縮めます。 |
||
+ | init /usr/bin/busybox |
||
+ | これによって同一のブートシーケンスで {{ic|e4rat-preload}} と {{ic|bootchart}} の両方を起動することができます。 |
||
− | 起動時間が短縮されるわけは: |
||
− | * C だけを使用し外部のライブラリに依存しません、それによってリンクされる .so ファイルの数を22から3にまで減らしています。 |
||
− | {{Note|Current [0.2.3] version of e4rat-preload is linked against 5 .so libraries, including libc, libm, libpthread ! So there is not much of a difference here.}} |
||
− | * /sbin/init を起動するまではファイルを100個しかプリロードしません、それからは通常のブートシーケンスと同時に残りのファイルをロードします。 |
||
+ | == e4rat-lite == |
||
− | [[AUR]] の {{AUR|e4rat-preload-lite}} でインストールできます。 |
||
+ | 複数の改善がなされている e4rat の代替です。元の e4rat パッケージで発生する問題が解決するかもしれません。{{AUR|e4rat-lite-git}} パッケージでインストールできます。 |
||
− | [[カーネルパラメータ]]に {{ic|1=init=/usr/sbin/e4rat-preload-lite}} を追加 (または置換) してください。 |
||
− | == e4rat |
+ | === e4rat-lite を使う === |
+ | e4rat-lite のコマンドは e4rat と全く同じです。違うのはパスだけです: |
||
− | e4rat-collect はデフォルトで実行時に {{ic|/sbin/init}} を置き換えます。{{ic|systemd}} のデフォルト環境では、このファイルは {{ic|/lib/systemd/systemd}} のシンボリックリンクになっています。他のプロセス (例: {{ic|/usr/bin/busybox}}) を PID 1 に指定する必要がある場合、{{ic|/etc/e4rat.conf}} を編集して {{ic|init}} パラメータを設定することで変更することが可能です: |
||
− | init /usr/bin/busybox |
||
+ | * collect: {{ic|1=init=/usr/bin/e4rat-lite-collect}} |
||
− | これによって同一のブートシーケンスで {{ic|e4rat-preload}} と {{ic|bootchart}} の両方を起動することができます。 |
||
+ | * realloc: {{ic|/usr/bin/e4rat-lite-realloc}} |
||
+ | * preload: {{ic|1=init=/usr/bin/e4rat-preload}} |
||
== Bootchart == |
== Bootchart == |
||
+ | [[Bootchart]] を使うことでシステムの起動グラフを生成できます。CPU やディスクの使用量を視覚的に確認することができます。必須ではありませんが、e4rat によるブートプロセスの変化を確認できます。 |
||
− | {{Warning|This has not worked for and is still in development - any suggestions welcome}} |
||
+ | === bootchart === |
||
− | You will see a noticeable improvement but nothing can beat a nice [[Bootchart]]. Have it run before and after e4rat installation and gawk at the difference. |
||
+ | {{Warning|公式の bootchart パッケージは廃止されており、グラフを生成するために必要な bootchart-render コマンドが含まれていません。bootchart2 を使うことを推奨します。}} |
||
− | === bootchart 0.9-9 === |
||
このバージョンの [[bootchart]] は[[ディスプレイマネージャ]]が立ち上がるとすぐにログの記録を停止します。以下のように上書きすることでログを停止しないようにすることができます: |
このバージョンの [[bootchart]] は[[ディスプレイマネージャ]]が立ち上がるとすぐにログの記録を停止します。以下のように上書きすることでログを停止しないようにすることができます: |
||
121行目: | 120行目: | ||
=== bootchart2 === |
=== bootchart2 === |
||
− | e4rat と共に |
+ | e4rat と共に {{AUR|bootchart2}} を動作させるには {{ic|/sbin/bootchartd2}} を編集して次の行を: |
init="/sbin/init" |
init="/sbin/init" |
||
以下のように置き換えて下さい: |
以下のように置き換えて下さい: |
||
init="/sbin/e4rat-preload" |
init="/sbin/e4rat-preload" |
||
+ | 上記の設定で Bootchart2 による情報を使って起動時間を測定できます。 |
||
− | This will allow you to measure your boot time with the fine informations that Bootchart2 provides. |
||
+ | bootchart2 を停止する時間は {{ic|/etc/bootchartd2.conf}} ファイルを編集することで簡単に設定できます。特定のアプリケーションが起動したときに Bootchart2 のログを止めるには以下のように設定してください: |
||
− | It's easy to set up when to stop bootchart2 (on opposite to bootchat) by editing its configuration file {{ic|/etc/bootchartd.conf}}. Simply adjust the line |
||
EXIT_PROC="kdm_greet xterm konsole gnome-terminal metacity mutter compiz ldm icewm-session enlightenment" |
EXIT_PROC="kdm_greet xterm konsole gnome-terminal metacity mutter compiz ldm icewm-session enlightenment" |
||
+ | もしくは、上記の行を空にすることで手動でログを停止することもできます。 |
||
− | with any program you want Bootchart2 stop logging when it launches, or rather left it empty for logging to be stopped manually. |
||
+ | チャートを生成するには次のコマンドを実行: {{ic|pybootchartgui -i}}。 |
||
− | == トラブルシューティング == |
||
+ | == トラブルシューティング == |
||
− | If things do not work you may want to try the following. |
||
=== startup.log が作られない === |
=== startup.log が作られない === |
||
141行目: | 140行目: | ||
* auditd サービスを無効にする |
* auditd サービスを無効にする |
||
* ヒントがないか次を確認 |
* ヒントがないか次を確認 |
||
− | dmesg | grep e4rat |
+ | $ dmesg | grep e4rat |
* {{ic|e4rat.conf}} の verbose と loglevel を31にまで増やす |
* {{ic|e4rat.conf}} の verbose と loglevel を31にまで増やす |
||
+ | * e4rat のかわりに e4rat-lite を使用する |
||
===e4rat が誤って ext2 ファイルシステムと認識する=== |
===e4rat が誤って ext2 ファイルシステムと認識する=== |
||
158行目: | 158行目: | ||
== 参照 == |
== 参照 == |
||
− | * [https://bbs.archlinux.org/viewtopic.php?id=115976 |
+ | * [https://bbs.archlinux.org/viewtopic.php?id=115976 フォーラムのメインスレッド] |
− | * [https://bbs.archlinux.org/viewtopic.php?id=117776 Improved e4rat-preload - |
+ | * [https://bbs.archlinux.org/viewtopic.php?id=117776 Improved e4rat-preload - フォーラムスレッド] |
2017年1月18日 (水) 21:40時点における版
e4rat は e4 'reduced access time' (ext4 ファイルシステムのみ) の略語で、Andreas Rid と Gundolf Kiefer によるプロジェクトです。e4rat range of tools は e4rat-collect, e4rat-realloc, e4rat-preload から成り立っています。
現在のバージョンは 0.2.3 です。
プロセス
古典的な bootchart を見ると、ブートプロセスの間にディスクも CPU も完全には使われていないことに気づくかもしれません。e4rat はブートプロセスでディスクと CPU をフルに使うようにして、起動時間を劇的に縮めます。3つの段階に分かれています:
- e4rat-collect - 特定時間ファイルを収集します (デフォルトは120秒ですが変更することも可能です)
- e4rat-realloc - ファイルを再配置します
- e4rat-preload - ファイルをプリロードします
利益を得る人、得ない人
X を起動して、多数のプログラムを開くような、典型的なシングルユーザーセットアップで e4rat は大変効果があることが証明されています。サーバーセットアップで CLI で起動するような場合、起動時間の短縮はあまり効果があらわれないでしょう。SSD ドライブを使っている場合も利益はあまりありません、可動部がないためディスクの遅延が(ほとんど)ないためです - Ureadahead はチェックする価値があるかもしれません。
備えあれば憂いなし。パーティションに入っているデータを消失したくないのならばバックアップを取っておきましょう。
インストール
AUR から e4ratAUR をインストールしてください。
使用方法
それでは本題に入ります:
e4rat-collect
e4rat にファイルのリストを収集させるために init=/sbin/e4rat-collect
をカーネルパラメータに追加します。例:
kernel /vmlinuz-linux root=/dev/disk/by-label/ARCH init=/sbin/e4rat-collect ro 5
これは一度だけやれば十分なので、grub のコマンドラインなどにこのコマンドを追加すれば良いでしょう。
起動時に e4rat-collect はデフォルトで120秒間システムを監視します。なので起動したら、2分の間に、X にログインして、お気に入りのブラウザやメールクライアントを開いたりしてください。それらの活動すべてが記録されます。デフォルトの120秒を変更したいときは /etc/e4rat.conf
を編集してください。手動で e4rat-collect を停止するには次を入力:
e4rat-collect -k
もしくは:
pkill e4rat-collect
ちゃんと起動して規定の時間待機したら /var/lib/e4rat/startup.log
ファイルを見て下さい。
そして忘れずにブートローダーの設定ファイルから e4rat-collect コマンドを取り除いておきましょう (grub のコマンドラインに追加した場合は必要ありません)。
e4rat-realloc
e4rat-collect を実行したら、root でログインして次を実行:
e4rat-realloc /var/lib/e4rat/startup.log
startup.log ファイルに記述されたファイルの数によってしばらく時間がかかります。systemctl isolate rescue
でレスキューモードに移行することで (Systemd#ターゲット表)、multiuser.target ではフリーにならない inode やブロックも再配置することができます。
e4rat-preload
init=/sbin/e4rat-preload
を永続的にカーネルパラメータに追加してください。
e4rat と init システム
e4rat-collect はデフォルトで実行時に /sbin/init
を置き換えます。systemd
のデフォルト環境では、このファイルは /lib/systemd/systemd
のシンボリックリンクになっています。他のプロセス (例: /usr/bin/busybox
) を PID 1 に指定する必要がある場合、/etc/e4rat.conf
を編集して init
パラメータを設定することで変更することが可能です:
init /usr/bin/busybox
これによって同一のブートシーケンスで e4rat-preload
と bootchart
の両方を起動することができます。
e4rat-lite
複数の改善がなされている e4rat の代替です。元の e4rat パッケージで発生する問題が解決するかもしれません。e4rat-lite-gitAUR パッケージでインストールできます。
e4rat-lite を使う
e4rat-lite のコマンドは e4rat と全く同じです。違うのはパスだけです:
- collect:
init=/usr/bin/e4rat-lite-collect
- realloc:
/usr/bin/e4rat-lite-realloc
- preload:
init=/usr/bin/e4rat-preload
Bootchart
Bootchart を使うことでシステムの起動グラフを生成できます。CPU やディスクの使用量を視覚的に確認することができます。必須ではありませんが、e4rat によるブートプロセスの変化を確認できます。
bootchart
このバージョンの bootchart はディスプレイマネージャが立ち上がるとすぐにログの記録を停止します。以下のように上書きすることでログを停止しないようにすることができます:
ログを続行するには以下のように /etc/bootchartd.conf
を変更:
AUTO_STOP_LOGGER="no"
手動で停止するには次を実行:
# bootchartd stop
e4rat-preload と bootchart の両方を実行するには grub の kernel 行に以下を追加:
init=/sbin/bootchartd bootchart_init=/sbin/e4rat-preload
bootchart2
e4rat と共に bootchart2AUR を動作させるには /sbin/bootchartd2
を編集して次の行を:
init="/sbin/init"
以下のように置き換えて下さい:
init="/sbin/e4rat-preload"
上記の設定で Bootchart2 による情報を使って起動時間を測定できます。
bootchart2 を停止する時間は /etc/bootchartd2.conf
ファイルを編集することで簡単に設定できます。特定のアプリケーションが起動したときに Bootchart2 のログを止めるには以下のように設定してください:
EXIT_PROC="kdm_greet xterm konsole gnome-terminal metacity mutter compiz ldm icewm-session enlightenment"
もしくは、上記の行を空にすることで手動でログを停止することもできます。
チャートを生成するには次のコマンドを実行: pybootchartgui -i
。
トラブルシューティング
startup.log が作られない
- auditd サービスを無効にする
- ヒントがないか次を確認
$ dmesg | grep e4rat
e4rat.conf
の verbose と loglevel を31にまで増やす- e4rat のかわりに e4rat-lite を使用する
e4rat が誤って ext2 ファイルシステムと認識する
rootfstype=ext4
をブートローダーのカーネルパラメータに追加してください。
/var/lib/e4rat/startup.log にアクセスできない
This suggests that you have /var
on a separate partition which is not yet mounted during boot. You need move your startup.log
to an accessible partition (/etc/e4rat/
is just fine) and adjust your /etc/e4rat.conf
to reflect this change:
startup_log_file /etc/e4rat/startup.log
うるさいブートメッセージを削除する
起動中の e4rat-preload のメッセージがうっとうしい場合は、/etc/e4rat.conf
で verbose を 1 に減らします。