initrd.img(grub的“正在加载初始ramdisk ……”)是否会降低我的启动速度?

我在SSD上,文件碎片无论如何都不重要,但我注意到grub中的“加载初始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的全尺寸硬盘,所以我有兴趣对initrd.img进行碎片整理,而不仅仅是SSD。 当前的启动会话来自mSata SSD,虽然仅限于SATA II速度,而不像SATA III总线上的全尺寸驱动器。

编辑1: – systemd启动图表

根据下面的评论,我已经包含了systemd-bootchart ,它是通过修改grub内核参数生成的:

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

引导图保存到: /run/log/bootchart-20161224-1801.svg 。 我不得不使用gimp打开并以.jpg格式导出它,质量为75%,以使其适合Ask Ubuntu的2.1 MB限制。 导出的文件如下所示:

systemd bootchart

注意在开始时的9秒延迟。 grub中“正在加载初始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

 $ 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命令,启动速度加倍。

这是新图:

bootchart dec 30

我不认为碎片整理是你的问题,但你可以做到这一点……

terminal ……

  • 输入man update-initramfs #以了解有关此命令的更多信息。

  • 然后输入sudo update-initramfs -c #从头开始创建一个新文件。

  • 然后输入reboot