「E4rat」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
4行目: 4行目:
 
[[it:E4rat]]
 
[[it:E4rat]]
 
[[ru:E4rat]]
 
[[ru:E4rat]]
[[zh-CN:E4rat]]
+
[[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 と init システム ==
+
=== 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 と共に [[bootchart]]2 を動作させるには {{ic|/sbin/bootchartd}} を編集して次の行を:
+
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 Main discussion on the forum]
+
* [https://bbs.archlinux.org/viewtopic.php?id=115976 フォーラムのメインスレッド]
* [https://bbs.archlinux.org/viewtopic.php?id=117776 Improved e4rat-preload - forum thread]
+
* [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 はチェックする価値があるかもしれません。

ノート: (ureadahead のユーザーへ) e4rat の公式マニュアル には ureadahead が e4rat と衝突すると書かれています。この記述は Ubuntu では正しいですが、Arch Linux では e4rat と ureadahead を一緒に使っても問題なく動作します。ただし起動時間はあまり短縮されません。

備えあれば憂いなし。パーティションに入っているデータを消失したくないのならばバックアップを取っておきましょう。

インストール

AUR から e4ratAUR をインストールしてください。

ノート:
  • ビルドするために、最初に staticlibs オプションを明示的に有効にして auditABS からリビルドする必要があります。デフォルトの audit パッケージをインストールするだけではビルドエラーが発生します。
  • audit を使うには audit をサポートしたカーネルが必要です。カーネルコンフィグで audit (CONFIG_AUDIT) と audit のシステムコールのサポート (CONFIG_AUDITSYSCALL) を有効にしてください。カーネル/コンパイル/Arch Build System も参照。また、カーネルパラメータに audit=1 を追加してください。

使用方法

それでは本題に入ります:

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 やブロックも再配置することができます。

ノート:
  • It may be worthwhile to repeat the reallocation step multiple times before exiting or rebooting in order to further reduce the fragmentation count. Simply re-run the command a few times to see if this is possible on the your setup. If so you'll see the count number reduced after a few runs. This is perfectly safe and shouldn't cause any issues with booting.
  • SysV スタイルの init システムを使っている場合、e4rat-realloc を実行する前に sudo init 1 を使ってランレベル 1 に切り替える必要があります。

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-preloadbootchart の両方を起動することができます。

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 パッケージは廃止されており、グラフを生成するために必要な bootchart-render コマンドが含まれていません。bootchart2 を使うことを推奨します。

このバージョンの 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 に減らします。

参照