From: Yong Zhang Date: Wed, 9 Nov 2011 08:07:14 +0000 (+0800) Subject: lockdep: Always try to set ->class_cache in register_lock_class() lockdep_init_map() X-Git-Tag: v3.3-rc1~196^2~9 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=87cdee71166fa107c5dc8e43060eeefa533c6a3b;p=pandora-kernel.git lockdep: Always try to set ->class_cache in register_lock_class() lockdep_init_map() Commit ["62016250 lockdep: Add improved subclass caching"] tries to improve performance (expecially to reduce the cost of rq->lock) when using lockdep, but it fails due to lockdep_init_map() in which ->class_cache is cleared. The typical caller is lock_set_subclass(), after that class will not be cached anymore. This patch tries to achive the goal of commit 62016250 by always setting ->class_cache in register_lock_class(). === Score comparison of benchmarks === for i in `seq 1 10`; do ./perf bench -f simple sched messaging; done before: min: 0.604, max: 0.660, avg: 0.622 after: min: 0.414, max: 0.473, avg: 0.427 for i in `seq 1 10`; do ./perf bench -f simple sched messaging -g 40; done before: min: 2.347, max: 2.421, avg: 2.391 after: min: 1.652, max: 1.699, avg: 1.671 Signed-off-by: Yong Zhang Cc: Hitoshi Mitake Signed-off-by: Peter Zijlstra Link: http://lkml.kernel.org/r/20111109080714.GC8124@zhy Signed-off-by: Ingo Molnar --- Reading git-diff-tree failed