Ubuntu systemd-analyze命令(系统启动性能分析工具:分析系统启动时间,找出可能导致启动缓慢的原因)

文章目录

  • Ubuntu systemd-analyze命令剖析
    • 目录
    • 简介
      • systemd与systemd-analyze
      • 工作原理
    • 安装和使用
    • 命令参数详解
    • 用例与示例
      • 显示启动时间(systemd-analyze time)
        • 返回信息解读
      • 列出启动过程中各个服务的启动时间(systemd-analyze blame)
      • 显示系统启动过程的关键链(systemd-analyze critical-chain)
      • 生成启动过程的SVG图像(systemd-analyze plot > boot.svg)
    • 性能优化

Ubuntu systemd-analyze命令剖析

systemd-analyze是一个用于系统启动性能分析的强大工具,本文将全面解析该命令在Ubuntu系统中的应用。

目录

简介

systemd与systemd-analyze

systemd 是Linux系统中一种广泛使用的初始化系统,它负责引导用户空间并管理系统进程。它主要由两部分组成:一个系统/服务管理器,以及众多工具和库。

其中,systemd-analyzesystemd 的一个工具,可以提供有关系统启动过程的信息。它可以帮助用户分析系统启动时间,并找出可能导致启动缓慢的原因。

工作原理

systemd-analyze 主要通过读取系统日志(journal)和分析systemd的内部数据结构来获取系统启动信息。此外,它还可以生成启动过程的图形表示,这对于可视化分析系统启动流程非常有用。


安装和使用

在大多数Ubuntu版本中,systemd-analyze已经被默认安装。如果未安装,可以通过以下命令进行安装:

sudo apt-get install systemd

使用 systemd-analyze,只需在命令行中输入:

systemd-analyze

命令参数详解

systemd-analyze 提供了许多命令行选项和参数,可以用于定制分析的内容和格式。以下是一些最常用的选项:

  • time:显示启动过程中花费的总时间。
  • blame:显示每个服务的启动时间,以帮助找出导致启动缓慢的服务。
  • critical-chain:显示系统启动过程中的关键路径,这有助于找出哪些服务在启动过程中相互依赖。
  • plot:生成一个SVG图像,表示系统启动过程的时间线。

用例与示例

以下是 systemd-analyze 的一些常见用例和示例:

显示启动时间(systemd-analyze time)

systemd-analyze time

在这里插入图片描述

返回信息解读

以这个返回信息为例:

root@ubuntu:~# systemd-analyze time
Startup finished in 7.356s (kernel) + 3min 9.863s (userspace) = 3min 17.219s
graphical.target reached after 3min 9.754s in userspace

这个输出的意思是,你的系统总共用了3分17.219秒来启动。这个时间被分为两部分:内核花费了7.356秒的时间来启动,而用户空间(userspace)花费了3分9.863秒的时间来启动。"graphical.target reached after 3min 9.754s in userspace"表示图形用户界面在用户空间开始启动后3分9.754秒才完全启动。

不是3分17.219秒+3分9.754秒。这两个时间中,一个是总体启动时间,另一个是用户空间启动时间,其中用户空间启动时间包含在总体启动时间内。

时序图大概如下:

Total startup time (3m 17.219s)
|-------------------------------------------------------|
Kernel startup (7.356s)
|----|
Userspace startup (3m 9.863s)|--------------------------------------------------|
Graphical target reached (3m 9.754s in userspace)|-------------------------------------------------|

注意这里所有的时间都是从同一起点开始的,并非相互累积。

列出启动过程中各个服务的启动时间(systemd-analyze blame)

systemd-analyze blame

在这里插入图片描述

上面有的启动耗时较长的服务可以选择关掉,以下是对以上服务的分析:

  1. systemd-networkd-wait-online.service: 这个服务等待网络连接可用。如果你的系统不依赖于启动时立即有网络连接,那么你可以尝试关闭它。

  2. apt-daily-upgrade.serviceapt-daily.service: 这两个服务用于处理和应用系统更新。通常情况下,我们不推荐关闭它们,因为这可能会导致你错过重要的安全更新。但是,如果你正在寻找缩短启动时间,可以考虑禁用它们,并定期手动进行系统更新。

  3. dev-nvme0n1p1.device: 这个服务是关于硬盘驱动器的,建议不要关闭。

  4. nv-l4t-usb-device-mode.servicenv.service: 这两个服务似乎与NVIDIA硬件相关。如果你正在使用相关硬件,最好不要关闭它们。

  5. docker.servicecontainerd.service: 如果你不使用Docker,你可以关闭这些服务。

  6. alsa-restore.service: 这个服务用于恢复声音卡设置。如果你不需要声音功能,可以考虑关闭它。

  7. nvpmodel.service: 这个服务用于管理NVIDIA Jetson平台的功率模式。如果你正在使用Jetson硬件,最好不要关闭它。

  8. snapd.seeded.servicesnapd.service: 这些服务用于管理Snap应用。如果你不使用Snap应用,你可以关闭这些服务。

  9. nv-l4t-bootloader-config.service: 这个服务似乎与NVIDIA的bootloader相关,建议不要关闭。

  10. systemd-udev-trigger.service: 这个服务用于触发udev事件,通常情况下,最好不要关闭。

  11. xrdp.service: 这个服务是远程桌面协议服务,如果你不需要远程访问,可以关闭它。

  12. networkd-dispatcher.service: 这个服务用于处理网络状态变化的事件。如果你的系统不依赖于动态网络配置,那么你可以尝试关闭它。

  13. user@124.service: 这可能是特定用户的服务,没有足够的信息来判断是否可以关闭。

