• I
    time: introduce xtime_seconds · f20bf612
    Ingo Molnar 提交于
    improve performance of sys_time(). sys_time() returns time in seconds,
    but it does so by calling do_gettimeofday() and then returning the
    tv_sec portion of the GTOD time. But the data structure "xtime", which
    is updated by every timer/scheduler tick, already offers HZ granularity
    time.
    
    the patch improves the sysbench oltp macrobenchmark by 4-5% on an AMD
    dual-core system:
    
    v2.6.23:
    
    #threads
    
       1:     transactions:                        4073   (407.23 per sec.)
       2:     transactions:                        8530   (852.81 per sec.)
       3:     transactions:                        8321   (831.88 per sec.)
       4:     transactions:                        8407   (840.58 per sec.)
       5:     transactions:                        8070   (806.74 per sec.)
    
    v2.6.23 + sys_time-speedup.patch:
    
       1:     transactions:                        4281   (428.09 per sec.)
       2:     transactions:                        8910   (890.85 per sec.)
       3:     transactions:                        8659   (865.79 per sec.)
       4:     transactions:                        8676   (867.34 per sec.)
       5:     transactions:                        8532   (852.91 per sec.)
    
    and by 4-5% on an Intel dual-core system too:
    
    2.6.23:
    
      1:     transactions:                        4560   (455.94 per sec.)
      2:     transactions:                        10094  (1009.30 per sec.)
      3:     transactions:                        9755   (975.36 per sec.)
      4:     transactions:                        9859   (985.78 per sec.)
      5:     transactions:                        9701   (969.72 per sec.)
    
    2.6.23 + sys_time-speedup.patch:
    
      1:     transactions:                        4779   (477.84 per sec.)
      2:     transactions:                        10103  (1010.14 per sec.)
      3:     transactions:                        10141  (1013.93 per sec.)
      4:     transactions:                        10371  (1036.89 per sec.)
      5:     transactions:                        10178  (1017.50 per sec.)
    
    (the more CPUs the system has, the more speedup this patch gives for
    this particular workload.)
    Signed-off-by: NIngo Molnar <mingo@elte.hu>
    Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    f20bf612
timekeeping.c 13.6 KB