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

news2025/1/17 15:23:59

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

参考来源:
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 blame
         21.348s plymouth-quit-wait.service
          2.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


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1790676.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LLaSM:Large language and speech model

1.Introduction 级联方法使用ASR将语音输入转化为文本输入,语音到文本会导致信息损失,本文提出LLaSM,一个具有跨模态对话能力的大型语音与语言模型,能够理解和遵循语音与语言指令,借鉴LLaVA,利用预训练的语音模态编码器和大语言模型,使用Whisper作为语音编码器,将语音…

C#-Switch判断分支语句

Switch判断分支语句 作用 : 让顺序执行的代码 产生分支 判断变量和常量相同时 才会执行 用法: Switch后面的变量值与case后面的常量相同时,case内的代码才会执行,如果都不满足则执行default内的代码 break的作用: 跳出 不会再执行判断 …

MCU 的最佳存储方案 CS 创世 SD NAND

MCU 的最佳存储方案 CS 创世 SD NAND 【SD NAND】大家都知道 MCU 是一种 “麻雀” 虽小,却 “五脏俱全” 的主控。 大家都知道 MCU 是一种 “麻雀” 虽小,却 “五脏俱全” 的主控。它的应用领域非常广泛,小到手机手表,大到航空航…

Python知识点14---被规定的资源

提前说一点:如果你是专注于Python开发,那么本系列知识点只是带你入个门再详细的开发点就要去看其他资料了,而如果你和作者一样只是操作其他技术的Python API那就足够了。 在Python中被规定的东西不止有常识中的那些关键字、构造器等编程语言…

Jupyter Notebook快速搭建

Jupyter Notebook why Jupyter Notebook Jupyter Notebook 是一个开源的 Web 应用程序,允许你创建和分享包含实时代码、方程、可视化和解释性文本的文档。其应用包括:数据清洗和转换、数值模拟、统计建模、数据可视化、机器学习等等。 Jupyter Notebo…

Vue02-搭建Vue的开发环境

一、Vue.js的安装 1-1、直接用 <script> 引入&#xff08;CDN&#xff09; 1、CDN的说明 2、Vue的版本说明 生产版本是开发版本的压缩。 3、Vue的引入 验证是否存在Vue函数&#xff1a; 4、搭建Vue的开发环境 ①、下载开发版本的Vue&#xff0c;并在代码中引入 ②、安…

连锁门面电能监测系统是什么?

1.什么叫连锁门面电能监测系统 连锁门面电能监测系统是一种前沿的能源管理体系系统&#xff0c;针对连锁加盟店铺的电力应用情况进行实时监控及管理。这类系统根据集成化硬件配置和软件系统&#xff0c;能够帮助企业管理人员获得每个门店的电力耗费数据信息&#xff0c;进而实…

免费,C++蓝桥杯等级考试真题--第10级(含答案解析和代码)

C蓝桥杯等级考试真题--第10级 答案&#xff1a;D 解析&#xff1a;数组是一种线性数据结构&#xff0c;其特点是数组中的元素在内存中占据一段连续的存储空间&#xff0c;每个元素通过索引&#xff08;下标&#xff09;访问&#xff0c;索引起始通常是0。 数组的长度在声明时…

ICLR 2024 BACKDOOR FEDERATED LEARNING BY POISONING BACKDOOR-CRITICAL LAYERS

寻找后门攻击最有效的网络层。现有的 FL 攻击和防御方法通常关注整个模型。 他们都没有认识到后门关键&#xff08;BC&#xff09;层的存在——控制模型漏洞的一小部分层。 攻击 BC 层可达到与攻击整个模型相同的效果&#xff0c;但被最先进 (SOTA) 防御检测到的机会要小得多。…

前端_防抖节流

目录 一、防抖&#xff08;debounce&#xff09; 1.使用场景 2.js代码实现 3.lodash工具库使用 二、节流&#xff08;throttle&#xff09; 1.使用场景 2.js代码实现 3.lodash工具库使用 前端做项目&#xff0c;为了防止用户因为网络不好数据响应慢&#xff0c;导致进行…

