练习实践-linux启动耗时分析

2024-06-06 11:28

本文主要是介绍练习实践-linux启动耗时分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

练习实践-启动耗时整体概览,具体服务的启动细节

参考来源:
B站up主林哥讲运维:一分钟学会:可视化查看系统启动时的性能
如何使用Linux命令查看系统的启动进程(linux查看启动进程)
解决ubuntu开机变慢;删除耗时启动项

(调查研究)通过参考来源中内容的对比,发现视频中介绍的将启动过程导出为svg图片的方式,还需要在浏览器打开,然后分析,没有
直接通过命令systemd-analyze blame #查看开机启动项耗时 来得清爽。

简介:

通过systemd-analyze工具,统计ubuntu1804启动耗时,发现超过2分钟,然后通过分析具体的服务耗时,了解服务的具体作用,综合考虑影响范围和消耗时间,将部分服务功能禁用,以提高启动时间的试验记录。

systemd-analyze工具

工具介绍(来自讯飞星火大模型ai)

systemd-analyze 是 systemd 系统和服务管理器提供的一个命令,用于分析启动时间。以下是 systemd-analyze 的一些常用选项:systemd-analyze: 显示系统启动的耗时信息。
systemd-analyze blame: 显示启动时各个服务启动所花费的时间,并按耗时排序。
systemd-analyze critical-chain: 显示启动时关键路径上的各个服务及其耗时。
systemd-analyze plot > boot.svg: 将启动耗时信息输出为SVG格式的图片文件。
systemd-analyze time: 显示从系统启动到当前所经过的时间。
使用这些选项可以帮助你分析系统的启动性能,找出可能影响启动速度的服务,并进行优化
  1. 直接输入,显示启动整体耗时,
root@ub1804:/home/xiaoyue# systemd-analyze 
Startup finished in 7.764s (kernel) + 2min 12.368s (userspace) = 2min 20.132s
graphical.target reached after 1min 57.819s in userspace

2.将启动过程打印输出svg图片

systemd-analyze plot >boot.svg

在这里插入图片描述
先搞清楚这个耗时的服务是做啥用的(问了讯飞星火大模型ai)

atp-daily.service 服务介绍

atp-daily.service 服务介绍:
服务功能:atp-daily.service 服务主要负责执行与Application Troubleshooting Platform(ATP)相关的日常任务。这些任务可能包括数据收集、分析报表的生成和更新等。服务影响:此服务对系统的日常运行影响不大,但如果用户需要立即使用系统而不希望等待服务完成,可以考虑延后执行或禁用该服务。服务配置:通过编辑服务的计时器,如apt-daily.timer,可以调整服务启动的时间。例如,设置OnBootSec选项可以使服务在开机后一段时间再启动。优化策略:如果确定不需要此服务,可以通过系统ctl命令禁用和关闭服务来避免不必要的资源消耗。维护建议:定期检查服务的运行状态和日志,确保服务不会因错误而影响系统性能。可以使用systemctl status apt-daily.service命令查看服务状态。

将显示启动消耗1分多钟的服务给停止后禁止启动

root@ub1804:/home/xiaoyue# sudo systemctl stop apt-daily.service
Warning: Stopping apt-daily.service, but it can still be activated by:apt-daily.timer
root@ub1804:/home/xiaoyue# sudo systemctl stop apt-daily.timer
root@ub1804:/home/xiaoyue# systemctl disable apt-daily.service
root@ub1804:/home/xiaoyue# systemctl disable apt-daily.timer
Removed /etc/systemd/system/timers.target.wants/apt-daily.timer.

然后重启设备,重新执行命令,进行效果确认

root@ub1804:/home/xiaoyue# systemd-analyze
Startup finished in 2.467s (kernel) + 1min 30.191s (userspace) = 1min 32.658s
graphical.target reached after 23.588s in userspace

看到启动时间从2分20秒降到1分32秒,降低了48秒,内核启动时间由7.764s秒降到了2.467s;

重新导出启动过程,查看是否还存在已经被禁用的服务;
———————分隔符—————————————

继续尝试优化启动时间

snap服务耗时

在这里插入图片描述
在这里插入图片描述

root@ub1804:/home/xiaoyue# systemd-analyze blame21.348s plymouth-quit-wait.service2.675s snapd.service

snap服务的功能

(来自讯飞星火大模型ai的回复)

