Files
linux/kernel
Martin Schwidefsky e66bb88311 nohz: Reuse ktime in sub-functions of tick_check_idle.
commit eed3b9cf3f upstream.

On a system with NOHZ=y tick_check_idle calls tick_nohz_stop_idle and
tick_nohz_update_jiffies. Given the right conditions (ts->idle_active
and/or ts->tick_stopped) both function get a time stamp with ktime_get.
The same time stamp can be reused if both function require one.

On s390 this change has the additional benefit that gcc inlines the
tick_nohz_stop_idle function into tick_check_idle. The number of
instructions to execute tick_check_idle drops from 225 to 144
(without the ktime_get optimization it is 367 vs 215 instructions).

before:

 0)               |  tick_check_idle() {
 0)               |    tick_nohz_stop_idle() {
 0)               |      ktime_get() {
 0)               |        read_tod_clock() {
 0)   0.601 us    |        }
 0)   1.765 us    |      }
 0)   3.047 us    |    }
 0)               |    ktime_get() {
 0)               |      read_tod_clock() {
 0)   0.570 us    |      }
 0)   1.727 us    |    }
 0)               |    tick_do_update_jiffies64() {
 0)   0.609 us    |    }
 0)   8.055 us    |  }

after:

 0)               |  tick_check_idle() {
 0)               |    ktime_get() {
 0)               |      read_tod_clock() {
 0)   0.617 us    |      }
 0)   1.773 us    |    }
 0)               |    tick_do_update_jiffies64() {
 0)   0.593 us    |    }
 0)   4.477 us    |  }

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: john stultz <johnstul@us.ibm.com>
LKML-Reference: <20090929122533.206589318@de.ibm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: John Jolly <jjolly@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2010-08-13 13:20:13 -07:00
..
2009-09-21 14:29:21 +02:00
2010-08-13 13:19:50 -07:00
2009-12-18 14:03:52 -08:00
2010-07-05 11:10:27 -07:00
2009-09-18 09:48:52 -07:00
2009-08-29 14:10:07 +02:00
2009-09-19 13:13:17 -07:00
2010-07-05 11:10:31 -07:00
2009-10-29 08:56:20 +10:30
2010-05-26 14:29:18 -07:00
2009-10-07 08:11:20 +02:00
2009-09-23 07:39:41 -07:00
2009-12-18 14:03:13 -08:00
2009-09-23 18:13:10 -07:00
2009-11-02 16:02:39 +01:00