[Hyper-V] Implement Hyper-V PTP Source
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
linux (Ubuntu) |
Fix Released
|
Medium
|
Unassigned | ||
Xenial |
Fix Released
|
High
|
Marcelo Cerri | ||
Yakkety |
Fix Released
|
Medium
|
Unassigned | ||
Zesty |
Fix Released
|
Medium
|
Unassigned |
Bug Description
Please include the following upstream commit into lts-xenial, 16.04 HWE, Yakkity, and Zesty. This will improve the behavior of timesync on Hyper-V hosts while simultaneously using network time sync protocols like NTP.
commit 3716a49a81ba19d
Author: Vitaly Kuznetsov <email address hidden>
Date: Sat Feb 4 09:57:14 2017 -0700
hv_utils: implement Hyper-V PTP source
With TimeSync version 4 protocol support we started updating system time
continuously through the whole lifetime of Hyper-V guests. Every 5 seconds
there is a time sample from the host which triggers do_settimeofday
While the time from the host is very accurate such adjustments may cause
issues:
- Time is jumping forward and backward, some applications may misbehave.
- In case an NTP server runs in parallel and uses something else for time
sync (network, PTP,...) system time will never converge.
- Systemd starts annoying you by printing "Time has been changed" every 5
seconds to the system log.
Instead of doing in-kernel time adjustments offload the work to an
NTP client by exposing TimeSync messages as a PTP device. Users may now
decide what they want to use as a source.
I tested the solution with chrony, the config was:
refclock PHC /dev/ptp0 poll 3 dpoll -2 offset 0
The result I'm seeing is accurate enough, the time delta between the guest
and the host is almost always within [-10us, +10us], the in-kernel solution
was giving us comparable results.
I also tried implementing PPS device instead of PTP by using not currently
used Hyper-V synthetic timers (we use only one of four for clockevent) but
with PPS source only chrony wasn't able to give me the required accuracy,
the delta often more that 100us.
Signed-off-by: Vitaly Kuznetsov <email address hidden>
Signed-off-by: K. Y. Srinivasan <email address hidden>
Signed-off-by: Greg Kroah-Hartman <email address hidden>
CVE References
Changed in linux (Ubuntu): | |
status: | New → Confirmed |
description: | updated |
tags: | added: kernel-da-key kernel-hyper-v xenial yakkety zesty |
Changed in linux (Ubuntu Xenial): | |
status: | New → Triaged |
Changed in linux (Ubuntu Yakkety): | |
status: | New → Triaged |
Changed in linux (Ubuntu Zesty): | |
status: | Confirmed → Triaged |
Changed in linux (Ubuntu Xenial): | |
importance: | Undecided → Medium |
Changed in linux (Ubuntu Yakkety): | |
importance: | Undecided → Medium |
Changed in linux (Ubuntu Zesty): | |
importance: | Undecided → Medium |
Changed in linux (Ubuntu Zesty): | |
status: | Triaged → Fix Committed |
Changed in linux (Ubuntu Yakkety): | |
status: | In Progress → Fix Committed |
Changed in linux (Ubuntu Xenial): | |
status: | Triaged → Won't Fix |
status: | Won't Fix → Triaged |
Changed in linux (Ubuntu Xenial): | |
status: | Triaged → In Progress |
assignee: | nobody → Joseph Salisbury (jsalisbury) |
tags: |
added: verification-done-yakkety removed: verification-needed-yakkety |
Changed in linux (Ubuntu Xenial): | |
importance: | Medium → High |
Changed in linux (Ubuntu Yakkety): | |
assignee: | Tim Gardner (timg-tpi) → nobody |
Changed in linux (Ubuntu Xenial): | |
status: | In Progress → Fix Committed |
Changed in linux (Ubuntu Xenial): | |
assignee: | Joseph Salisbury (jsalisbury) → Marcelo Cerri (mhcerri) |
tags: | added: verification-done-xenial |
This patch needs the CONFIG_ PTP_1588_ CLOCK flag set in the kernel config.