Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f20bf6125605acbbc7eb8c9420d7221c91aa83eb
Commit:     f20bf6125605acbbc7eb8c9420d7221c91aa83eb
Parent:     8636225e8d23e6079d43f56faf415bd71b589dc0
Author:     Ingo Molnar <[EMAIL PROTECTED]>
AuthorDate: Tue Oct 16 16:09:20 2007 +0200
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Tue Oct 16 10:01:50 2007 -0700

    time: introduce xtime_seconds
    
    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: Ingo Molnar <[EMAIL PROTECTED]>
    Signed-off-by: Thomas Gleixner <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
---
 kernel/time.c             |    6 +-----
 kernel/time/timekeeping.c |    7 -------
 2 files changed, 1 insertions(+), 12 deletions(-)

diff --git a/kernel/time.c b/kernel/time.c
index 2289a8d..1afcc78 100644
--- a/kernel/time.c
+++ b/kernel/time.c
@@ -57,11 +57,7 @@ EXPORT_SYMBOL(sys_tz);
  */
 asmlinkage long sys_time(time_t __user * tloc)
 {
-       time_t i;
-       struct timespec tv;
-
-       getnstimeofday(&tv);
-       i = tv.tv_sec;
+       time_t i = get_seconds();
 
        if (tloc) {
                if (put_user(i,tloc))
diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
index 4ad79f6..7e8983a 100644
--- a/kernel/time/timekeeping.c
+++ b/kernel/time/timekeeping.c
@@ -49,19 +49,12 @@ struct timespec wall_to_monotonic __attribute__ ((aligned 
(16)));
 static unsigned long total_sleep_time;         /* seconds */
 EXPORT_SYMBOL(xtime);
 
-
-#ifdef CONFIG_NO_HZ
 static struct timespec xtime_cache __attribute__ ((aligned (16)));
 static inline void update_xtime_cache(u64 nsec)
 {
        xtime_cache = xtime;
        timespec_add_ns(&xtime_cache, nsec);
 }
-#else
-#define xtime_cache xtime
-/* We do *not* want to evaluate the argument for this case */
-#define update_xtime_cache(n) do { } while (0)
-#endif
 
 static struct clocksource *clock; /* pointer to current clocksource */
 
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to