优化系统服务花费的时间太长

问题描述 投票:-1回答:1

我的系统中有此udhcpc服务:

[Unit]
Description=uDHCP Client Service
After=network.target
Conflicts=systemd-resolved.service

[Service]
Type=forking
ExecStart=/sbin/udhcpc -p /var/run/udhcpc.brg0.pid -i brg0 -R -b
ExecStop=/bin/sh -c 'test -f /var/run/udhcpc.brg0.pid && kill $(cat /var/run/udhcpc.brg0.pid)'

[Install]
WantedBy=multi-user.target

运行良好,但systemd-analyze显示启动时间增加了大约7秒:

          7.388s udhcpc.service
          4.946s dev-mmcblk1p2.device
          1.303s uim-sysfs.service
           959ms dev-mmcblk1p4.device
           752ms dev-mmcblk1p3.device
           739ms dev-mmcblk1p1.device
           718ms systemd-hwdb-update.service
           .
           .

这是systemd-analyze critical-chain的输出:

multi-user.target @15.164s
[[0;1;31mudhcpc.service @7.773s +7.388s[[0m
  network.target @7.551s
    [[0;1;31msystemd-networkd.service @6.724s +668ms[[0m
      [[0;1;31msystemd-udevd.service @1.854s +87ms[[0m
        [[0;1;31msystemd-tmpfiles-setup-dev.service @1.662s +70ms[[0m
          [[0;1;31msystemd-sysusers.service @1.353s +229ms[[0m
            [[0;1;31msystemd-remount-fs.service @1.044s +238ms[[0m
              systemd-journald.socket @911ms
                -.slice @281ms

我想解决此问题的正确方法是避免使用udhcpc并坚持使用systemd内置的机制,但是不幸的是,这不是我的要求。我想至少优化启动时间。我可以做什么?

systemd udhcpc
1个回答
1
投票

“问题”是systemd-networkd,它会停止引导,直到配置了网络-这是您要替换的,而不是systemd-resolved

无法使网络自动配置更快,因为正确实施DHCP后,DHCP需要检查地址是否尚未使用,这涉及发送一堆ARP数据包并等待超时。

由于在“网络已配置”和“多用户启动完成”目标之间插入了服务,因此引入了以前没有的依赖项。

网络配置通常是异步的,因为任何在启动时未配置网络时失败的服务也会在以后网络断开时失败。

© www.soinside.com 2019 - 2024. All rights reserved.