web-dev-qa-db-ja.com

initrd.img(grubの「Loading initial ramdisk ...」)が起動を遅くしていますか?

とにかくファイルの断片化はそれほど重要ではないはずのSSDにいますが、grubの「loading initial ramdisk ...」メッセージが必要以上に時間がかかっていることに気付きました。プリマスが実行されるまで約7秒間続きます。プリマス自体の所要時間は約3秒です(ただし、より早く開始し、より長く持続した場合は素晴らしいでしょう)。その後、lightdm/greeter画面が2〜3秒で表示されます。

そこで、少し実験してfilefrag -v /boot/init*を実行しましたが、カーネル4.4.0-53が過度に断片化されているように見えました。

File size of /boot/initrd.img-4.4.0-53-generic is 49027703 (11970 blocks of 4096 bytes)
 ext:     logical_offset:        physical_offset: length:   expected: flags:
   0:        0..       3:    4351562..   4351565:      4:            
   1:        4..    4095:    2334720..   2338811:   4092:    4351566:
   2:     4096..    8191:    2330624..   2334719:   4096:    2338812:
   3:     8192..   10239:    2355200..   2357247:   2048:    2334720:
   4:    10240..   11969:    2408448..   2410177:   1730:    2357248: last,eof

断片化されたinitrd.imgが起動パフォーマンスにどのように影響するか興味があります。デフラグする価値はありますか?

もちろん、initrd.imgをより小さく、より高速にするための提案も常に受け付けています。

注:mSata SSDとフルサイズSSDに加えて、私のラップトップにはUbuntu 14.04を含むフルサイズHDDがあるため、initrd.img一般的に、SSDだけではありません。現在のブートセッションはmSata SSDからのものですが、SATA IIIバス上にあるフルサイズドライブとは異なり、SATA IIの速度に制限されています。

編集1:-systemdブートチャート

以下のコメントに従って、grubカーネルパラメーターを次のように変更することで生成されるsystemd-bootchartを含めました。

GRUB_CMDLINE_LINUX_DEFAULT="splash vt.handoff=7 kaslr init=/lib/systemd/systemd-bootchart"

ブートチャートは/run/log/bootchart-20161224-1801.svgに保存されます。 gimpを使用して、Ask Ubuntuの2.1 MBの制限に適合するように75%品質で.jpg形式で開いてエクスポートする必要がありました。エクスポートされたファイルは次のとおりです。

systemd bootchart

開始時に9秒の遅延に注意してください。 grubの「Loading initial ramdisk ...」メッセージの7秒の「通常の」遅延は約10秒になりました。 systemd-bootchartオーバーヘッドに起因する可能性が高い余分な時間。

編集2:RAMおよびcgroups

以下のコメント(リクエスト)に従って、RAMおよび/var/log/syslogからのcgroupsがこの編集に含まれています。

free -mからの出力:

$ free -m
              total        used        free      shared  buff/cache   available
Mem:           7843        3167         820        1574        3854        2740
Swap:          7999           4        7995

SWAPはOOM Killerのテストにのみ使用され、消去できることに注意してください。実際のところ、そもそもSSD上にあるべきではありません。

grep cgroup < /var/log/syslog.1からの出力:

