AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 791979
Accepted
Seamus
Seamus
Asked: 2025-03-05 13:04:00 +0800 CST2025-03-05 13:04:00 +0800 CST 2025-03-05 13:04:00 +0800 CST

控制 systemd“切片”中包含哪些服务

  • 772

我重写了开头这段话……试图掩饰我对的蔑视systemd。我只能说我发现systemd的“逻辑”令人费解,就此打住。回到问题:

systemd-analyze time我一直在尝试减少小型Raspberry Pi Zero 2W上报告的启动时间。该操作系统约 95% 是 Debian,并加入了一些 Raspberry Pi 来处理硬件。

我首先列出活动的单元文件,然后从该列表中我找到了几个service我相信可以毫无影响地删除的文件:

$ systemctl list-unit-files --state=enabled
...
rpi-display-backlight.service      enabled enabled
rpi-eeprom-update.service          enabled enabled
...
$

我选择disable这两项服务如下:

$ sudo systemctl disable rpi-eeprom-update.service rpi-display-backlight.service
Removed "/etc/systemd/system/halt.target.wants/rpi-display-backlight.service".
Removed "/etc/systemd/system/poweroff.target.wants/rpi-display-backlight.service".
Removed "/etc/systemd/system/reboot.target.wants/rpi-display-backlight.service".
Removed "/etc/systemd/system/multi-user.target.wants/rpi-eeprom-update.service".

令人失望的是,我发现启动时间(据报告systemd-analyze time)实际上增加了约 3 秒。我重新启动了几次以获得“平均值”;3 秒的增加看起来是真实且持续的。我想知道这种增加是否可能是由于systemd 重新尝试启动这些服务造成的。因此我寻找与其他“单元”的依赖关系systemd:

$ systemctl list-dependencies rpi-eeprom-update.service
rpi-eeprom-update.service

$ systemctl list-dependencies rpi-display-backlight.service
rpi-display-backlight.service
● └─system.slice
$

我认为第一个结果 (rpi-eeprom) 表明没有其他依赖项。第二个结果 (rpi-display) 让我感到困惑。.slice从那时起,我做了一些研究,但它对我来说仍然没有什么意义(实际上没有意义)。这引出了我的问题:

有人能解释一下如何编辑这个system.slice并删除吗rpi-display-backlight.service?

debian
  • 1 1 个回答
  • 24 Views

1 个回答

  • Voted
  1. Best Answer
    telcoM
    2025-03-06T15:22:19+08:002025-03-06T15:22:19+08:00

    您似乎对切片的概念存在误解。请允许我先介绍一些背景知识。

    切片是 systemd 资源簿记层次结构的一个单位:对切片的依赖不会强制启动服务。相反:在建立资源簿记之前(即已安装和虚拟文件系统),不允许启动服务。一旦安装了真正的根文件系统,就会发生这种情况,因此限制并不大。/sys/sys/fs/cgroup

    任何管理流程的单元(主要是范围和服务单元)都可以分配给特定的切片:如果没有定义更具体的切片,则任何系统或单元的默认分类为。任何实例化服务单元(名称中带有 的单元)都会获得一个 子切片,该子切片可以跟踪该特定模板的所有实例的资源使用情况。*.service*.scopesystem.slice@system.slice

    例如:

    • 所有没有定义更具体切片的系统服务都包含在system.slice
    • 如果您使用getty来激活串行端口的进程,您将自动获得一个,它跟踪所有服务的总资源使用情况。这是 的子片段。systemctl enable [email protected]system-serial\x2dgetty.sliceserial-getty@...system.slice
    • 管理的所有用户登录systemd-logind均计入user.slice,每个登录用户都由子user-<UID>.slice切片单独跟踪。其中包括用户服务,即每个用户的后台服务:请参阅systemctl --user list-units --type=service。
    • 如果您在 的管理下运行虚拟机或容器systemd-machined,您将获得一个machine.slice跟踪所有虚拟机/容器的总资源使用情况的数据,以及一个machine-<VM/container ID>.slice跟踪每个特定虚拟机/容器的子切片。

    为了获得更直观的理解,请尝试运行systemd-cgtop并想象您的系统被某些东西占用,但不知道具体是什么。是某些用户做了不该做的事情,还是某个配置错误或受到外部攻击的服务进程?

    您可以选择激活资源限制跟踪,并对任何服务或分片设置资源使用限制。例如,如果您的系统运行着某个关键服务和一些非必要服务,那么您可以将非必要服务放入单独的分片(可能是的子分片system.slice),然后向该分片添加ConditionMemoryPressure=和ConditionCPUPressure=/或ConditionIOPressure=,以使系统在内存/CPU/IO 负载过高时自动关闭所有非必要进程(或者如果非必要进程包括*.timer运行定期非必要任务的单元,则首先不启动它们)。man systemd.resource-control有关详细信息,请参阅。

    如果您希望单独跟踪特定服务或服务组的资源使用情况,您可以Slice=something.slice在[Service]相应服务的部分添加一行。

    您的下一个问题可能是“那么,为什么rpi-display-backlight.service依赖于system.slice而rpi-eeprom-update.service不依赖于 呢?”说实话,我暂时还不确定。但我猜想这可能意味着rpi-eeprom-update是 的服务Type=oneshot,它不应该让任何长期存在的进程运行,并且rpi-display-backlight会启动至少一个服务进程,该进程的资源使用量被算作 的一部分,system.slice因为没有定义更具体的部分,并且system.slice是所有服务的默认部分。

    重申一下:如果某个单元依赖于某个切片单元,则systemd不会尝试重新启动该单元。这只意味着该单元启动的长期进程的任何资源使用量都将计入指定切片中。

    如果要更改的切片依赖性rpi-display-backlight.service,只需添加一个/etc/systemd/system/rpi-display-backlight.service.d/override.conf包含以下内容的文件:

    [Service]
    Slice=system-separate.slice
    

    如果你想rpi-display-backlight.service在一个单独的子切片中,它仍然总计在下system.slice,或者

    [Service]
    Slice=separate.slice
    

    如果您希望将其资源使用量排除在总数之外system.slice。

    与往常一样,更改服务配置文件后,运行systemctl daemon-reload。或者使用进行更改systemctl edit rpi-display-backlight.service,它会自动为您执行此操作(并且允许您轻松还原更改或在出现语法错误时重新编辑)。

    • 1

相关问题

  • GRUB 配置以识别同一 Linux 发行版的不同桌面环境(安装)

  • astyle 不会更改源文件格式

  • 接收有关全新 Debian 的电子邮件

  • Debian Stretch:libgs_plugin_systemd-updates.so 中的 gnome-software 段错误

  • 如何在拼音输入法中输入ü?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve