「E4rat」の版間の差分
細 (1版 をインポートしました) |
(→e4rat-lite: 情報を更新) |
||
(2人の利用者による、間の6版が非表示) | |||
2行目: | 2行目: | ||
[[en:E4rat]] |
[[en:E4rat]] |
||
[[es:E4rat]] |
[[es:E4rat]] |
||
+ | [[it:E4rat]] |
||
[[ru:E4rat]] |
[[ru:E4rat]] |
||
− | [[zh- |
+ | [[zh-hans:E4rat]] |
{{Related articles start}} |
{{Related articles start}} |
||
− | {{ |
+ | {{Related|ブートパフォーマンスの向上}} |
− | {{ |
+ | {{Related|Preload}} |
{{Related|Ureadahead}} |
{{Related|Ureadahead}} |
||
{{Related|Ext4}} |
{{Related|Ext4}} |
||
13行目: | 14行目: | ||
[http://e4rat.sourceforge.net/ e4rat] は e4 'reduced access time' (ext4 ファイルシステムのみ) の略語で、Andreas Rid と Gundolf Kiefer によるプロジェクトです。[http://e4rat.sourceforge.net/ e4rat range of tools] は e4rat-collect, e4rat-realloc, e4rat-preload から成り立っています。 |
[http://e4rat.sourceforge.net/ e4rat] は e4 'reduced access time' (ext4 ファイルシステムのみ) の略語で、Andreas Rid と Gundolf Kiefer によるプロジェクトです。[http://e4rat.sourceforge.net/ e4rat range of tools] は e4rat-collect, e4rat-realloc, e4rat-preload から成り立っています。 |
||
+ | e4rat-lite と呼ばれる別の実装がありますが、これは元の e4rat プロジェクトよりもアクティブで最適化されています。[[#e4rat-lite|e4rat-lite section]] を参照してください。 |
||
− | 現在のバージョンは 0.2.3 です。 |
||
== プロセス == |
== プロセス == |
||
26行目: | 27行目: | ||
X を起動して、多数のプログラムを開くような、典型的なシングルユーザーセットアップで e4rat は大変効果があることが証明されています。サーバーセットアップで CLI で起動するような場合、起動時間の短縮はあまり効果があらわれないでしょう。SSD ドライブを使っている場合も利益はあまりありません、可動部がないためディスクの遅延が(ほとんど)ないためです - [[Ureadahead]] はチェックする価値があるかもしれません。 |
X を起動して、多数のプログラムを開くような、典型的なシングルユーザーセットアップで e4rat は大変効果があることが証明されています。サーバーセットアップで CLI で起動するような場合、起動時間の短縮はあまり効果があらわれないでしょう。SSD ドライブを使っている場合も利益はあまりありません、可動部がないためディスクの遅延が(ほとんど)ないためです - [[Ureadahead]] はチェックする価値があるかもしれません。 |
||
− | {{Note| |
+ | {{Note|''(ureadahead のユーザーへ)'' [http://e4rat.sourceforge.net/wiki/index.php/Main_Page#Ubuntu_and_ureadahead e4rat の公式マニュアル] には ureadahead が e4rat と衝突すると書かれています。この記述は Ubuntu では正しいですが、Arch Linux では e4rat と ureadahead を一緒に使っても問題なく動作します。ただし起動時間はあまり短縮されません。}} |
備えあれば憂いなし。パーティションに入っているデータを消失したくないのならばバックアップを取っておきましょう。 |
備えあれば憂いなし。パーティションに入っているデータを消失したくないのならばバックアップを取っておきましょう。 |
||
32行目: | 33行目: | ||
== インストール == |
== インストール == |
||
− | [[ |
+ | [[AUR]] から {{AUR|e4rat}} をインストールしてください。 |
+ | {{Note| |
||
− | {{Note|ビルドするために、最初に {{ic|staticlibs}} オプションを明示的に有効にして {{Pkg|audit}} を [[ABS|ABS]] からリビルドする必要があります。デフォルトの {{Pkg|audit}} パッケージをインストールするだけではビルドエラーが発生します。}} |
||
+ | * ビルドするために、最初に {{ic|staticlibs}} オプションを明示的に有効にして {{Pkg|audit}} を [[ABS]] からリビルドする必要があります。デフォルトの {{Pkg|audit}} パッケージをインストールするだけではビルドエラーが発生します。 |
||
+ | * audit を使うには audit をサポートしたカーネルが必要です。カーネルコンフィグで audit (CONFIG_AUDIT) と audit のシステムコールのサポート (CONFIG_AUDITSYSCALL) を有効にしてください。[[カーネル/コンパイル/Arch Build System]] も参照。また、カーネルパラメータに {{ic|1=audit=1}} を追加してください。 |
||
+ | }} |
||
+ | {{Tip| |
||
− | {{Note|audit を使うには audit をサポートしたカーネルが必要です。カーネルコンフィグで audit (CONFIG_AUDIT) と audit のシステムコールのサポート (CONFIG_AUDITSYSCALL) を有効にしてください。[[Kernels/Compilation/Arch Build System|カーネル/コンパイル/Arch Build System]] も参照。そして {{ic|1=audit=1}} パラメータを使ってカーネルを実行します。}} |
||
+ | * 2020-05-06 の時点で、 {{AUR|e4rat}} は1年以上更新されておらず(最終更新日:2019-04-01)、コンパイルされていません。 代替の {{AUR|e4rat-lite-git}} には利用可能なパッチがありますが、元の {{AUR|e4rat}} に移植または適用されていません。 詳細については、 AUR のコメントセクションと [https://wiki.archlinux.jp/index.php/E4rat#e4rat-lite e4rat-lite] セクションをご覧ください。 |
||
+ | * [https://wiki.archlinux.jp/index.php/E4rat#e4rat-lite e4rat-lite] は再構築された {{Pkg|audit}} を必要とせず、公式リポジトリのバージョンで正常に機能します。 |
||
+ | }} |
||
== 使用方法 == |
== 使用方法 == |
||
62行目: | 69行目: | ||
=== e4rat-realloc === |
=== e4rat-realloc === |
||
+ | ''e4rat-collect'' を実行したら、root でログインして次を実行: |
||
− | 再配置を行うために init 1 に変更: |
||
+ | e4rat-realloc /var/lib/e4rat/startup.log |
||
− | sudo init 1 |
||
− | + | startup.log ファイルに記述されたファイルの数によってしばらく時間がかかります。{{ic|systemctl isolate rescue}} でレスキューモードに移行することで ([[Systemd#ターゲット表]])、''multiuser.target'' ではフリーにならない inode やブロックも再配置することができます。 |
|
+ | |||
− | root でログインして次を実行: |
||
+ | {{Note| |
||
− | e4rat-realloc /var/lib/e4rat/startup.log |
||
+ | * フラグメンテーションカウントをさらに減らすために、終了またはリブートする前に、再割り当て手順を複数回繰り返すことが有効な場合があります。このコマンドを数回再実行して、セットアップでこれが可能かどうかを確認します。その場合、数回実行するとカウント数が減少します。これは完全に安全で、起動時に問題を起こすことはありません。 |
||
− | startup.log ファイルに記述されたファイルの数によってしばらく時間がかかります。 |
||
+ | * SysV スタイルの [[init]] システムを使っている場合、{{ic|e4rat-realloc}} を実行する前に {{ic|sudo init 1}} を使ってランレベル 1 に切り替える必要があります。 |
||
− | {{Note|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.}} |
||
+ | }} |
||
=== e4rat-preload === |
=== e4rat-preload === |
||
74行目: | 82行目: | ||
{{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]] の {{AUR|e4rat-preload-lite}} でインストールできます。 |
||
+ | いくつかの改良が加えられた e4rat の代替。また、オリジナルの e4rat パッケージで経験するかもしれないいくつかの問題を回避することも期待できます。 |
||
− | [[カーネルパラメータ]]に {{ic|1=init=/usr/sbin/e4rat-preload-lite}} を追加 (または置換) してください。 |
||
+ | {{AUR|e4rat-lite-git}} から取得できます。 |
||
+ | {{Note|{{AUR|e4rat-lite-git}} パッケージの競合がすでに発生しているため、両方をインストールすることはできません。[[E4rat#利益を得る人、得ない人]] も参照してください。}} |
||
− | == e4rat と init システム == |
||
+ | === e4rat-lite を使用する=== |
||
− | e4rat-collect defaults to replacing itself with {{ic|/sbin/init}} upon completion. If you need to specify another process with PID 1, such as '''/usr/lib/systemd/systemd''', you can change this in {{ic|/etc/e4rat.conf}} by setting the ''init'' parameter: |
||
− | init /usr/lib/systemd/systemd |
||
+ | e4rat-lite のコマンドは、e4rat とほとんど同じように動作します。[https://github.com/ShyPixie/e4rat-lite#how-to-use the README of the project] を見てください。 |
||
− | This allows to launch both e4rat-preload and bootchart in the same boot sequence. |
||
+ | |||
+ | collect:{{ic|1=init=/usr/bin/e4rat-lite-collect}}-デフォルトの制限時間は120秒ですが、次のコマンドを使用して収集セッションを終了することもできます。 |
||
+ | |||
+ | # e4rat-lite-collect -k |
||
+ | |||
+ | realloc:{{ic| /usr/bin/e4rat-lite-realloc}} - ランレベル1への切り替えが推奨されます。 [[systemd]] を使用する場合は、事前に以下を実行してください。 |
||
+ | |||
+ | # systemctl isolate rescue.target |
||
+ | |||
+ | preload: {{ic| 1=init=/usr/bin/e4rat-lite-preload}} |
||
+ | |||
+ | startup.log: {{ic| /var/lib/e4rat-lite/startup.log}} |
||
+ | |||
+ | 構成ファイル:{{ic|/etc/e 4 rat-lite.conf}} - [[systemd]] を使用する場合は、init_file プロパティを次のように変更します。 |
||
+ | |||
+ | init_file=/usr/lib/systemd/systemd |
||
== 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]] は[[ディスプレイマネージャ]]が立ち上がるとすぐにログの記録を停止します。以下のように上書きすることでログを停止しないようにすることができます: |
||
− | + | ログを続行するには以下のように {{ic|/etc/bootchartd.conf}} を変更: |
|
AUTO_STOP_LOGGER="no" |
AUTO_STOP_LOGGER="no" |
||
+ | 手動で停止するには次を実行: |
||
− | To stop it manually type: |
||
# bootchartd stop |
# bootchartd stop |
||
− | + | e4rat-preload と bootchart の両方を実行するには grub の kernel 行に以下を追加: |
|
init=/sbin/bootchartd bootchart_init=/sbin/e4rat-preload |
init=/sbin/bootchartd bootchart_init=/sbin/e4rat-preload |
||
118行目: | 140行目: | ||
=== 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 が作られない === |
||
138行目: | 160行目: | ||
* 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 ファイルシステムと認識する=== |
||
147行目: | 170行目: | ||
=== /var/lib/e4rat/startup.log にアクセスできない === |
=== /var/lib/e4rat/startup.log にアクセスできない === |
||
+ | これは、起動時にまだマウントされていない別のパーティションに {{ic|/var}} があることを示しています。{{ic|startup.log}} をアクセス可能なパーティションに移動させて ({{ic|/etc/e4rat/}}) 、{{ic|/etc/e 4 rat.conf}} を調整してこの変更を反映する必要があります。 |
||
− | This suggests that you have {{ic|/var}} on a separate partition which is not yet mounted during boot. You need move your {{ic|startup.log}} to an accessible partition ({{ic|/etc/e4rat/}} is just fine) and adjust your {{ic|/etc/e4rat.conf}} to reflect this change: |
||
startup_log_file /etc/e4rat/startup.log |
startup_log_file /etc/e4rat/startup.log |
||
155行目: | 178行目: | ||
== 参照 == |
== 参照 == |
||
− | * [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 - フォーラムスレッド] |
2021年7月4日 (日) 16:36時点における最新版
e4rat は e4 'reduced access time' (ext4 ファイルシステムのみ) の略語で、Andreas Rid と Gundolf Kiefer によるプロジェクトです。e4rat range of tools は e4rat-collect, e4rat-realloc, e4rat-preload から成り立っています。
e4rat-lite と呼ばれる別の実装がありますが、これは元の e4rat プロジェクトよりもアクティブで最適化されています。e4rat-lite section を参照してください。
プロセス
古典的な 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 とほとんど同じように動作します。the README of the project を見てください。
collect:init=/usr/bin/e4rat-lite-collect
-デフォルトの制限時間は120秒ですが、次のコマンドを使用して収集セッションを終了することもできます。
# e4rat-lite-collect -k
realloc: /usr/bin/e4rat-lite-realloc
- ランレベル1への切り替えが推奨されます。 systemd を使用する場合は、事前に以下を実行してください。
# systemctl isolate rescue.target
preload: init=/usr/bin/e4rat-lite-preload
startup.log: /var/lib/e4rat-lite/startup.log
構成ファイル:/etc/e 4 rat-lite.conf
- systemd を使用する場合は、init_file プロパティを次のように変更します。
init_file=/usr/lib/systemd/systemd
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 にアクセスできない
これは、起動時にまだマウントされていない別のパーティションに /var
があることを示しています。startup.log
をアクセス可能なパーティションに移動させて (/etc/e4rat/
) 、/etc/e 4 rat.conf
を調整してこの変更を反映する必要があります。
startup_log_file /etc/e4rat/startup.log
うるさいブートメッセージを削除する
起動中の e4rat-preload のメッセージがうっとうしい場合は、/etc/e4rat.conf
で verbose を 1 に減らします。