All of lore.kernel.org
 help / color / mirror / Atom feed
From: Minchan Kim <minchan@kernel.org>
To: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
Cc: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	linux-kernel@vger.kernel.org
Subject: Re: zram: per-cpu compression streams
Date: Mon, 28 Mar 2016 12:21:35 +0900	[thread overview]
Message-ID: <20160328032135.GA31023@bbox> (raw)
In-Reply-To: <20160325014706.GA650@swordfish>

Hi Sergey,

On Fri, Mar 25, 2016 at 10:47:06AM +0900, Sergey Senozhatsky wrote:
> Hello Minchan,
> 
> On (03/25/16 08:41), Minchan Kim wrote:
> [..]
> > >  Test #10 iozone -t 10 -R -r 80K -s 0M -I +Z
> > >    Initial write        3213973.56      2731512.62      4416466.25*
> > >          Rewrite        3066956.44*     2693819.50       332671.94
> > >             Read        7769523.25*     2681473.75       462840.44
> > >          Re-read        5244861.75      5473037.00*      382183.03
> > >     Reverse Read        7479397.25*     4869597.75       374714.06
> > >      Stride read        5403282.50*     5385083.75       382473.44
> > >      Random read        5131997.25      5176799.75*      380593.56
> > >   Mixed workload        3998043.25      4219049.00*     1645850.45
> > >     Random write        3452832.88      3290861.69      3588531.75*
> > >           Pwrite        3757435.81      2711756.47      4561807.88*
> > >            Pread        2743595.25*     2635835.00       412947.98
> > >           Fwrite       16076549.00     16741977.25*    14797209.38
> > >            Fread       23581812.62*    21664184.25      5064296.97
> > >  =          real         0m44.490s       0m44.444s       0m44.609s
> > >  =          user          0m0.054s        0m0.049s        0m0.055s
> > >  =           sys          0m0.037s        0m0.046s        0m0.148s
> > >  
> > >  
> > >  so when the number of active tasks become larger than the number
> > >  of online CPUS, iozone reports a bit hard to understand data. I
> > >  can assume that since now we keep the preemption disabled longer
> > >  in write path, a concurrent operation (READ or WRITE) cannot preempt
> > >  current anymore... slightly suspicious.
> > >  
> > >  the other hard to understand thing is why do READ-only tests have
> > >  such a huge jitter. READ-only tests don't depend on streams, they
> > >  don't even use them, we supply compressed data directly to
> > >  decompression api.
> > >  
> > >  may be better retire iozone and never use it again.
> > >  
> > >  
> > >  "118 insertions(+), 238 deletions(-)" the patches remove a big
> > >  pile of code.
> > 
> > First of all, I appreciate you very much!
> 
> thanks!
> 
> > At a glance, on write workload, huge win but worth to investigate
> > how such fluctuation/regression happens on read-related test
> > (read and mixed workload).
> 
> yes, was going to investigate in more details but got interrupted,
> will return back to it today/tomorrow.
> 
> > Could you send your patchset? I will test it.
> 
> oh, sorry, sure! attached (because it's not a real patch submission
> yet, but they look more or less ready I guess).
> 
> patches are against next-20160324.

Thanks, I tested your patch with fio.
My laptop is 8G ram, 4 CPU.
job file is here.

= 
[global]
bs=4k
ioengine=sync
direct=1
size=100m
numjobs=${NUMJOBS}
group_reporting
buffer_compress_percentage=50
filename=/dev/zram0
loops=10

[seq-read]
rw=read
stonewall

[rand-read]
rw=randread
stonewall

[seq-write]
rw=write
stonewall

[rand-write]
rw=randwrite
stonewall

[mixed-seq]
rw=rw
stonewall

[mixed-rand]
rw=randrw
stonewall
=

= old(ie, spinlock) version =

1) NR_PROCESS:8 NR_STREAM: 1

seq-read: (groupid=0, jobs=8): err= 0: pid=23148: Mon Mar 28 12:07:15 2016
  read : io=8000.0MB, bw=5925.1MB/s, iops=1517.4K, runt=  1350msec
rand-read: (groupid=1, jobs=8): err= 0: pid=23156: Mon Mar 28 12:07:15 2016
  read : io=8000.0MB, bw=4889.1MB/s, iops=1251.9K, runt=  1636msec
seq-write: (groupid=2, jobs=8): err= 0: pid=23164: Mon Mar 28 12:07:15 2016
  write: io=8000.0MB, bw=914898KB/s, iops=228724, runt=  8954msec
rand-write: (groupid=3, jobs=8): err= 0: pid=23172: Mon Mar 28 12:07:15 2016
  write: io=8000.0MB, bw=913368KB/s, iops=228342, runt=  8969msec
mixed-seq: (groupid=4, jobs=8): err= 0: pid=23180: Mon Mar 28 12:07:15 2016
  read : io=4003.1MB, bw=881152KB/s, iops=220287, runt=  4653msec
mixed-rand: (groupid=5, jobs=8): err= 0: pid=23189: Mon Mar 28 12:07:15 2016
  read : io=4003.5MB, bw=837491KB/s, iops=209372, runt=  4895msec


2) NR_PROCESS:8 NR_STREAM: 8

seq-read: (groupid=0, jobs=8): err= 0: pid=23248: Mon Mar 28 12:07:57 2016
  read : io=8000.0MB, bw=5847.1MB/s, iops=1497.8K, runt=  1368msec
rand-read: (groupid=1, jobs=8): err= 0: pid=23256: Mon Mar 28 12:07:57 2016
  read : io=8000.0MB, bw=4778.1MB/s, iops=1223.5K, runt=  1674msec
seq-write: (groupid=2, jobs=8): err= 0: pid=23264: Mon Mar 28 12:07:57 2016
  write: io=8000.0MB, bw=1644.7MB/s, iops=420879, runt=  4866msec
rand-write: (groupid=3, jobs=8): err= 0: pid=23272: Mon Mar 28 12:07:57 2016
  write: io=8000.0MB, bw=1507.5MB/s, iops=385905, runt=  5307msec
mixed-seq: (groupid=4, jobs=8): err= 0: pid=23280: Mon Mar 28 12:07:57 2016
  read : io=4003.1MB, bw=1225.1MB/s, iops=313839, runt=  3266msec
mixed-rand: (groupid=5, jobs=8): err= 0: pid=23288: Mon Mar 28 12:07:57 2016
  read : io=4003.5MB, bw=1098.4MB/s, iops=281097, runt=  3646msec


3) NR_PROCESS:8 NR_STREAM: 16

seq-read: (groupid=0, jobs=8): err= 0: pid=23350: Mon Mar 28 12:08:38 2016
  read : io=8000.0MB, bw=5843.7MB/s, iops=1495.1K, runt=  1369msec
rand-read: (groupid=1, jobs=8): err= 0: pid=23358: Mon Mar 28 12:08:38 2016
  read : io=8000.0MB, bw=4810.6MB/s, iops=1231.6K, runt=  1663msec
seq-write: (groupid=2, jobs=8): err= 0: pid=23366: Mon Mar 28 12:08:38 2016
  write: io=8000.0MB, bw=1655.7MB/s, iops=423841, runt=  4832msec
rand-write: (groupid=3, jobs=8): err= 0: pid=23374: Mon Mar 28 12:08:38 2016
  write: io=8000.0MB, bw=1501.6MB/s, iops=384384, runt=  5328msec
mixed-seq: (groupid=4, jobs=8): err= 0: pid=23382: Mon Mar 28 12:08:38 2016
  read : io=4003.1MB, bw=1221.9MB/s, iops=312786, runt=  3277msec
mixed-rand: (groupid=5, jobs=8): err= 0: pid=23390: Mon Mar 28 12:08:38 2016
  read : io=4003.5MB, bw=1104.1MB/s, iops=282647, runt=  3626msec

= percpu =

1) NR_PROCESS:8

seq-read: (groupid=0, jobs=8): err= 0: pid=22804: Mon Mar 28 11:58:22 2016
  read : io=8000.0MB, bw=5610.1MB/s, iops=1436.2K, runt=  1426msec
rand-read: (groupid=1, jobs=8): err= 0: pid=22812: Mon Mar 28 11:58:22 2016
  read : io=8000.0MB, bw=4881.3MB/s, iops=1249.6K, runt=  1639msec
seq-write: (groupid=2, jobs=8): err= 0: pid=22820: Mon Mar 28 11:58:22 2016
  write: io=8000.0MB, bw=1814.6MB/s, iops=464399, runt=  4410msec
rand-write: (groupid=3, jobs=8): err= 0: pid=22829: Mon Mar 28 11:58:22 2016
  write: io=8000.0MB, bw=1647.9MB/s, iops=421833, runt=  4855msec
mixed-seq: (groupid=4, jobs=8): err= 0: pid=22837: Mon Mar 28 11:58:22 2016
  read : io=4003.1MB, bw=1275.2MB/s, iops=326433, runt=  3140msec
mixed-rand: (groupid=5, jobs=8): err= 0: pid=22846: Mon Mar 28 11:58:22 2016
  read : io=4003.5MB, bw=1119.3MB/s, iops=286519, runt=  3577msec

In my test, read is stable. It seems iozone or fs made noise in your test.
Benefit cause by per-cpu on write side is about 10% which is not huge
compared to your previous post.
Hmm, Could you retest to who how the benefit is big?

  reply	other threads:[~2016-03-28  3:20 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-23  8:12 zram: per-cpu compression streams Sergey Senozhatsky
2016-03-24 23:41 ` Minchan Kim
2016-03-25  1:47   ` Sergey Senozhatsky
2016-03-28  3:21     ` Minchan Kim [this message]
2016-03-30  8:34       ` Sergey Senozhatsky
2016-03-30 22:12         ` Minchan Kim
2016-03-31  1:26           ` Sergey Senozhatsky
2016-03-31  5:53             ` Minchan Kim
2016-03-31  6:34               ` Sergey Senozhatsky
2016-04-01 15:38                 ` Sergey Senozhatsky
2016-04-04  0:27                   ` Minchan Kim
2016-04-04  1:17                     ` Sergey Senozhatsky
2016-04-18  7:57                       ` Sergey Senozhatsky
2016-04-19  8:00                         ` Minchan Kim
2016-04-19  8:08                           ` Sergey Senozhatsky
2016-04-26 11:23                           ` Sergey Senozhatsky
2016-04-27  7:29                             ` Minchan Kim
2016-04-27  7:43                               ` Sergey Senozhatsky
2016-04-27  7:55                                 ` Minchan Kim
2016-04-27  8:10                                   ` Sergey Senozhatsky
2016-04-27  8:54                               ` Sergey Senozhatsky
2016-04-27  9:01                                 ` Sergey Senozhatsky

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160328032135.GA31023@bbox \
    --to=minchan@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sergey.senozhatsky.work@gmail.com \
    --cc=sergey.senozhatsky@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.