Linux启动速度调优
systemd 即是启动管理也是进程管理服务管理,启动时各个程序尽量并行加载,速度很快,目前大多数主流Linux发行版都已采用。
但是目前排名第一的MX-Linux默认没有使用systemd,不过可以手动选择,具体可以通过 systemd xmlinux 去google。
理由是部分mx-linux开发者认为systemd不符合unix软件设计哲学,: )
systemd启动调优即系统启动速度调优:
基本调试命令:
systemd-analyze blame 显示所有项目启动时间
systemd-analyze critical-chain 显示影响性能的启动链条(因为很多项目有启动依赖)
很多老外在论坛上上来就否定其他调优,认为只有对critical-chain的调优是有效的,这种说法太绝对,我个人经验是其他调优,
特别是对加载时间最长的调优,也是很有效的。
systemd-analyze plot > plot.xml 生成报表,可以用浏览器查看
另外ubuntu自带的systemd-genie是个相当不错的图形查看程序,manjaro的官方库里也有,可以手动下载,里面可以很清晰
的查看到系统各个服务和后台程序的情况,包括依赖关系,启动方式等等,很好用
具体操作:
systemctl mask 是比 systemctl disable 更强的disable
很多服务是可以直接disable或者mask的,例如有些程序我们不想开机运行,可以disable,然后在桌面创建快捷方式
需要用的时候手动start, 例如向日葵的后台服务,不用的时候是完全浪费cpu,而且它平常啥也不干的时候运行还挺费的。
还有network-wait-online服务,经常发现启动慢,此服务可以mask掉,但是最好先检查哪些程序依赖wait-online,
避免某些程序不能正常启动,最简单办法就是通过浏览器查看plot.xml文件,基本能一眼看出哪些程序是在wait-online后启动的,
也可以通过刚才说的systemd-genie查看哪些程序依赖wait-online,其实systemd-genie只是一个图形工具,命令行都有相应的办法查看,只不过
此图形工具用起来比较方便。
我个人经验是,很多写的不太好的软件,如果直接屏蔽wait-online那么有可能不能正常启动,这样还有别的办法加快wait-online的速度,
例如如果是有线和无线双链接,可以直接屏蔽无线 :),或者尽量使用静态IP, 避免DHCP, 这样可以大大提高wait-online速度。
system-random-seed.service启动慢:
grub 内核启动参数加入random.trust_cpu=on
具体是修改/etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet udev.log_priority=3 console=tty3 random.trust_cpu=on"
修改完后记得使用 sudo update-grub
另外:上面的console=tty3,是将系统启动消息输出到别的tty,适用于强迫症,这样系统启动就完全无显示了。
还有比较极端的加快系统启动速度的方式:可以关掉grub的主题,关掉DM的背景和用户头像,实测也能提高一点加载速度。
另外对于各种硬盘设备启动慢,有人建议关闭linux硬盘的开机检测和clean,个人建议不要这么做,因为在各种非正常关机的情况下,
linux会做检查和修复。