Davidlohr Bueso
d269a8b8c5
kernel/locking: Compute 'current' directly
This patch effectively replaces the tsk pointer dereference
(which is obviously == current), to directly use get_current()
macro. This is to make the removal of setting foreign task
states smoother and painfully obvious. Performance win on some
archs such as x86-64 and ppc64. On a microbenchmark that calls
set_task_state() vs set_current_state() and an inode rwsem
pounding benchmark doing unlink:
== 1. x86-64 ==
Avg runtime set_task_state(): 601 msecs
Avg runtime set_current_state(): 552 msecs
vanilla dirty
Hmean unlink1-processes-2 36089.26 ( 0.00%) 38977.33 ( 8.00%)
Hmean unlink1-processes-5 28555.01 ( 0.00%) 29832.55 ( 4.28%)
Hmean unlink1-processes-8 37323.75 ( 0.00%) 44974.57 ( 20.50%)
Hmean unlink1-processes-12 43571.88 ( 0.00%) 44283.01 ( 1.63%)
Hmean unlink1-processes-21 34431.52 ( 0.00%) 38284.45 ( 11.19%)
Hmean unlink1-processes-30 34813.26 ( 0.00%) 37975.17 ( 9.08%)
Hmean unlink1-processes-48 37048.90 ( 0.00%) 39862.78 ( 7.59%)
Hmean unlink1-processes-79 35630.01 ( 0.00%) 36855.30 ( 3.44%)
Hmean unlink1-processes-110 36115.85 ( 0.00%) 39843.91 ( 10.32%)
Hmean unlink1-processes-141 32546.96 ( 0.00%) 35418.52 ( 8.82%)
Hmean unlink1-processes-172 34674.79 ( 0.00%) 36899.21 ( 6.42%)
Hmean unlink1-processes-203 37303.11 ( 0.00%) 36393.04 ( -2.44%)
Hmean unlink1-processes-224 35712.13 ( 0.00%) 36685.96 ( 2.73%)
== 2. ppc64le ==
Avg runtime set_task_state(): 938 msecs
Avg runtime set_current_state: 940 msecs
vanilla dirty
Hmean unlink1-processes-2 19269.19 ( 0.00%) 30704.50 ( 59.35%)
Hmean unlink1-processes-5 20106.15 ( 0.00%) 21804.15 ( 8.45%)
Hmean unlink1-processes-8 17496.97 ( 0.00%) 17243.28 ( -1.45%)
Hmean unlink1-processes-12 14224.15 ( 0.00%) 17240.21 ( 21.20%)
Hmean unlink1-processes-21 14155.66 ( 0.00%) 15681.23 ( 10.78%)
Hmean unlink1-processes-30 14450.70 ( 0.00%) 15995.83 ( 10.69%)
Hmean unlink1-processes-48 16945.57 ( 0.00%) 16370.42 ( -3.39%)
Hmean unlink1-processes-79 15788.39 ( 0.00%) 14639.27 ( -7.28%)
Hmean unlink1-processes-110 14268.48 ( 0.00%) 14377.40 ( 0.76%)
Hmean unlink1-processes-141 14023.65 ( 0.00%) 16271.69 ( 16.03%)
Hmean unlink1-processes-172 13417.62 ( 0.00%) 16067.55 ( 19.75%)
Hmean unlink1-processes-203 15293.08 ( 0.00%) 15440.40 ( 0.96%)
Hmean unlink1-processes-234 13719.32 ( 0.00%) 16190.74 ( 18.01%)
Hmean unlink1-processes-265 16400.97 ( 0.00%) 16115.22 ( -1.74%)
Hmean unlink1-processes-296 14388.60 ( 0.00%) 16216.13 ( 12.70%)
Hmean unlink1-processes-320 15771.85 ( 0.00%) 15905.96 ( 0.85%)
Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: dave@stgolabs.net
Cc: mark.rutland@arm.com
Link: http://lkml.kernel.org/r/1483479794-14013-4-git-send-email-dave@stgolabs.net
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2017-01-14 11:14:14 +01:00
..
2017-01-10 18:31:54 -08:00
2016-10-11 15:06:32 -07:00
2016-12-14 16:04:08 -08:00
2016-12-23 16:49:12 -08:00
2016-12-15 12:32:35 +01:00
2016-08-26 14:42:08 +02:00
2017-01-14 11:14:14 +01:00
2016-12-24 11:46:01 -08:00
2016-12-24 11:46:01 -08:00
2016-11-14 10:46:31 -08:00
2016-12-25 17:21:22 +01:00
2016-12-25 17:21:22 +01:00
2016-12-25 11:04:12 +01:00
2016-12-17 18:44:00 -08:00
2017-01-05 23:06:06 -08:00
2016-12-17 18:44:00 -08:00
2016-12-17 18:44:00 -08:00
2016-12-05 19:00:38 -05:00
2016-11-29 15:10:12 -05:00
2016-12-14 14:06:40 -08:00
2016-12-24 11:46:01 -08:00
2016-11-25 16:25:52 -05:00
2016-12-24 11:46:01 -08:00
2016-12-24 11:46:01 -08:00
2016-12-26 17:30:24 -08:00
2016-12-24 11:46:01 -08:00
2017-01-14 11:14:11 +01:00
2016-12-24 11:46:01 -08:00
2016-12-24 11:46:01 -08:00
2016-07-28 16:07:41 -07:00
2016-12-24 11:46:01 -08:00
2016-12-25 17:21:22 +01:00
2016-12-24 11:46:01 -08:00
2016-12-12 18:55:09 -08:00
2016-08-05 09:00:54 -04:00
2016-10-25 11:31:51 +02:00
2016-12-20 09:48:47 -08:00
2016-12-14 16:04:07 -08:00
2016-12-20 09:48:44 -08:00
2016-11-30 23:14:57 +11:00
2016-08-02 19:35:27 -04:00
2016-12-24 11:46:01 -08:00
2016-12-24 11:46:01 -08:00
2016-08-02 19:35:30 -04:00
2016-12-12 18:55:06 -08:00
2016-12-14 17:25:18 -08:00
2017-01-10 18:31:54 -08:00
2016-12-24 11:46:01 -08:00
2016-10-25 11:08:10 +08:00
2016-11-26 11:18:01 -08:00
2016-09-22 20:00:36 -05:00
2016-12-24 11:46:01 -08:00
2016-11-22 12:57:38 -06:00
2016-12-14 16:04:08 -08:00
2016-12-14 13:57:44 -08:00
2017-01-10 18:31:55 -08:00
2016-10-26 12:02:35 +02:00
2016-10-11 15:06:33 -07:00
2016-10-21 15:45:47 -06:00
2016-11-16 10:15:09 +01:00
2016-12-22 22:58:37 -05:00
2016-12-24 11:46:01 -08:00
2016-12-14 16:04:07 -08:00
2016-12-24 11:46:01 -08:00
2016-08-02 19:35:02 -04:00
2016-11-15 10:54:36 -05:00
2016-08-22 10:01:49 -07:00
2016-12-09 09:13:30 -05:00
2016-08-31 07:28:35 -05:00
2016-12-24 11:46:01 -08:00
2016-09-05 13:52:39 +02:00
2016-09-22 20:00:36 -05:00
2016-09-22 20:00:36 -05:00
2016-12-14 16:04:08 -08:00
2016-12-14 16:04:08 -08:00
2016-10-19 12:12:40 -04:00