【2024】通过EasyExcel实现不定长Excel表头导出、以及多sheet页和单元格合并效果

目录&#x1f4bb; 一、介绍需求背景 二、实现步骤1、依赖1.1、Maven1.2、Gradle 2、实体类2.1、学生分数表2.2、Sheet 工作表对象 3、excel工具类4、Service层接口实现类 5、Controller层 三、测试效果 ) 一、介绍 EasyExcel是阿里巴巴开源的一个基于Java的、快速、简洁、解…

可视化数据科学平台在信贷领域应用系列四:决策树策略挖掘

信贷行业的风控策略挖掘是一个综合过程&#xff0c;需要综合考虑风控规则分析结果、效果评估、线上实时监测和业务管理需求等多个方面&#xff0c;以发现和制定有效的信贷风险管理策略。这些策略可能涉及贷款审批标准的调整、贷款利率的制定、贷款额度的设定等&#xff0c;在贷…

240602-通过命令行实现HuggingFace文件上传

A. 登录显示 A.1 MacOS A.2 Windows B. 操作步骤 B.1 操作细节 要通过命令行将文件上传到 Hugging Face&#xff0c;可以使用 huggingface-cli 工具。以下是详细步骤&#xff1a; 安装 huggingface_hub 包&#xff1a; 首先&#xff0c;确保已经安装了 huggingface_hub 包。可…

mysql表级锁(表锁/元数据锁/意向锁)

文章目录 表级锁的分类1、表锁(分类)1.表共享读锁&#xff08;read lock&#xff09;2.表独占写锁&#xff08;write lock&#xff09;3.语法&#xff1a; 2、元数据锁&#xff08;meta data lock &#xff09;3、意向锁1.意向共享锁&#xff08;IS&#xff09;&#xff1a;由语…

Java基础29(编码算法 哈希算法 MD5 SHA—1 HMac 算法 堆成加密算法)

目录 一、编码算法 1. 常见编码 2. URL编码 3. Base64编码 4. 小结 二、哈希算法 1. 哈希碰撞 2. 常用哈希算法 MD5算法 SHA-1算法 自定义HashTools工具类 3. 哈希算法的用途 校验下载文件 存储用户密码 4. 小结 三、Hmac算法 小结&#xff1a; 四、对称加密…

WEB攻防-Python-PYC 反编译CTF 与 CMS-SSTI 模版注入

反编译pyc字节码文件 pyc文件是py文件编译后生成的字节码文件(byte code)&#xff0c;pyc文件经过python解释器最终会生成机器码运行。因此pyc文件是可以跨平台部署的&#xff0c;类似Java的.class文件&#xff0c;一般py文件改变后&#xff0c;都会重新生成pyc文件。 真题附件…

6月5日 C++day3

#include <iostream>using namespace std;class Per { private:string name;int age;int *high;double *weight; public:Per(){cout << "Per的无参构造" << endl;}Per(string name,int age,int high,double weight):\name(name),age(age),high(new…

React项目目录结构与组件基础结构

在React中开发项目并扩展组件时&#xff0c;一个清晰合理的目录结构是至关重要的。它不仅可以帮助你更好地组织代码&#xff0c;还能提高项目的可维护性和扩展性。下面是一个基本的React项目目录结构大纲&#xff0c;你可以根据自己的项目需求进行调整&#xff1a; my-app/ ├…

MySQL的联合索引及案例分析

1. 联合索引 关于联合索引的详解参考博客【Mysql-----联合索引和最左匹配】&#xff0c;包含讲解 最左匹配 联合索引失效的情况 不遵循最左匹配原则范围查询右边失效原理like索引失效原理 比较关注的点在于&#xff1a; 对A、B、C三个字段创建一个联合索引&#xff08;A, …

go语言linux安装

下载&#xff1a;https://go.dev/dl/ 命令行使用 wget https://dl.google.com/go/go1.19.3.linux-amd64.tar.gz解压下载的压缩包&#xff0c;linux建议放在/opt目录下 我放在/home/ihan/go_sdk下 sudo tar -C /home/ihan/go_sdk -xzf go1.19.3.linux-amd64.tar.gz 这里的参数…