linux 系统启动时间调优

目录

背景

Systemd结构概览

系统引导性能分析

操作系统启动过程分析

1 system-analyze(内核载入开始)  

2 system-analyze blame 

3  systemctl disable 优化开机时间

4  关于systemd-analyze的补充

5  dmesg查看系统启动(操作系统上电开始)

参考文档


背景

     linux操作系统项目启动时间调优。

Systemd结构概览

让我们看一下Linux系统在使用systemd作为引导程序时的开机启动过程的结构性细节。为了简单,我们将在下面按步骤列出来这个过程:

1. 当你打开电源后电脑所做的第一件事情就是BIOS初始化。BIOS会读取引导设备设定,定位并传递系统控制权给MBR(假设硬盘是第一引导设备)。

2. MBR从Grub或LILO引导程序读取相关信息并初始化内核。接下来将由Grub或LILO继续引导系统。如果你在grub配置文件里指定了systemd作为引导管理程序,之后的引导过程将由systemd完成。Systemd使用“target”来处理引导和服务管理过程。这些systemd里的“target”文件被用于分组不同的引导单元以及启动同步进程。

3. systemd执行的第一个目标是default.target。但实际上default.target是指向graphical.target的软链接。Linux里的软链接用起来和Windows下的快捷方式一样。文件Graphical.target的实际位置是/usr/lib/systemd/system/graphical.target。在下面的截图里显示了graphical.target文件的内容。

4. 在这个阶段,会启动multi-user.target而这个target将自己的子单元放在目录“/etc/systemd/system/multi-user.target.wants”里。这个target为多用户支持设定系统环境。非root用户会在这个阶段的引导过程中启用。防火墙相关的服务也会在这个阶段启动

"multi-user.target"会将控制权交给另一层“basic.target”。

5. "basic.target"单元用于启动普通服务特别是图形管理服务。它通过/etc/systemd/system/basic.target.wants目录来决定哪些服务会被启动,basic.target之后将控制权交给sysinit.target.

6. "sysinit.target"会启动重要的系统服务例如系统挂载,内存交换空间和设备,内核补充选项等等。sysinit.target在启动过程中会传递给local-fs.target。这个target单元的内容如下面截图里所展示。

7. local-fs.target,这个target单元不会启动用户相关的服务,它只处理底层核心服务。这个target会根据/etc/fstab和/etc/inittab来执行相关操作。

系统引导性能分析

      Systemd提供了工具用于识别和定位引导相关的问题或性能影响。Systemd-analyze是一个内建的命令,可以用来检测引导过程。你可以找出在启动过程中出错的单元,然后跟踪并改正引导组件的问题。

在下面列出一些常用的systemd-analyze命令。

systemd-analyze time 用于显示内核和普通用户空间启动时所花的时间。

  1. $ systemd-analyze time
  2. Startup finished in 1440ms (kernel) + 3444ms (userspace)

systemd-analyze blame 会列出所有正在运行的单元,按从初始化开始到当前所花的时间排序,通过这种方式你就知道哪些服务在引导过程中要花较长时间来启动。

  1. $ systemd-analyze blame
  2. 2001ms mysqld.service
  3. 234ms httpd.service
  4. 191ms vmms.service

systemd-analyze verify 显示在所有系统单元中是否有语法错误。

systemd-analyze plot 可以用来把整个引导过程写入一个SVG格式文件里。整个引导过程非常长不方便阅读,所以通过这个命令我们可以把输出写入一个文件,之后再查看和分析。下面这个命令就是做这个。

  1. systemd-analyze plot > boot.svg

操作系统启动过程分析

    1 system-analyze(内核载入开始)  

     查看内核和普通用户空间启动时所画的时间

    

    2 system-analyze blame 

    列出所有正在运行的单元,按从初始化开始到当前所花的时间排序

systemctl disable 优化开机时间

通过这种方式你就知道哪些服务在引导过程中要花较长时间来启动, 执行命令systemctl disable xxx.service,关闭服务,例:

需要根据实际情况,考虑禁用占用时间较多的服务,不可随意禁用所有服务。

4  关于systemd-analyze的补充

           实际对比可以看出systemd-analyze blame 列出在线服务的总时间 < systemd-analyze 内核和用户空间的时间

           由 systemd-analyze 查看时间说明

           (1) 在启动第一个用户态进程(init)之前,内核运行了多长时间; (2) 进入实际的根文件系统之后,用户空间启动完成花了多长时间;(3)在切换进入实际的根文件系统之前,initrd(initial RAM disk)运行了多长时间。

           注意, 上述时间只是简单的计算了系统启动过程中到达不同标记点的时间, 并没有计入各单元实际启动完成所花费的时间以及磁盘空闲的时间。

5  dmesg查看系统启动(操作系统上电开始)

            dmesg  命令设备故障的诊断是非常重要的。

            通过此命令即可以查看硬件检测或者驱动加载等过程中的故障信息,同时可以通过dmesg打印出的时间戳判断哪部分故障信息印象操作系统的启动过程。

            本人在调优操作系统启动时间的过程中,发现显卡驱动有驱动失败,重复加载,占用了较多启动时间的情况。

            通过更新驱动,优化了此部分操作系统启动时间。

参考文档

   https://linux.cn/article-5457-1.html

   http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
安装MQ: 1. 下载并安装MQ软件包,可以从IBM官网下载到最新的MQ软件包。 2. 解压MQ软件包到指定目录,例如:/opt/mqm 3. 运行安装程序,执行命令:sudo ./mqlicense.sh -accept,输入MQ管理员账号密码。 4. 安装完成后,配置MQ环境变量,在.bashrc文件中加入以下配置: ``` export MQ_INSTALLATION_PATH=/opt/mqm export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MQ_INSTALLATION_PATH/lib64 export PATH=$PATH:$MQ_INSTALLATION_PATH/bin ``` 5. 启动MQ服务,执行命令:sudo /opt/mqm/bin/strmqm QMGR01(其中QMGR01为MQ队列管理器的名称) 注意:在启动MQ服务前,需要确保系统中的TCP/IP设置正确,并且MQ服务所需的端口没有被占用。 TCP: 1. 整TCP/IP参数: 针对MQ服务,需要将TCP连接的keepalive机制设置为开启,确保MQ客户端与MQ服务端之间的连接能够保持活跃。可以通过修改内核参数实现: ``` net.ipv4.tcp_keepalive_time = 1200 net.ipv4.tcp_keepalive_intvl = 30 net.ipv4.tcp_keepalive_probes = 8 ``` 其中,tcp_keepalive_time表示TCP连接在无数据传输时,发送keepalive包的时间间隔;tcp_keepalive_intvl表示TCP连接未收到响应keepalive包时,再次发送keepalive包的时间间隔;tcp_keepalive_probes表示TCP连接未收到响应keepalive包时,最多发送的keepalive包数量。 2. 整MQ服务端参数: 针对MQ服务端,可以通过修改mq.ini文件来整MQ的参数。例如,可以将队列管理器的最大消息长度设置为50MB: ``` MaxMsgLength=52428800 ``` 另外,还可以整MQ的缓存大小、线程池大小等参数,以提高MQ的性能。 3. 整MQ客户端参数: 针对MQ客户端,可以通过修改MQ连接工厂的属性来整MQ的参数。例如,可以将连接工厂的最大并发连接数设置为10: ``` com.ibm.mq.jms.pool.maxConnections=10 ``` 另外,还可以整MQ客户端的缓存大小、消息传输方式等参数,以提高MQ的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值