** Description changed: This is a request to make a change in the hv-kvp-daemon systemd service which is part of the linux-cloud-tools-common package to ensure the hv- kvp-daemon service starts before the walinuxagent service. The default dependencies make hv-kvp-daemon wait until the whole system is up before it can start. Currently the /lib/systemd/system/hv-kvp-daemon.service file looks like this: - ==================== - # On Azure/Hyper-V systems start the hv_kvp_daemon - # - # author "Andy Whitcroft <[email protected]>" - [Unit] - Description=Hyper-V KVP Protocol Daemon - ConditionVirtualization=microsoft + ==================== + # On Azure/Hyper-V systems start the hv_kvp_daemon + # + # author "Andy Whitcroft <[email protected]>" + [Unit] + Description=Hyper-V KVP Protocol Daemon + ConditionVirtualization=microsoft - [Service] - ExecStart=/usr/sbin/hv_kvp_daemon -n + [Service] + ExecStart=/usr/sbin/hv_kvp_daemon -n - [Install] - WantedBy=multi-user.target - ==================== + [Install] + WantedBy=multi-user.target + ==================== The suggested modification is to make the [Unit] section look like this: - [Unit] - Description=Hyper-V KVP Protocol Daemon - ConditionVirtualization=microsoft - DefaultDependencies=no - After=systemd-remount-fs.service - Before=shutdown.target cloud-init-local.service walinuxagent.service - Conflicts=shutdown.target + [Unit] + Description=Hyper-V KVP Protocol Daemon + ConditionVirtualization=microsoft + DefaultDependencies=no + After=systemd-remount-fs.service + Before=shutdown.target cloud-init-local.service walinuxagent.service + Conflicts=shutdown.target RequiresMountsFor=/var/lib/hyperv + The hv-kvp-daemon service is not currently part of the critical-chain: - The hv-kvp-daemon service is not currently part of the critical-chain: + $ systemd-analyze critical-chain + The time after the unit is active or started is printed after the "@" character. + The time the unit takes to start is printed after the "+" character. - $ systemd-analyze critical-chain - The time after the unit is active or started is printed after the "@" character. - The time the unit takes to start is printed after the "+" character. + graphical.target @10.809s + └─multi-user.target @10.723s + └─ephemeral-disk-warning.service @10.538s +31ms + └─cloud-config.service @8.249s +2.252s + └─basic.target @8.044s + └─sockets.target @8.019s + └─snapd.socket @7.692s +264ms + └─sysinit.target @6.719s + └─cloud-init.service @5.803s +842ms + └─networking.service @5.137s +612ms + └─network-pre.target @5.074s + └─cloud-init-local.service @2.257s +2.783s + └─systemd-remount-fs.service @1.368s +656ms + └─systemd-journald.socket @1.218s + └─-.mount @649ms + └─system.slice @653ms + └─-.slice @649ms - graphical.target @10.809s - └─multi-user.target @10.723s - └─ephemeral-disk-warning.service @10.538s +31ms - └─cloud-config.service @8.249s +2.252s - └─basic.target @8.044s - └─sockets.target @8.019s - └─snapd.socket @7.692s +264ms - └─sysinit.target @6.719s - └─cloud-init.service @5.803s +842ms - └─networking.service @5.137s +612ms - └─network-pre.target @5.074s - └─cloud-init-local.service @2.257s +2.783s - └─systemd-remount-fs.service @1.368s +656ms - └─systemd-journald.socket @1.218s - └─-.mount @649ms - └─system.slice @653ms - └─-.slice @649ms + In an Azure VM, the current startup time of my test is: + $ systemd-analyze + Startup finished in 10.375s (kernel) + 12.352s (userspace) = 22.728s - In an Azure VM, the current startup time of my test is: - $ systemd-analyze - Startup finished in 10.375s (kernel) + 12.352s (userspace) = 22.728s + After making the suggested change, the startup time is similar: - - After making the suggested change, the startup time is similar: - - $ systemd-analyze - Startup finished in 9.759s (kernel) + 11.867s (userspace) = 21.627s + $ systemd-analyze + Startup finished in 9.759s (kernel) + 11.867s (userspace) = 21.627s And the service is now in the critical-chain: - $ systemd-analyze critical-chain - The time after the unit is active or started is printed after the "@" character. - The time the unit takes to start is printed after the "+" character. + $ systemd-analyze critical-chain + The time after the unit is active or started is printed after the "@" character. + The time the unit takes to start is printed after the "+" character. - graphical.target @10.666s - └─multi-user.target @10.636s - └─ephemeral-disk-warning.service @10.556s +36ms - └─cloud-config.service @8.423s +2.095s - └─basic.target @8.124s - └─sockets.target @8.101s - └─lxd.socket @7.677s +326ms - └─sysinit.target @6.755s - └─cloud-init.service @5.814s +908ms - └─networking.service @5.111s +651ms - └─network-pre.target @5.087s - └─cloud-init-local.service @2.345s +2.707s - └─hv-kvp-daemon.service @2.316s - └─systemd-remount-fs.service @1.253s +680ms - └─system.slice @1.225s - └─-.slice @650ms + graphical.target @10.666s + └─multi-user.target @10.636s + └─ephemeral-disk-warning.service @10.556s +36ms + └─cloud-config.service @8.423s +2.095s + └─basic.target @8.124s + └─sockets.target @8.101s + └─lxd.socket @7.677s +326ms + └─sysinit.target @6.755s + └─cloud-init.service @5.814s +908ms + └─networking.service @5.111s +651ms + └─network-pre.target @5.087s + └─cloud-init-local.service @2.345s +2.707s + └─hv-kvp-daemon.service @2.316s + └─systemd-remount-fs.service @1.253s +680ms + └─system.slice @1.225s + └─-.slice @650ms The ConditionVirtualization=microsoft line makes it so that this doesn't affect non microsoft virtualization environments (ie. qemu, kvm, vmware, xen, etc.) + + https://www.freedesktop.org/software/systemd/man/systemd-detect-virt.html# + microsoft Hyper-V, also known as Viridian or Windows Server Virtualization
-- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1739107 Title: linux-cloud-tools-common: Ensure hv-kvp-daemon.service starts before walinuxagent.service To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1739107/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
