Peter Zijlstra
354879bb97
sched_clock: fix cpu_clock()
This patch fixes 3 issues:
a) it removes the dependency on jiffies, because jiffies are incremented
by a single CPU, and the tick is not synchronized between CPUs. Therefore
relying on it to calculate a window to clip whacky TSC values doesn't work
as it can drift around.
So instead use [GTOD, GTOD+TICK_NSEC) as the window.
b) __update_sched_clock() did (roughly speaking):
delta = sched_clock() - scd->tick_raw;
clock += delta;
Which gives exponential growth, instead of linear.
c) allows the sched_clock_cpu() value to warp the u64 without breaking.
the results are more reliable sched_clock() deltas:
before after sched_clock
cpu_clock: 15750 51312 51488
cpu_clock: 59719 51052 50947
cpu_clock: 15879 51249 51061
cpu_clock: 1 50933 51198
cpu_clock: 1 50931 51039
cpu_clock: 1 51093 50981
cpu_clock: 1 51043 51040
cpu_clock: 1 50959 50938
cpu_clock: 1 50981 51011
cpu_clock: 1 51364 51212
cpu_clock: 1 51219 51273
cpu_clock: 1 51389 51048
cpu_clock: 1 51285 51611
cpu_clock: 1 50964 51137
cpu_clock: 1 50973 50968
cpu_clock: 1 50967 50972
cpu_clock: 1 58910 58485
cpu_clock: 1 51082 51025
cpu_clock: 1 50957 50958
cpu_clock: 1 50958 50957
cpu_clock: 1006128 51128 50971
cpu_clock: 1 51107 51155
cpu_clock: 1 51371 51081
cpu_clock: 1 51104 51365
cpu_clock: 1 51363 51309
cpu_clock: 1 51107 51160
cpu_clock: 1 51139 51100
cpu_clock: 1 51216 51136
cpu_clock: 1 51207 51215
cpu_clock: 1 51087 51263
cpu_clock: 1 51249 51177
cpu_clock: 1 51519 51412
cpu_clock: 1 51416 51255
cpu_clock: 1 51591 51594
cpu_clock: 1 50966 51374
cpu_clock: 1 50966 50966
cpu_clock: 1 51291 50948
cpu_clock: 1 50973 50867
cpu_clock: 1 50970 50970
cpu_clock: 998306 50970 50971
cpu_clock: 1 50971 50970
cpu_clock: 1 50970 50970
cpu_clock: 1 50971 50971
cpu_clock: 1 50970 50970
cpu_clock: 1 51351 50970
cpu_clock: 1 50970 51352
cpu_clock: 1 50971 50970
cpu_clock: 1 50970 50970
cpu_clock: 1 51321 50971
cpu_clock: 1 50974 51324
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2008-08-25 17:39:57 +02:00
..
2008-08-12 16:07:30 -07:00
2008-07-26 12:00:04 -07:00
2008-07-31 17:20:29 +02:00
2008-07-28 23:32:00 +02:00
2008-02-09 23:27:01 -08:00
2008-07-25 10:53:47 -07:00
2008-05-17 03:30:23 -04:00
2008-08-01 12:15:16 -04:00
2008-04-28 06:28:04 -04:00
2008-08-01 12:15:03 -04:00
2008-08-04 06:13:50 -04:00
2008-06-27 18:09:16 +02:00
2008-04-29 08:06:29 -07:00
2008-08-14 22:59:43 +10:00
2008-04-29 08:06:09 -07:00
2008-07-30 09:41:44 -07:00
2008-05-01 08:03:59 -07:00
2008-04-29 08:06:22 -07:00
2008-08-12 16:07:28 -07:00
2008-07-30 09:41:44 -07:00
2008-07-25 10:53:47 -07:00
2008-08-07 06:52:01 -07:00
2008-04-29 08:06:22 -07:00
2008-07-26 20:53:20 -04:00
2008-08-01 12:01:11 -07:00
2008-07-28 16:30:21 -07:00
2008-03-30 14:18:41 -07:00
2008-06-23 13:31:15 +02:00
2008-07-15 21:55:59 +02:00
2008-02-08 09:22:29 -08:00
2008-07-25 10:53:27 -07:00
2008-07-28 14:37:38 +02:00
2008-03-10 18:01:20 -07:00
2008-08-15 08:35:43 -07:00
2008-08-01 08:39:35 -05:00
2008-07-25 10:53:28 -07:00
2008-07-25 10:53:30 -07:00
2008-07-26 12:00:09 -07:00
2008-04-29 08:06:22 -07:00
2008-08-13 12:55:10 +02:00
2008-08-15 19:22:04 +02:00
2008-08-18 09:42:31 +02:00
2008-07-29 00:07:55 +02:00
2008-07-30 09:41:45 -07:00
2008-08-12 17:52:54 +10:00
2008-05-16 16:53:35 +02:00
2008-07-28 18:12:36 +02:00
2008-04-29 08:06:13 -07:00
2008-07-25 10:53:37 -07:00
2008-07-25 10:53:37 -07:00
2008-07-25 10:53:29 -07:00
2008-02-08 09:22:41 -08:00
2008-07-25 10:53:47 -07:00
2008-07-25 10:53:45 -07:00
2008-08-05 14:33:50 -07:00
2008-05-24 18:49:22 +02:00
2008-08-11 16:46:11 -07:00
2008-07-30 09:41:45 -07:00
2008-07-25 10:53:27 -07:00
2008-08-14 22:59:43 +10:00
2008-07-28 12:16:31 +10:00
2008-07-15 14:12:03 -07:00
2008-05-19 10:03:39 +02:00
2008-07-16 00:29:07 +02:00
2008-06-26 09:24:33 +02:00
2008-08-05 14:33:46 -07:00
2008-07-25 10:53:36 -07:00
2008-07-30 09:41:43 -07:00
2008-02-08 09:22:41 -08:00
2008-02-08 09:22:41 -08:00
2008-07-21 21:55:02 -07:00
2008-02-13 15:45:36 +01:00
2008-08-25 17:39:57 +02:00
2008-06-06 15:19:28 +02:00
2008-06-06 15:19:44 +02:00
2008-06-27 14:31:31 +02:00
2008-08-11 14:49:29 +02:00
2008-08-21 08:18:02 +02:00
2008-05-05 23:56:17 +02:00
2008-08-14 15:50:58 +02:00
2008-07-04 12:50:23 +02:00
2008-08-16 17:15:32 -07:00
2008-08-05 14:33:47 -07:00
2008-08-11 16:46:11 -07:00
2008-08-12 11:21:27 +02:00
2008-07-26 12:00:04 -07:00
2008-07-26 12:00:04 -07:00
2008-08-13 13:56:51 +02:00
2008-06-30 09:20:55 +02:00
2008-08-12 17:52:55 +10:00
2008-07-25 11:35:41 -07:00
2008-08-15 08:35:42 -07:00
2008-07-25 10:53:45 -07:00
2008-07-27 09:45:34 -07:00
2008-07-25 10:53:47 -07:00
2008-05-02 16:18:42 -07:00
2008-05-02 16:18:42 -07:00
2008-07-14 16:06:58 -07:00
2008-07-27 16:12:28 -07:00
2008-04-10 17:28:26 -07:00
2008-04-29 08:06:07 -07:00
2008-04-30 08:29:53 -07:00
2008-04-29 08:06:04 -07:00
2008-02-08 09:22:31 -08:00
2008-08-12 00:11:49 +02:00