[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1464164289-6124-1-git-send-email-xinhui.pan@linux.vnet.ibm.com>
Date: Wed, 25 May 2016 16:18:03 +0800
From: Pan Xinhui <xinhui.pan@...ux.vnet.ibm.com>
To: linux-kernel@...r.kernel.org, linuxppc-dev@...ts.ozlabs.org,
virtualization@...ts.linux-foundation.org
Cc: benh@...nel.crashing.org, paulus@...ba.org, mpe@...erman.id.au,
peterz@...radead.org, mingo@...hat.com, paulmck@...ux.vnet.ibm.com,
jeremy@...p.org, chrisw@...s-sol.org, akataria@...are.com,
rusty@...tcorp.com.au, Pan Xinhui <xinhui.pan@...ux.vnet.ibm.com>
Subject: [PATCH v3 0/6] powerpc use pv-qpsinlock as the default spinlock implemention
change from v2:
__spin_yeild_cpu() will yield slices to lpar if target cpu is running.
remove unnecessary rmb() in __spin_yield/wake_cpu.
__pv_wait() will check the *ptr == val.
some commit message change
change fome v1:
separate into 6 pathes from one patch
some minor code changes.
I do several tests on pseries IBM,8408-E8E with 32cpus, 64GB memory.
benchmark test results are below.
2 perf tests:
perf bench futex hash
perf bench futex lock-pi
_____test________________spinlcok______________pv-qspinlcok_____
|futex hash | 556370 ops | 629634 ops |
|futex lock-pi | 362 ops | 367 ops |
scheduler test:
Test how many loops of schedule() can finish within 10 seconds on all cpus.
_____test________________spinlcok______________pv-qspinlcok_____
|schedule() loops| 322811921 | 311449290 |
kernel compiling test:
build a linux kernel image to see how long it took
_____test________________spinlcok______________pv-qspinlcok_____
| compiling takes| 22m | 22m |
Pan Xinhui (6):
qspinlock: powerpc support qspinlock
powerpc: pseries/Kconfig: Add qspinlock build config
powerpc: lib/locks.c: Add cpu yield/wake helper function
pv-qspinlock: powerpc support pv-qspinlock
pv-qspinlock: use cmpxchg_release in __pv_queued_spin_unlock
powerpc: pseries: Add pv-qspinlock build config/make
arch/powerpc/include/asm/qspinlock.h | 39 +++++++++++++++++++
arch/powerpc/include/asm/qspinlock_paravirt.h | 38 ++++++++++++++++++
.../powerpc/include/asm/qspinlock_paravirt_types.h | 13 +++++++
arch/powerpc/include/asm/spinlock.h | 31 +++++++++------
arch/powerpc/include/asm/spinlock_types.h | 4 ++
arch/powerpc/kernel/Makefile | 1 +
arch/powerpc/kernel/paravirt.c | 45 ++++++++++++++++++++++
arch/powerpc/lib/locks.c | 37 ++++++++++++++++++
arch/powerpc/platforms/pseries/Kconfig | 9 +++++
arch/powerpc/platforms/pseries/setup.c | 5 +++
kernel/locking/qspinlock_paravirt.h | 2 +-
11 files changed, 211 insertions(+), 13 deletions(-)
create mode 100644 arch/powerpc/include/asm/qspinlock.h
create mode 100644 arch/powerpc/include/asm/qspinlock_paravirt.h
create mode 100644 arch/powerpc/include/asm/qspinlock_paravirt_types.h
create mode 100644 arch/powerpc/kernel/paravirt.c
--
1.9.1
Powered by blists - more mailing lists