** 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 <a...@canonical.com>" - [Unit] - Description=Hyper-V KVP Protocol Daemon - ConditionVirtualization=microsoft + ==================== + # On Azure/Hyper-V systems start the hv_kvp_daemon + # + # author "Andy Whitcroft <a...@canonical.com>" + [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 Kernel Packages, which is subscribed to linux in Ubuntu. https://bugs.launchpad.net/bugs/1739107 Title: linux-cloud-tools-common: Ensure hv-kvp-daemon.service starts before walinuxagent.service Status in linux package in Ubuntu: In Progress Status in linux source package in Xenial: In Progress Status in linux source package in Zesty: Won't Fix Status in linux source package in Artful: Won't Fix Status in linux source package in Bionic: In Progress Bug description: 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 <a...@canonical.com>" [Unit] Description=Hyper-V KVP Protocol Daemon ConditionVirtualization=microsoft [Service] ExecStart=/usr/sbin/hv_kvp_daemon -n [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 RequiresMountsFor=/var/lib/hyperv 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. 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 After making the suggested change, the startup time is similar: $ 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. 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 To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1739107/+subscriptions -- Mailing list: https://launchpad.net/~kernel-packages Post to : kernel-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~kernel-packages More help : https://help.launchpad.net/ListHelp