显示系统启动过程的关键链(systemd-analyze critical-chain)

systemd-analyze critical-chain

在这里插入图片描述

上游的目标受下游目标启动影响。

生成启动过程的SVG图像(systemd-analyze plot > boot.svg)

systemd-analyze plot > boot.svg

在这里插入图片描述

在这里插入图片描述


性能优化

通过 systemd-analyze 分析后,可能会发现一些服务导致系统启动变慢。针对这种情况,可以尝试以下优化方法:

  • 禁用不必要的服务:有些服务可能并不总是需要在启动时运行。可以通过 systemctl disable <service> 命令来禁用这些服务。
  • 修改服务依赖关系:有时,服务之间的依赖关系会导致启动延迟。通过修改服务的配置文件(位于 /etc/systemd/system/lib/systemd/system),可以改变这些依赖关系。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenCvSharp从入门到实践-(06)创建图像

目录 1、创建图像 1.1实例1-创建黑色图像 1.2实例2-创建白色图像 1.3实例3-创建随机像素的雪花点图像 2、图像拼接 2.1水平拼接图像 2.2垂直拼接图像 2.3实例4-垂直和水平两种方式拼接两张图像 在OpenCV中&#xff0c;黑白图像其实就是一个二维数组&#xff0c;彩色图像…

并发编程笔记

1、前言 这篇笔记是我花的20多天跟着⿊⻢的并发编程学习做的笔记&#xff0c;地址是b站 ⿊⻢ 并发编程 &#xff0c;也是我第⼀次 学习并发 编程&#xff0c;所以如果有很多原理讲不清楚的&#xff0c;知识点不全的&#xff0c;也请多多包涵 中间多数图都是直接截⽼师的笔记…

Fiddler抓包工具之fiddler的composer可以简单发送http协议的请求

一&#xff0c;composer的详解 右侧Composer区域&#xff0c;是测试接口的界面&#xff1a; 相关说明&#xff1a; 1.请求方式&#xff1a;点开可以勾选请求协议是get、post等 2.url地址栏&#xff1a;输入请求的url地址 3.请求头&#xff1a;第三块区域可以输入请求头信息…

全球与中国工业冰箱市场:增长趋势、竞争格局与前景展望

工业制冷机是用来维持储运容器内低温冷藏环境&#xff0c;以防止食品饮料、药品、化学品等对温度敏感的产品腐败变质的系统。此外&#xff0c;冷冻机、热交换器等冷冻系统也用于在工业机械运作过程中保持冷却。工业冷冻系统的需求成长主要是由食品和饮料产业的成长所推动的。 冷…

蓝桥杯每日一题2023.12.3

题目描述 1.移动距离 - 蓝桥云课 (lanqiao.cn) 题目分析 对于此题需要对行列的关系进行一定的探究&#xff0c;所求实际上为曼哈顿距离&#xff0c;只需要两个行列的绝对值想加即可&#xff0c;预处理使下标从0开始可以更加明确之间的关系&#xff0c;奇数行时这一行的数字需…

排序算法介绍(一)插入排序

0. 简介 插入排序&#xff08;Insertion Sort&#xff09; 是一种简单直观的排序算法&#xff0c;它的工作原理是通过构建有序序列&#xff0c;对于未排序数据&#xff0c;在已排序序列中从后向前扫描&#xff0c;找到相应位置并插入。插入排序在实现上&#xff0c;通常…

计算机组成学习-指令系统总结

复习本章时&#xff0c;思考以下问题&#xff1a; 1)什么是指令&#xff1f;什么是指令系统&#xff1f;为什么要引入指令系统&#xff1f;2)一般来说&#xff0c;指令分为哪些部分&#xff1f;每部分有什么用处&#xff1f;3)对于一个指令系统来说&#xff0c;寻址方式多和少…

龙芯loongarch64服务器编译安装maturin

前言 maturin 是一个构建和发布基于 Rust 的 Python 包的工具,但是在安装maturin的时候,会出现如下报错:error: cant find Rust compiler 这里记录问题解决过程中遇到的问题: 1、根据错误的提示需要安装Rust Compiler,首先去其官网按照官网给的解决办法提供进行安装 curl…

SocialSelling社交销售1+5+1方法论系列:社交销售价值何在

