🗾实践指南-005-启动优化

type
status
date
slug
summary
tags
category
icon
password
记录 Systemd 的一些使用场景。
notion image

1. 前言

启动优化常见于早起 Linux 加载过慢的问题,当时由于启动 SysV 的存在导致不少系统只能穿行启动。加上当时 SSD 还未普及,导致了 Linux 给人启动过慢的映像。目前由于 Systemd 在发行版中的使用以及 SSD 价格的下降,很少再有人反馈系统启动慢。

2. 方法

3. 使用 Systemd

将基于 Systemd 给出一些常见的启动分析方法,加快启动速度。
  • 举例1:如何使用 systemd 分析关机时间?
  • 举例2:如何减少服务卡主的时间?
取消 DefaultTimeoutStopSec=90s 注释,修改为 DefaultTimeoutStopSec=5s
  • 举例3:如何获取远程主机启动信息?

3.1. 使用 BootChart

3.2. 内核打印时间分析

首先确认内核是否打开,如下选项:
然后再启动参数中,加入如下选项“printk.time=y initcall_debug”

3.2.1. 卡顿分析

3.2.2. ttyAMA0.service 超时

ARM 平台默认需要 ttyAMA0 串口调试,Ubuntu 同时使能 ttyAMA0 和 default tty1,需要:

4. 设置

  1. 对某些系统来说,特别是 SSD 的系统,过多的输出成为了瓶颈,减少不必要的输出;
  1. 停止不必要的驱动,内核模块;
  1. 使用更轻量级的窗口管理器、桌面;
  1. 在 BIOS 中,将硬盘启动放在启动顺序的第一位;
  1. 如果已经有固定 IP,请避免使用 DHCP 服务;
  1. 在不需要 hotplug 功能的环境中禁用这项功能;
  1. 修改 GRUB 默认过期时间,推荐 2秒;
  1. 如果没有无线需求,禁用耗时的服务;
比如:systemd-rfkill.service 耗时过久,可以尝试在启动参数中,加入 systemd.restore_status=0
  1. 停用硬盘交错启动功能;
一些硬件会采用硬盘交错启动(staggered spin-up)的技术,通常可以使用:
也可以在内核中,加入 libahci.ignore_sss=1 参数。

5. 参考

  1. https://wiki.archlinux.org/title/Improving_performance/Boot_process
中年码农的困境log-001-我与计算机