plymouth-quit-wait.service是**一个在系统启动过程中负责显示启动徽标的服务,直到启动过程完成,隐藏启动初始屏幕再显示图形登录界面**。下面将深入探讨plymouth-quit-wait.service服务的各个方面:1. **服务功能和作用**- **启动徽标加载**:plymouth-quit-wait.service服务的主要功能是在系统启动时加载并显示启动徽标[^1^]。这一功能不仅增强了用户体验,通过提供视觉反馈,还能让用户在启动过程中感受到系统的响应。- **图形登录界面显示**:此服务还负责在启动过程完成后隐藏启动初始屏幕,然后显示图形登录界面[^1^]。这保证了用户能够顺利进入操作系统,进行后续的操作和使用。
2. **服务依赖和影响**- **依赖关系**:虽然plymouth-quit-wait.service服务看似简单,但实际上它与系统中几乎所有的服务都有联系。这种广泛的依赖性要求该服务必须平稳运行,以维护整个系统的启动流程[^1^]。- **对启动时间的影响**:尽管该服务几乎与所有其他服务相关联,但实际对系统的启动时间并没有显著影响。这意味着它可以在不影响系统性能的前提下,提高系统的视觉吸引力和用户满意度[^1^]3. **管理和优化**- **关闭和开启服务**:为了验证plymouth-quit-wait.service服务对启动时间的影响,可以临时关闭该服务,使用命令`systemdctl mask plymouth-quit-wait.service`,然后观察开机时间的变化[^1^]。之后,再次启用该服务以恢复其功能。- **检查依赖服务**:理解服务之间的依赖关系对于系统管理员来说至关重要。使用`systemctl list-dependencies --reverse plymouth-quit-wait.service`命令可以帮助了解哪些服务依赖于plymouth-quit-wait.service,从而更好地管理系统的启动流程[^1^]4. **与其他服务的互动**- **与网络服务的关联**:在某些情况下,plymouth-quit-wait.service可能会与网络服务产生互动,尤其是在系统尝试在启动时建立网络连接的情况下[^2^]。这可能会影响到服务的执行和系统的整体启动时间。- **替代方案的考虑**:如果发现plymouth-quit-wait.service在某些环境中不必要或存在问题,可以考虑使用其他的启动动画服务或禁用图形启动画面,以简化启动过程并可能改善启动速度[^2^]。总的来说,plymouth-quit-wait.service服务虽然在系统启动中扮演着重要的角色,但其对启动时间的实际影响较小。通过合理管理此服务及其依赖项,可以在保持系统美观的同时,也确保了系统启动的高效性。
卸载snap服务,注意用snap安装的软件也会被删除,snap list看查看安装的软件列表,下载之后可以看到磁盘空间里没了那些**/dev/loop*项**,开机也没了snapd.service和dev-loop*.device项,节约了大量开机时间```bash
root@ub1804:/home/xiaoyue# sudo apt purge snapd
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
下列软件包是自动安装的并且现在不需要了:gir1.2-goa-1.0 gir1.2-snapd-1 linux-hwe-5.4-headers-5.4.0-84
使用'sudo apt autoremove'来卸载它(它们)。
下列软件包将被【卸载】:gnome-software-plugin-snap* snapd*
升级了 0 个软件包,新安装了 0 个软件包,要卸载 2 个软件包,有 3 个软件包未被升级。
解压缩后将会空出 171 MB 的空间。
您希望继续执行吗? [Y/n] y

-----------分隔符-------------------

关闭plymouth-quit-wait.service

服务功能:

启动徽标加载:plymouth-quit-wait.service服务负责在系统启动过程中显示启动徽标,直到所有启动过程完成,然后隐藏启动初始屏幕,并显示图形登录界面。这一服务不仅增强了用户体验,还通过提供视觉反馈,让用户在启动过程中感受到系统的响应。
图形登录界面显示:此服务确保在系统完全准备好之后才显示图形登录界面,从而避免用户在系统尚未完全就绪时尝试登录,这可能会引起登录延迟或系统不稳定的问题

查看systemd-analyze blame 启动时间有无改善,好像没啥改善,给恢复了

关闭plymouth-quit-wait.service

root@ub1804:/home/xiaoyue# sudo systemctl disable NetworkManager-dispatcher.service
Removed /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.
root@ub1804:/home/xiaoyue# 
root@ub1804:/home/xiaoyue# sudo systemctl disable NetworkManager-wait-online.serviceRemoved /etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service.

彩蛋:mask
看到systemctl的man手册, mask 选项的解释中有一句英语「This is a stronger version of disable, since it prohibits all kinds of activation of the unit, including enablement and manual activation.」

翻译过来就是:「这是一个增强版本的 disable,因为它阻止了所有激活这个单元的行为,包括启用和手动激活」。

mask 是英语「掩盖,遮蔽」的意思。

如果之前使用过mask命令,需要先取消屏蔽状态,可以使用systemctl unmask plymouth-quit-wait.service命令解除之前的屏蔽设置

按文章建议,关闭了两个网络相关的服务

root@ub1804:/home/xiaoyue# sudo systemctl stop plymouth-quit-wait.service
root@ub1804:/home/xiaoyue# systemctl mask plymouth-quit-wait.service
Created symlink /etc/systemd/system/plymouth-quit-wait.service → /dev/null.

但是启动时间目前还是稳定在了1分32秒,但是可以看到诊断输出信息的最后一行,进入图形化界面的时间,在取消atp-daily.service之后就由57.819s降低到了23s.

root@ub1804:/home/xiaoyue# systemd-analyze time
Startup finished in 2.534s (kernel) + 1min 30.233s (userspace) = 1min 32.768s
graphical.target reached after 21.484s in userspace

这篇关于练习实践-linux启动耗时分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1035973

相关文章

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

MySQL分库分表的实践示例

《MySQL分库分表的实践示例》MySQL分库分表适用于数据量大或并发压力高的场景,核心技术包括水平/垂直分片和分库,需应对分布式事务、跨库查询等挑战,通过中间件和解决方案实现,最佳实践为合理策略、备... 目录一、分库分表的触发条件1.1 数据量阈值1.2 并发压力二、分库分表的核心技术模块2.1 水平分

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4: