Minchan Kim
e46e33152e
zram: remove zram->lock in read path and change it with mutex
Finally, we separated zram->lock dependency from 32bit stat/ table
handling so there is no reason to use rw_semaphore between read and
write path so this patch removes the lock from read path totally and
changes rw_semaphore with mutex. So, we could do
old:
read-read: OK
read-write: NO
write-write: NO
Now:
read-read: OK
read-write: OK
write-write: NO
The below data proves mixed workload performs well 11 times and there is
also enhance on write-write path because current rw-semaphore doesn't
support SPIN_ON_OWNER. It's side effect but anyway good thing for us.
Write-related tests perform better (from 61% to 1058%) but read path has
good/bad(from -2.22% to 1.45%) but they are all marginal within stddev.
CPU 12
iozone -t -T -l 12 -u 12 -r 16K -s 60M -I +Z -V 0
==Initial write ==Initial write
records: 10 records: 10
avg: 516189.16 avg: 839907.96
std: 22486.53 (4.36%) std: 47902.17 (5.70%)
max: 546970.60 max: 909910.35
min: 481131.54 min: 751148.38
==Rewrite ==Rewrite
records: 10 records: 10
avg: 509527.98 avg: 1050156.37
std: 45799.94 (8.99%) std: 40695.44 (3.88%)
max: 611574.27 max: 1111929.26
min: 443679.95 min: 980409.62
==Read ==Read
records: 10 records: 10
avg: 4408624.17 avg: 4472546.76
std: 281152.61 (6.38%) std: 163662.78 (3.66%)
max: 4867888.66 max: 4727351.03
min: 4058347.69 min: 4126520.88
==Re-read ==Re-read
records: 10 records: 10
avg: 4462147.53 avg: 4363257.75
std: 283546.11 (6.35%) std: 247292.63 (5.67%)
max: 4912894.44 max: 4677241.75
min: 4131386.50 min: 4035235.84
==Reverse Read ==Reverse Read
records: 10 records: 10
avg: 4565865.97 avg: 4485818.08
std: 313395.63 (6.86%) std: 248470.10 (5.54%)
max: 5232749.16 max: 4789749.94
min: 4185809.62 min: 3963081.34
==Stride read ==Stride read
records: 10 records: 10
avg: 4515981.80 avg: 4418806.01
std: 211192.32 (4.68%) std: 212837.97 (4.82%)
max: 4889287.28 max: 4686967.22
min: 4210362.00 min: 4083041.84
==Random read ==Random read
records: 10 records: 10
avg: 4410525.23 avg: 4387093.18
std: 236693.22 (5.37%) std: 235285.23 (5.36%)
max: 4713698.47 max: 4669760.62
min: 4057163.62 min: 3952002.16
==Mixed workload ==Mixed workload
records: 10 records: 10
avg: 243234.25 avg: 2818677.27
std: 28505.07 (11.72%) std: 195569.70 (6.94%)
max: 288905.23 max: 3126478.11
min: 212473.16 min: 2484150.69
==Random write ==Random write
records: 10 records: 10
avg: 555887.07 avg: 1053057.79
std: 70841.98 (12.74%) std: 35195.36 (3.34%)
max: 683188.28 max: 1096125.73
min: 437299.57 min: 992481.93
==Pwrite ==Pwrite
records: 10 records: 10
avg: 501745.93 avg: 810363.09
std: 16373.54 (3.26%) std: 19245.01 (2.37%)
max: 518724.52 max: 833359.70
min: 464208.73 min: 765501.87
==Pread ==Pread
records: 10 records: 10
avg: 4539894.60 avg: 4457680.58
std: 197094.66 (4.34%) std: 188965.60 (4.24%)
max: 4877170.38 max: 4689905.53
min: 4226326.03 min: 4095739.72
Signed-off-by: Minchan Kim <minchan@kernel.org>
Cc: Nitin Gupta <ngupta@vflare.org>
Tested-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Cc: Jerome Marchand <jmarchan@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
2014-01-30 16:56:56 -08:00 |
| .. |
|
accessibility
|
|
|
|
acpi
|
ACPI and power management updates for 3.14-rc1
|
2014-01-24 15:51:02 -08:00 |
|
amba
|
|
|
|
ata
|
ACPI and power management updates for 3.14-rc1
|
2014-01-24 15:51:02 -08:00 |
|
atm
|
|
|
|
auxdisplay
|
|
|
|
base
|
regmap: Updates for v3.14
|
2014-01-25 13:18:00 -08:00 |
|
bcma
|
|
|
|
block
|
zram: remove zram->lock in read path and change it with mutex
|
2014-01-30 16:56:56 -08:00 |
|
bluetooth
|
|
|
|
bus
|
|
|
|
cdrom
|
Merge branch 'for-3.14/drivers' of git://git.kernel.dk/linux-block
|
2014-01-30 11:40:10 -08:00 |
|
char
|
ipmi: Add missing rv in ipmi_parisc_probe()
|
2014-01-30 10:02:54 -08:00 |
|
clk
|
The second half of the clock framework pull requeust for 3.14 is
|
2014-01-28 18:44:53 -08:00 |
|
clocksource
|
ARM: SoC DT updates for 3.14
|
2014-01-23 18:45:38 -08:00 |
|
connector
|
|
|
|
cpufreq
|
Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux
|
2014-01-24 17:13:49 -08:00 |
|
cpuidle
|
|
|
|
crypto
|
ARM: driver updates for 3.14
|
2014-01-23 18:49:36 -08:00 |
|
dca
|
|
|
|
devfreq
|
ARM: SoC cleanups for 3.14
|
2014-01-23 18:36:55 -08:00 |
|
dio
|
|
|
|
dma
|
Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma
|
2014-01-29 20:27:23 -08:00 |
|
edac
|
Merge branch 'x86-ras-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
|
2014-01-20 12:10:27 -08:00 |
|
eisa
|
|
|
|
extcon
|
|
|
|
firewire
|
|
|
|
firmware
|
firmware/google: drop 'select EFI' to avoid recursive dependency
|
2014-01-27 21:02:40 -08:00 |
|
fmc
|
|
|
|
gpio
|
ARM: driver updates for 3.14
|
2014-01-23 18:49:36 -08:00 |
|
gpu
|
Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux
|
2014-01-29 20:49:12 -08:00 |
|
hid
|
ACPI and power management updates for 3.14-rc1
|
2014-01-24 15:51:02 -08:00 |
|
hsi
|
|
|
|
hv
|
hyperv: Add support for physically discontinuous receive buffer
|
2014-01-27 16:40:45 -08:00 |
|
hwmon
|
Merge branch 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging
|
2014-01-29 18:56:27 -08:00 |
|
hwspinlock
|
|
|
|
i2c
|
Merge branch 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux
|
2014-01-29 19:56:20 -08:00 |
|
ide
|
drivers: ide: Include appropriate header file in ide-pio-blacklist.c
|
2014-01-28 23:35:09 -08:00 |
|
idle
|
ACPI and power management updates for 3.14-rc1
|
2014-01-24 15:51:02 -08:00 |
|
iio
|
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
|
2014-01-22 21:21:55 -08:00 |
|
infiniband
|
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
|
2014-01-25 11:17:34 -08:00 |
|
input
|
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
|
2014-01-24 17:17:30 -08:00 |
|
iommu
|
IOMMU Updates for Linux v3.14
|
2014-01-29 20:00:13 -08:00 |
|
ipack
|
|
|
|
irqchip
|
Xtensa patchset for 3.14-rc1
|
2014-01-25 10:49:30 -08:00 |
|
isdn
|
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
|
2014-01-25 11:17:34 -08:00 |
|
leds
|
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds
|
2014-01-28 18:53:01 -08:00 |
|
lguest
|
|
|
|
macintosh
|
Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc
|
2014-01-27 21:11:26 -08:00 |
|
mailbox
|
drivers/mailbox/omap: make mbox->irq signed for error handling
|
2014-01-23 16:36:53 -08:00 |
|
md
|
Merge branch 'for-3.14/drivers' of git://git.kernel.dk/linux-block
|
2014-01-30 11:40:10 -08:00 |
|
media
|
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
|
2014-01-25 11:17:34 -08:00 |
|
memory
|
|
|
|
memstick
|
drivers/memstick/host/rtsx_pci_ms.c: fix ms card data transfer bug
|
2014-01-23 16:37:04 -08:00 |
|
message
|
Merge branch 'for-3.14/core' of git://git.kernel.dk/linux-block
|
2014-01-30 11:19:05 -08:00 |
|
mfd
|
regulator: Updates for v3.14
|
2014-01-25 13:19:10 -08:00 |
|
misc
|
Merge branch 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging
|
2014-01-29 18:56:27 -08:00 |
|
mmc
|
MMC highlights for 3.14:
|
2014-01-26 11:00:41 -08:00 |
|
mtd
|
MTD updates for 3.14:
|
2014-01-28 18:56:37 -08:00 |
|
net
|
drivers/net/phy/mdio_bus.c: call put_device on device_register() failure
|
2014-01-30 16:56:54 -08:00 |
|
nfc
|
|
|
|
ntb
|
|
|
|
nubus
|
|
|
|
of
|
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
|
2014-01-25 11:17:34 -08:00 |
|
oprofile
|
|
|
|
parisc
|
|
|
|
parport
|
TTY/Serial driver patches for 3.14-rc1
|
2014-01-20 16:05:23 -08:00 |
|
pci
|
ACPI and power management updates for 3.14-rc1
|
2014-01-24 15:51:02 -08:00 |
|
pcmcia
|
PCI changes for the v3.14 merge window:
|
2014-01-22 16:39:28 -08:00 |
|
phy
|
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
|
2014-01-25 11:17:34 -08:00 |
|
pinctrl
|
ARM: SoC DT updates for 3.14
|
2014-01-23 18:45:38 -08:00 |
|
platform
|
platform/chrome: Cleanups and improvements
|
2014-01-29 20:06:01 -08:00 |
|
pnp
|
|
|
|
power
|
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
|
2014-01-25 11:17:34 -08:00 |
|
powercap
|
|
|
|
pps
|
|
|
|
ps3
|
|
|
|
ptp
|
|
|
|
pwm
|
pwm: Changes for v3.14-rc1
|
2014-01-27 08:15:51 -08:00 |
|
rapidio
|
|
|
|
regulator
|
regulator: Updates for v3.14
|
2014-01-25 13:19:10 -08:00 |
|
remoteproc
|
|
|
|
reset
|
|
|
|
rpmsg
|
|
|
|
rtc
|
Merge branch 'akpm' (incoming from Andrew)
|
2014-01-23 19:11:50 -08:00 |
|
s390
|
Merge branch 'for-3.14/core' of git://git.kernel.dk/linux-block
|
2014-01-30 11:19:05 -08:00 |
|
sbus
|
sparc: delete non-required instances of include <linux/init.h>
|
2014-01-28 23:38:23 -08:00 |
|
scsi
|
Merge branch 'for-3.14/core' of git://git.kernel.dk/linux-block
|
2014-01-30 11:19:05 -08:00 |
|
sfi
|
|
|
|
sh
|
|
|
|
sn
|
|
|
|
spi
|
spi: Updates for v3.14
|
2014-01-25 13:20:36 -08:00 |
|
ssb
|
|
|
|
staging
|
zram: promote zram from staging
|
2014-01-30 16:56:55 -08:00 |
|
target
|
|
|
|
tc
|
|
|
|
thermal
|
Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux
|
2014-01-24 17:13:49 -08:00 |
|
tty
|
Serial fixes for 3.14-rc1
|
2014-01-28 18:50:24 -08:00 |
|
uio
|
|
|
|
usb
|
ACPI and power management updates for 3.14-rc1
|
2014-01-24 15:51:02 -08:00 |
|
uwb
|
|
|
|
vfio
|
Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc
|
2014-01-27 21:11:26 -08:00 |
|
vhost
|
|
|
|
video
|
drivers/video/backlight/lcd.c: call put_device if device_register fails
|
2014-01-30 16:56:54 -08:00 |
|
virt
|
|
|
|
virtio
|
A few simple fixes. Quiet cycle.
|
2014-01-22 22:24:35 -08:00 |
|
vlynq
|
drivers/vlynq/vlynq.c: fix another resource size off by 1 error
|
2014-01-23 16:36:55 -08:00 |
|
vme
|
|
|
|
w1
|
drivers/w1/masters/w1-gpio.c: add strong pullup emulation
|
2014-01-23 16:37:04 -08:00 |
|
watchdog
|
watchdog: w83627hf_wdt: Reset watchdog trigger during initialization
|
2014-01-28 21:35:40 +01:00 |
|
xen
|
ACPI and power management updates for 3.14-rc1
|
2014-01-24 15:51:02 -08:00 |
|
zorro
|
|
|
|
Kconfig
|
|
|
|
Makefile
|
|
|