Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1406739 > unrolled thread
| Started by | Pan Xinhui <xinhui.pan@linux.vnet.ibm.com> |
|---|---|
| First post | 2016-05-25 10:30 +0200 |
| Last post | 2016-05-27 13:00 +0200 |
| Articles | 4 — 3 participants |
Back to article view | Back to linux.kernel
[PATCH v3 0/6] powerpc use pv-qpsinlock as the default spinlock implemention Pan Xinhui <xinhui.pan@linux.vnet.ibm.com> - 2016-05-25 10:30 +0200
Re: [PATCH v3 0/6] powerpc use pv-qpsinlock as the default spinlock implemention Peter Zijlstra <peterz@infradead.org> - 2016-05-26 19:00 +0200
Re: [PATCH v3 0/6] powerpc use pv-qpsinlock as the default spinlock implemention Peter Zijlstra <peterz@infradead.org> - 2016-05-26 19:00 +0200
Re: [PATCH v3 0/6] powerpc use pv-qpsinlock as the default spinlock implemention xinhui <xinhui.pan@linux.vnet.ibm.com> - 2016-05-27 13:00 +0200
| From | Pan Xinhui <xinhui.pan@linux.vnet.ibm.com> |
|---|---|
| Date | 2016-05-25 10:30 +0200 |
| Subject | [PATCH v3 0/6] powerpc use pv-qpsinlock as the default spinlock implemention |
| Message-ID | <rCCmt-79l-5@gated-at.bofh.it> |
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
[toc] | [next] | [standalone]
| From | Peter Zijlstra <peterz@infradead.org> |
|---|---|
| Date | 2016-05-26 19:00 +0200 |
| Subject | Re: [PATCH v3 0/6] powerpc use pv-qpsinlock as the default spinlock implemention |
| Message-ID | <rD6Nz-p8-17@gated-at.bofh.it> |
| In reply to | #1406739 |
On Wed, May 25, 2016 at 04:18:03PM +0800, Pan Xinhui wrote: > I do several tests on pseries IBM,8408-E8E with 32cpus, 64GB memory. > benchmark test results are below. > _____test________________spinlcok______________pv-qspinlcok_____ > | compiling takes| 22m | 22m | How can a kernel build take 22 minutes with 32 CPUs? That's far too long. My 40 CPU IVB-EP takes all of 50 seconds to build an x86_64-defconfig from scratch.
[toc] | [prev] | [next] | [standalone]
| From | Peter Zijlstra <peterz@infradead.org> |
|---|---|
| Date | 2016-05-26 19:00 +0200 |
| Subject | Re: [PATCH v3 0/6] powerpc use pv-qpsinlock as the default spinlock implemention |
| Message-ID | <rD6NA-p8-25@gated-at.bofh.it> |
| In reply to | #1406739 |
On Wed, May 25, 2016 at 04:18:03PM +0800, Pan Xinhui wrote: > _____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 | s/spinlcok/spinlock/ Is 'spinlcok' the current test-and-set lock? And what about regular qspinlock, in case of !SHARED_PROCESSOR?
[toc] | [prev] | [next] | [standalone]
| From | xinhui <xinhui.pan@linux.vnet.ibm.com> |
|---|---|
| Date | 2016-05-27 13:00 +0200 |
| Subject | Re: [PATCH v3 0/6] powerpc use pv-qpsinlock as the default spinlock implemention |
| Message-ID | <rDnEJ-2mG-1@gated-at.bofh.it> |
| In reply to | #1407640 |
On 2016年05月27日 00:50, Peter Zijlstra wrote: > On Wed, May 25, 2016 at 04:18:03PM +0800, Pan Xinhui wrote: > >> _____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 | > > > s/spinlcok/spinlock/ > Oh, foolish mistake...sorry > Is 'spinlcok' the current test-and-set lock? > Yes. I will describe it in a clear way in the next patchset. > And what about regular qspinlock, in case of !SHARED_PROCESSOR? > You mean the test results on powerNV? yes, I make a kernel build with !SHARED_PROCESSOR. and do perf tests and scheduler tests on same machine(32 cpus). performance is better than current spinlock _____test________________spinlock________________qspinlock_____ |futex hash | 533060 ops | 541513 ops | |futex lock-pi | 357 ops | 356 ops | _____test________________spinlock________________qspinlock_____ |schedule() loops| 337691713 | 361935207 | NOTE: I have updated the scheduler test tools, and the new performance test results show that both pv-spinlock and qspinlock is better than current spinlock. I will also update the test result in my next patchset. thanks xinhui
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web