Bug 248491

Summary: Kernel command-line option to turn off lost-tick compensation
Product: Red Hat Enterprise Linux 4 Reporter: Tim Mann <mann>
Component: kernelAssignee: Chris Lalancette <clalance>
Status: CLOSED WONTFIX QA Contact: Martin Jenner <mjenner>
Severity: high Docs Contact:
Priority: low    
Version: 4.5CC: akarlsso, dhecht, djuran, garrett, jvillalo, mmayer, rick.beldin
Target Milestone: rc   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2008-08-03 02:28:23 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 248488    
Bug Blocks: 430698    
Attachments:
Description Flags
Add a command-line option to disable lost tick compensation none

Description Tim Mann 2007-07-16 23:39:55 UTC
As discussed in http://bugzilla.kernel.org/show_bug.cgi?id=5127, Linux kernels
prior to the clocksource patches (i.e., 2.6.17 and earlier) have buggy code for
detecting and compensating for lost timer interrupts (ticks).  The bug results
in spurious detection of lost ticks and thus makes the clock run faster than
real time.

This problem is observable on real hardware, but is much more severe in a
virtual machine.

In 32-bit kernels, the command line option clock=pit effectively disables
lost-tick compensation.  (That's not the primary intent of the option; it's just
that basing timekeeping only on the PIT, as clock=pit does, gives the kernel no
way to detect lost ticks, so it doesn't try.)  On 64-bit kernels, however, there
is no way to disable lost-tick compensation from the command line.

We'd like to see a kernel command-line option to turn off lost-tick compensation
in 64-bit RHEL4 kernels, bringing them more or less to parity with 32-bit
kernels in this regard.

(I was planning to file a suggested patch to add the option along with this bug
report, but I don't have one ready quite yet.  I'll attach one when I have it;
should be later this week.  Due to some active discussions among various parties
we needed to get the bug into the RH bugzilla right away rather than waiting for
the patch to be done.  Thanks for your patience.)

Comment 1 Tim Mann 2007-07-19 21:19:57 UTC
Created attachment 159610 [details]
Add a command-line option to disable lost tick compensation

Here's the patch I promised.

Comment 2 Issue Tracker 2007-07-25 17:34:35 UTC
Rick,

As we discussed on our phone conversation, what I'd like to VMware for is
proof that turning off the lost tick compensation code conclusively shows
that the RHEL 4 guests stop gaining time. First they should show us what
kind of drift they are seeing on a stock RHEL 4.5 kernel. Actual deltas
from wall time.  Then, with their patch from BZ 248491 applied to a test
kernel that turns off the lost tick compensation code, show us how it
helped, show us the delta from our kernel and the test kernel. This would
give us something conclusive to discuss with engineering and would
certainly strengthen VMware's case for getting this included in RHEL 4.

Regards,

Chris


This event sent from IssueTracker by cww 
 issue 126566

Comment 3 Tim Mann 2007-07-25 19:56:56 UTC
We'll do some measurements and provide graphs.


Comment 4 RHEL Program Management 2007-07-31 20:15:31 UTC
This request was evaluated by Red Hat Product Management for inclusion in a Red
Hat Enterprise Linux maintenance release.  Product Management has requested
further review of this request by Red Hat Engineering, for potential
inclusion in a Red Hat Enterprise Linux Update release for currently deployed
products.  This request is not yet committed for inclusion in an Update
release.

Comment 9 Venkatesh Pallipadi 2007-12-07 05:38:24 UTC
Data with and without patch, from David Meng.

Basically time does not jump forward with the patch.


Server time	          RHEL4U6 Guest OS without patch time	Difference 
(sec.)	Out sync (sec)
Thu Dec 6 04:09:47 PST 2007	Thu Dec 6 04:09:53 PST 2007	7	0
Thu Dec 6 04:16:48 PST 2007	Thu Dec 6 04:16:56 PST 2007	8	1
Thu Dec 6 04:17:00 PST 2007	Thu Dec 6 04:17:07 PST 2007	7	0
Thu Dec 6 04:20:21 PST 2007	Thu Dec 6 04:20:29 PST 2007	9	2
Thu Dec 6 04:23:45 PST 2007	Thu Dec 6 04:23:54 PST 2007	9	2
Thu Dec 6 04:31:51 PST 2007	Thu Dec 6 04:32:01 PST 2007	10	3
Thu Dec 6 04:32:00 PST 2007	Thu Dec 6 04:32:09 PST 2007	9	2
Thu Dec 6 04:45:12 PST 2007	Thu Dec 6 04:45:23 PST 2007	11	4
Thu Dec 6 04:48:11 PST 2007	Thu Dec 6 04:48:25 PST 2007	14	7
Thu Dec 6 04:49:32 PST 2007	Thu Dec 6 04:49:45 PST 2007	13	6
Thu Dec 6 04:54:12 PST 2007	Thu Dec 6 04:45:26 PST 2007	14	7
Thu Dec 6 04:56:07 PST 2007	Thu Dec 6 04:56:20 PST 2007	13	6
Thu Dec 6 04:58:26 PST 2007	Thu Dec 6 04:58:40 PST 2007	14	7
Thu Dec 6 05:00:54 PST 2007	Thu Dec 6 05:01:08 PST 2007	14	7
Thu Dec 6 05:06:00 PST 2007	Thu Dec 6 05:06:15 PST 2007	15	8
Thu Dec 6 05:14:09 PST 2007	Thu Dec 6 05:14:24 PST 2007	15	8
Thu Dec 6 05:19:00 PST 2007	Thu Dec 6 05:19:17 PST 2007	17	10
Thu Dec 6 05:20:11 PST 2007	Thu Dec 6 05:20:27 PST 2007	16	9
Thu Dec 6 05:29:02 PST 2007	Thu Dec 6 05:29:20 PST 2007	18	11
Thu Dec 6 05:40:44 PST 2007	Thu Dec 6 05:41:03 PST 2007	19	12
Thu Dec 6 05:51:11 PST 2007	Thu Dec 6 05:51:32 PST 2007	21	14
Thu Dec 6 06:17:18 PST 2007	Thu Dec 6 06:17:44 PST 2007	26	19
Thu Dec 6 06:24:32 PST 2007	Thu Dec 6 06:24:57 PST 2007	25	18



Server time	     RHEL4U6 Guest OS with patch time	Difference (sec.)
	Out sync (sec)
Thu Dec 6 18:34:00 PST 2007	Thu Dec 6 18:34:00 PST 2007	0	0
Thu Dec 6 18:34:56 PST 2007	Thu Dec 6 18:34:56 PST 2007	0	0
Thu Dec 6 18:39:19 PST 2007	Thu Dec 6 18:39:19 PST 2007	0	0
Thu Dec 6 18:43:15 PST 2007	Thu Dec 6 18:43:15 PST 2007	0	0
Thu Dec 6 18:45:44 PST 2007	Thu Dec 6 18:45:44 PST 2007	0	0
Thu Dec 6 18:49:50 PST 2007	Thu Dec 6 18:49:51 PST 2007	1	1
Thu Dec 6 18:51:40 PST 2007	Thu Dec 6 18:51:40 PST 2007	0	0
Thu Dec 6 18:57:44 PST 2007	Thu Dec 6 18:57:44 PST 2007	0	0
Thu Dec 6 19:04:57 PST 2007	Thu Dec 6 19:04:57 PST 2007	0	0
Thu Dec 6 19:12:25 PST 2007	Thu Dec 6 19:12:25 PST 2007	0	0
Thu Dec 6 19:23:16 PST 2007	Thu Dec 6 19:23:16 PST 2007	0	0
Thu Dec 6 19:34:28 PST 2007	Thu Dec 6 19:34:28 PST 2007	0	0
Thu Dec 6 19:40:40 PST 2007	Thu Dec 6 19:40:40 PST 2007	0	0
Thu Dec 6 19:53:55 PST 2007	Thu Dec 6 19:53:55 PST 2007	0	0
Thu Dec 6 20:04:43 PST 2007	Thu Dec 6 20:04:43 PST 2007	0	0
Thu Dec 6 20:13:32 PST 2007	Thu Dec 6 20:13:32 PST 2007	0	0
Thu Dec 6 20:23:50 PST 2007	Thu Dec 6 20:23:51 PST 2007	1	1
Thu Dec 6 20:33:06 PST 2007	Thu Dec 6 20:33:06 PST 2007	0	0
Thu Dec 6 20:43:19 PST 2007	Thu Dec 6 20:43:19 PST 2007	0	0
Thu Dec 6 20:53:30 PST 2007	Thu Dec 6 20:53:30 PST 2007	0	0
Thu Dec 6 21:02:53 PST 2007	Thu Dec 6 21:02:53 PST 2007	0	0



Comment 11 Tim Mann 2007-12-12 18:27:18 UTC
This patch does not depend on the divider patch discussed bug 248488.  Of
course, they both affect timekeeping and we would like to see both changes applied.


Comment 14 RHEL Program Management 2008-08-03 02:28:23 UTC
Development Management has reviewed and declined this request.  You may appeal
this decision by reopening this request.

Comment 15 Chris Lalancette 2010-07-19 13:03:47 UTC
Just clearing a needinfo request on me.