Bug 248491 - Kernel command-line option to turn off lost-tick compensation
Summary: Kernel command-line option to turn off lost-tick compensation
Keywords:
Status: CLOSED WONTFIX
Alias: None
Product: Red Hat Enterprise Linux 4
Classification: Red Hat
Component: kernel
Version: 4.5
Hardware: x86_64
OS: Linux
low
high
Target Milestone: rc
: ---
Assignee: Chris Lalancette
QA Contact: Martin Jenner
URL:
Whiteboard:
Depends On: 248488
Blocks: 430698
TreeView+ depends on / blocked
 
Reported: 2007-07-16 23:39 UTC by Tim Mann
Modified: 2010-07-19 13:03 UTC (History)
7 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2008-08-03 02:28:23 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)
Add a command-line option to disable lost tick compensation (3.94 KB, patch)
2007-07-19 21:19 UTC, Tim Mann
no flags Details | Diff


Links
System ID Private Priority Status Summary Last Updated
Linux Kernel 5127 0 None None None Never

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.


Note You need to log in before you can comment on or make changes to this bug.