From: Joao Martins <firstname.lastname@example.org> To: email@example.com Cc: Andrew Cooper <firstname.lastname@example.org>, Joao Martins <email@example.com>, Keir Fraser <firstname.lastname@example.org>, Jan Beulich <email@example.com> Subject: [PATCH 0/5] x86/time: PVCLOCK_TSC_STABLE_BIT support Date: Thu, 17 Mar 2016 09:12:11 -0700 (PDT) [thread overview] Message-ID: <firstname.lastname@example.org> (raw) Hey, This series is a repost with the comments that I got so far and hopefully could be considered for Xen 4.7. PVCLOCK_TSC_STABLE_BIT is the flag telling the guest that the vcpu_time_info (pvti) are monotonic as seen by any CPU, a feature which is currently not supported. As it is (i.e. bindly setting the flag), we can observe that this property isn't there: a process using vdso clock_gettime/gettimeofday will observe a significant amount of warps (i.e. time going backwards) and it's due to 1) time calibration skew in xen rendezvous algorithm 2) clocksource not in sync with TSC. These warps are seen more frequently on PV guests (potentially because vcpu time infos are only updated when guest is in kernel mode, and perhaps lack of tsc_offset?), and in rare ocasions on HVM guests. It is worth noting that with guests VCPUs pinned, only PV guests see these warps. But on HVM guests specifically: such warps only occur when one of guest VCPUs is pinned to CPU0. This series aims to propose a solution to that and it's divided as following: (R) * Patch 1: Adds the missing flag field to vcpu_time_info. (U) * Patch 2: Adds a new clocksource based on TSC (U) * Patch 3, 4: Adjustments for patch 5 * Patch 5: Implements the PVCLOCK_TSC_STABLE_BIT [R := Reviewed-by ;; U := Updated] PVCLOCK_TSC_STABLE_BIT is set only when using clocksource=tsc, and so it remains optional unless specified by the admin. The test was running time-warp-test, that constantly calls clock_gettime/gettimeofday on every CPU. It measures a delta with the previous returned value and mark a warp if it's negative. I measured it during periods of 1h and 6h and check how many warps and their values (alongside the amount of time skew). Measurements/Changelog are included in individual patches. Note that most of the testing has been done with Linux 4.4 in which these warps/skew could be easily observed as vdso would use each vCPU pvti. Though Linux >= 4.5 changes this behaviour and use only the vCPU0 pvti though still requiring PVCLOCK_TSC_STABLE_BIT flag support. Any comments appreciated, Thanks! Joao Joao Martins (5): public/xen.h: add flags field to vcpu_time_info x86/time: implement tsc as clocksource x86/time: streamline platform time init on plt_init() x86/time: refactor read_platform_stime() x86/time: implement PVCLOCK_TSC_STABLE_BIT xen/arch/x86/time.c | 132 ++++++++++++++++++++++++++++++++++++++++------- xen/include/public/xen.h | 6 ++- 2 files changed, 119 insertions(+), 19 deletions(-) -- 2.1.4 _______________________________________________ Xen-devel mailing list Xenemail@example.com http://lists.xen.org/xen-devel
next reply other threads:[~2016-03-17 16:12 UTC|newest] Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top 2016-03-17 16:12 Joao Martins [this message] 2016-03-17 16:12 ` [PATCH 1/5] public/xen.h: add flags field to vcpu_time_info Joao Martins 2016-03-18 20:12 ` Andrew Cooper 2016-03-21 11:42 ` Joao Martins 2016-03-21 11:43 ` Andrew Cooper 2016-03-21 11:51 ` Joao Martins 2016-03-21 15:10 ` Jan Beulich 2016-03-21 15:27 ` Andrew Cooper 2016-03-21 15:40 ` Joao Martins 2016-03-17 16:12 ` [PATCH 2/5] x86/time: implement tsc as clocksource Joao Martins 2016-03-18 20:21 ` Andrew Cooper 2016-03-21 11:43 ` Joao Martins 2016-03-22 12:41 ` Joao Martins 2016-03-22 12:46 ` Jan Beulich 2016-03-22 15:51 ` Joao Martins 2016-03-22 16:02 ` Jan Beulich 2016-03-22 20:40 ` Joao Martins 2016-03-23 7:28 ` Jan Beulich 2016-03-23 12:05 ` Joao Martins 2016-03-23 14:05 ` Jan Beulich 2016-03-17 16:12 ` [PATCH 3/5] x86/time: streamline platform time init on plt_init() Joao Martins 2016-03-18 20:32 ` Andrew Cooper 2016-03-21 11:45 ` Joao Martins 2016-03-17 16:12 ` [PATCH 4/5] x86/time: refactor read_platform_stime() Joao Martins 2016-03-18 20:34 ` Andrew Cooper 2016-03-21 11:45 ` Joao Martins 2016-03-21 13:08 ` Andrew Cooper 2016-03-17 16:12 ` [PATCH 5/5] x86/time: implement PVCLOCK_TSC_STABLE_BIT Joao Martins 2016-03-18 20:58 ` Andrew Cooper 2016-03-21 11:50 ` Joao Martins
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --subject='Re: [PATCH 0/5] x86/time: PVCLOCK_TSC_STABLE_BIT support' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).