$ grep cgroup < /var/log/syslog.1
Dec 24 15:22:50 Dell kernel: [    0.000000] Initializing cgroup subsys cpuset
Dec 24 15:22:50 Dell kernel: [    0.000000] Initializing cgroup subsys cpu
Dec 24 15:22:50 Dell kernel: [    0.000000] Initializing cgroup subsys cpuacct
Dec 24 15:22:50 Dell kernel: [    0.011642] Initializing cgroup subsys io
Dec 24 15:22:50 Dell kernel: [    0.011645] Initializing cgroup subsys memory
Dec 24 15:22:50 Dell kernel: [    0.011651] Initializing cgroup subsys devices
Dec 24 15:22:50 Dell kernel: [    0.011653] Initializing cgroup subsys freezer
Dec 24 15:22:50 Dell kernel: [    0.011655] Initializing cgroup subsys net_cls
Dec 24 15:22:50 Dell kernel: [    0.011657] Initializing cgroup subsys perf_event
Dec 24 15:22:50 Dell kernel: [    0.011659] Initializing cgroup subsys net_prio
Dec 24 15:22:50 Dell kernel: [    0.011662] Initializing cgroup subsys hugetlb
Dec 24 15:22:50 Dell kernel: [    0.011664] Initializing cgroup subsys pids
Dec 24 15:22:50 Dell kernel: [    6.204710] cgroup: new mount options do not match the existing superblock, will be ignored
Dec 24 15:23:33 Dell kernel: [    0.000000] Initializing cgroup subsys cpuset
Dec 24 15:23:33 Dell kernel: [    0.000000] Initializing cgroup subsys cpu
Dec 24 15:23:33 Dell kernel: [    0.000000] Initializing cgroup subsys cpuacct
Dec 24 15:23:33 Dell kernel: [    0.010846] Initializing cgroup subsys io
Dec 24 15:23:33 Dell kernel: [    0.010849] Initializing cgroup subsys memory
Dec 24 15:23:33 Dell kernel: [    0.010855] Initializing cgroup subsys devices
Dec 24 15:23:33 Dell kernel: [    0.010857] Initializing cgroup subsys freezer
Dec 24 15:23:33 Dell kernel: [    0.010860] Initializing cgroup subsys net_cls
Dec 24 15:23:33 Dell kernel: [    0.010861] Initializing cgroup subsys perf_event
Dec 24 15:23:33 Dell kernel: [    0.010864] Initializing cgroup subsys net_prio
Dec 24 15:23:33 Dell kernel: [    0.010867] Initializing cgroup subsys hugetlb
Dec 24 15:23:33 Dell kernel: [    0.010868] Initializing cgroup subsys pids
Dec 24 15:23:33 Dell kernel: [    7.338815] cgroup: new mount options do not match the existing superblock, will be ignored
Dec 24 15:45:25 Dell kernel: [    0.000000] Initializing cgroup subsys cpuset
Dec 24 15:45:25 Dell kernel: [    0.000000] Initializing cgroup subsys cpu
Dec 24 15:45:25 Dell kernel: [    0.000000] Initializing cgroup subsys cpuacct
Dec 24 15:45:25 Dell kernel: [    0.010844] Initializing cgroup subsys io
Dec 24 15:45:25 Dell kernel: [    0.010847] Initializing cgroup subsys memory
Dec 24 15:45:25 Dell kernel: [    0.010853] Initializing cgroup subsys devices
Dec 24 15:45:25 Dell kernel: [    0.010855] Initializing cgroup subsys freezer
Dec 24 15:45:25 Dell kernel: [    0.010857] Initializing cgroup subsys net_cls
Dec 24 15:45:25 Dell kernel: [    0.010859] Initializing cgroup subsys perf_event
Dec 24 15:45:25 Dell kernel: [    0.010861] Initializing cgroup subsys net_prio
Dec 24 15:45:25 Dell kernel: [    0.010864] Initializing cgroup subsys hugetlb
Dec 24 15:45:25 Dell kernel: [    0.010866] Initializing cgroup subsys pids
Dec 24 15:45:25 Dell kernel: [    5.977461] cgroup: new mount options do not match the existing superblock, will be ignored
Dec 24 16:09:31 Dell kernel: [    0.000000] Initializing cgroup subsys cpuset
Dec 24 16:09:31 Dell kernel: [    0.000000] Initializing cgroup subsys cpu
Dec 24 16:09:31 Dell kernel: [    0.000000] Initializing cgroup subsys cpuacct
Dec 24 16:09:31 Dell kernel: [    0.010848] Initializing cgroup subsys io
Dec 24 16:09:31 Dell kernel: [    0.010852] Initializing cgroup subsys memory
Dec 24 16:09:31 Dell kernel: [    0.010858] Initializing cgroup subsys devices
Dec 24 16:09:31 Dell kernel: [    0.010860] Initializing cgroup subsys freezer
Dec 24 16:09:31 Dell kernel: [    0.010862] Initializing cgroup subsys net_cls
Dec 24 16:09:31 Dell kernel: [    0.010864] Initializing cgroup subsys perf_event
Dec 24 16:09:31 Dell kernel: [    0.010866] Initializing cgroup subsys net_prio
Dec 24 16:09:31 Dell kernel: [    0.010870] Initializing cgroup subsys hugetlb
Dec 24 16:09:31 Dell kernel: [    0.010871] Initializing cgroup subsys pids
Dec 24 16:09:31 Dell kernel: [    6.663158] cgroup: new mount options do not match the existing superblock, will be ignored
Dec 24 18:00:44 Dell kernel: [    0.000000] Initializing cgroup subsys cpuset
Dec 24 18:00:44 Dell kernel: [    0.000000] Initializing cgroup subsys cpu
Dec 24 18:00:44 Dell kernel: [    0.000000] Initializing cgroup subsys cpuacct
Dec 24 18:00:44 Dell kernel: [    0.011644] Initializing cgroup subsys io
Dec 24 18:00:44 Dell kernel: [    0.011647] Initializing cgroup subsys memory
Dec 24 18:00:44 Dell kernel: [    0.011654] Initializing cgroup subsys devices
Dec 24 18:00:44 Dell kernel: [    0.011656] Initializing cgroup subsys freezer
Dec 24 18:00:44 Dell kernel: [    0.011658] Initializing cgroup subsys net_cls
Dec 24 18:00:44 Dell kernel: [    0.011660] Initializing cgroup subsys perf_event
Dec 24 18:00:44 Dell kernel: [    0.011662] Initializing cgroup subsys net_prio
Dec 24 18:00:44 Dell kernel: [    0.011665] Initializing cgroup subsys hugetlb
Dec 24 18:00:44 Dell kernel: [    0.011667] Initializing cgroup subsys pids
Dec 24 18:00:44 Dell kernel: [    6.388658] cgroup: new mount options do not match the existing superblock, will be ignored
Dec 24 18:01:33 Dell kernel: [    0.000000] Initializing cgroup subsys cpuset
Dec 24 18:01:33 Dell kernel: [    0.000000] Initializing cgroup subsys cpu
Dec 24 18:01:33 Dell kernel: [    0.000000] Initializing cgroup subsys cpuacct
Dec 24 18:01:33 Dell kernel: [    0.010850] Initializing cgroup subsys io
Dec 24 18:01:33 Dell kernel: [    0.010854] Initializing cgroup subsys memory
Dec 24 18:01:33 Dell kernel: [    0.010860] Initializing cgroup subsys devices
Dec 24 18:01:33 Dell kernel: [    0.010862] Initializing cgroup subsys freezer
Dec 24 18:01:33 Dell kernel: [    0.010864] Initializing cgroup subsys net_cls
Dec 24 18:01:33 Dell kernel: [    0.010866] Initializing cgroup subsys perf_event
Dec 24 18:01:33 Dell kernel: [    0.010868] Initializing cgroup subsys net_prio
Dec 24 18:01:33 Dell kernel: [    0.010871] Initializing cgroup subsys hugetlb
Dec 24 18:01:33 Dell kernel: [    0.010873] Initializing cgroup subsys pids
Dec 24 18:01:34 Dell kernel: [   12.036550] cgroup: new mount options do not match the existing superblock, will be ignored

このログには複数のブートが含まれていることに注意してください。

編集3-速度が向上しました。

Q&Aの回答を実装した後、ラッパースクリプトのパスワードがrmコマンドを保護する( 「rm」コマンドのパスワードを設定するにはどうすればよいですか? )と書きました。ブート速度は2倍になりました。

新しいグラフは次のとおりです。

bootchart dec 30

2

デフラグはあなたの問題ではないと思いますが、あなたはこれを行うことができます...

terminal...

  • このコマンドの詳細については、man update-initramfs#と入力してください。

  • 次にSudo update-initramfs -c#と入力して、新しいファイルを最初から作成します。

  • 次にrebootと入力します

1
heynnema