社交销售作为差异化的社媒社交营销模式&#xff0c;在实际运营操作过程中需要实现个人、部门与系统的融合打磨&#xff0c;并非只是应用工具那么简单。为了更高效地服务赋能客户&#xff0c;傲途基于实战提炼出社交销售151方法论&#xff0c;在近期系列内容中&#xff0c;我们将…

浅谈安科瑞无线测温设备在挪威某项目的应用

摘要&#xff1a;安科瑞无线温度设备装置通过无线温度收发器和各无线温度传感器直接进行温度值的传输&#xff0c;并采用液晶显示各无线温度传感器所测温度。 Absrtact:Acre wireless temperature device directly transmits the temperature value through the wireless temp…

鸿蒙4.0开发笔记之ArkTS装饰器语法基础@Prop@Link@State状态装饰器(十二)

文章目录 一、哪些是状态装饰器二、StatePropLink状态传递的核心规则三、状态装饰器练习 一、哪些是状态装饰器 1、State&#xff1a;被装饰拥有其所属组件的状态&#xff0c;可以作为其子组件单向和双向同步的数据源。当其数值改变时&#xff0c;会引起相关组件的渲染刷新。 …

力扣116. 填充每个节点的下一个右侧节点指针(详细讲解root根节点的理解)

题目&#xff1a; 给定一个 完美二叉树 &#xff0c;其所有叶子节点都在同一层&#xff0c;每个父节点都有两个子节点。二叉树定义如下&#xff1a; struct Node {int val;Node *left;Node *right;Node *next; } 填充它的每个 next 指针&#xff0c;让这个指针指向其下一个右…

LLM之RAG实战(一):使用Mistral-7b, LangChain, ChromaDB搭建自己的WEB聊天界面

一、RAG介绍 如何使用没有被LLM训练过的数据来提高LLM性能&#xff1f;检索增强生成&#xff08;RAG&#xff09;是未来的发展方向&#xff0c;下面将解释一下它的含义和实际工作原理。 ​ 假设您有自己的数据集&#xff0c;例如来自公司的文本文档。如何让ChatGPT和其他…

ZPLPrinter Emulator SDK for .NET 6.0.23.1123​ Crack

ZPLPrinter Emulator SDK for .NET 适用于 .NET 的 ZPLPrinter 仿真器 SDK 允许您通过编写 C# 或VB.NET 代码针对任何 .NET Framework、.NET CORE、旧版 ASP.NET MVC 和 CORE、Xamarin、Mono 和通用 Windows 平台 (UWP) 作业。 适用于 .NET 的 ZPLPrinter 仿真器 SDK 允许您将…

matplotlib与opencv图像读取与显示的问题

个人博客:Sekyoro的博客小屋 个人网站:Proanimer的个人网站 最近在用opencv和matplotlib展示图片,但是遇到了一些问题,这里展开说说 首先需要明确的是,opencv和matplotlib读取图片都是通道在最后,而前者默认可见光图像是BGR,后者是RGB.此外还有PIL以及imageio等读取图像的工具…

(学习笔记)Xposed模块编写(一)

前提&#xff1a;需要已经安装Xposed Installer 1. 新建一个AS项目 并把MainActvity和activity_main.xml这两个文件删掉&#xff0c;然后在AndriodManifest.xml中去掉这个Activity的声明 2. 在settings.gralde文件中加上阿里云的仓库地址&#xff0c;否则Xposed依赖无法下载 m…

9款热门API接口分享,值得收藏!

电商API接口 干货分享 开始 “ API是什么&#xff1f; API的主要目的是提供应用程序与开发人员以访问一组例程的能力&#xff0c;而又无需访问源码&#xff0c;或理解内部工作机制的细节。提供API所定义的功能的软件称作此API的实现。API是一种接口&#xff0c;故而是一种抽象…

Banana Pi最新的路由器板BPI-R4上市销售,基于MediaTek MT7988A

Banana Pi 发布了一款新的路由器板 Banana Pi BPI-R4&#xff0c;基于配备四核 Arm CPU 的 MediaTek MT7988A SoC。该板不仅仅是Raspberry Pi 的另一个替代品&#xff0c;而且是用于家庭网络和自动化的设备。 Banana Pi BPI-R4 的外形尺寸比单板计算机更像网络设备。对于那些希…

Python函数的基本使用(一)

Python函数的基本使用&#xff08;一&#xff09; 一、函数概述二、函数的定义2.1 函数的语法2.2 语法说明2.3 函数定义的方式2.4 总结 三、函数的调用3.1 函数调用语法3.2 语法说明3.3 函数调用 四、函数的参数4.1 参数的分类4.2 必需参数4.3 默认值参数4.4 关键字参数4.5 不定…

风变科技千万营收的AIGC项目,在Fanbook成功落地,专访风变科技CMO江育麟

在AIGC时代&#xff0c;创作生产力被下放到了每一位普通人身上&#xff0c;然后用户与AIGC应用之间还存在一定的认知与技术沟壑。 最近&#xff0c;【AIGC开放社区】注意到一款AIGC课程项目受到了相当的关注&#xff0c;让许多0基础的学员轻松地学会了使用AIGC技术的基本方法。…