** 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

Reply via email to