Public bug reported:

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.)

** Affects: linux (Ubuntu)
     Importance: Undecided
         Status: New

-- 
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
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to