From: scameron@beardog.cce.hp.com
To: Bart Van Assche <bvanassche@acm.org>
Cc: linux-scsi@vger.kernel.org, stephenmcameron@gmail.com,
dab@hp.com, scameron@beardog.cce.hp.com
Subject: Re: SCSI mid layer and high IOPS capable devices
Date: Thu, 13 Dec 2012 12:03:52 -0600 [thread overview]
Message-ID: <20121213180352.GJ20898@beardog.cce.hp.com> (raw)
In-Reply-To: <50C9BEAB.6010702@acm.org>
On Thu, Dec 13, 2012 at 12:40:27PM +0100, Bart Van Assche wrote:
> On 12/11/12 23:46, scameron@beardog.cce.hp.com wrote:
> >I would be curious to see what kind of results you would get with
> >scsi_debug
> >with fake_rw=1. I am sort of suspecting that trying to put an "upper
> >limit"
> >on scsi LLD IOPS performance by seeing what scsi_debug will do with
> >fake_rw=1
> >is not really valid (or, maybe I'm doing it wrong) as I know of one case in
> >which a real HW scsi driver beats scsi_debug fake_rw=1 at IOPS on the very
> >same system, which seems like it shouldn't be possible. Kind of
> >mysterious.
>
> The test
>
> # disable-frequency-scaling
> # modprobe scsi_debug delay=0 fake_rw=1
> # echo 2 > /sys/block/sdc/queue/rq_affinity
> # echo noop > /sys/block/sdc/queue/scheduler
> # echo 0 > /sys/block/sdc/queue/add_random
>
> results in about 800K IOPS for random reads on the same setup (with a
> request size of 4 KB; CPU: quad core i5-2400).
>
> Repeating the same test with fake_rw=0 results in about 651K IOPS.
What are your system specs?
Here's what I'm seeing.
I have one 6-core processor.
[root@localhost scameron]# grep 'model name' /proc/cpuinfo
model name : Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz
model name : Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz
model name : Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz
model name : Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz
model name : Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz
model name : Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz
hyperthreading is disabled.
Here is the script I'm running.
[root@localhost scameron]# cat do-dds
#!/bin/sh
do_dd()
{
device="$1"
cpu="$2"
taskset -c "$cpu" dd if="$device" of=/dev/null bs=4k iflag=direct
}
do_six()
{
for x in `seq 0 5`
do
do_dd "$1" $x &
done
}
do_120()
{
for z in `seq 1 20`
do
do_six "$1"
done
wait
}
time do_120 "$1"
I don't have "disable-frequency-scaling" on rhel6, but I think if I send
SIGUSR1 to all the cpuspeed processes, this does the same thing.
ps aux | grep cpuspeed | grep -v grep | awk '{ printf("kill -USR1 %s\n", $2);}' | sh
[root@localhost scameron]# find /sys -name 'scaling_cur_freq' -print | xargs cat
2000000
2000000
2000000
2000000
2000000
2000000
[root@localhost scameron]#
Now, using scsi-debug (300mb size) with delay=0 and fake_rw=1, with
rq_affinity set to 2, and add_random set to 0 and noop i/o scheduler
I get ~216k iops.
With my scsi lld (actually doing the i/o) , I now get ~190k iops.
rq_affinity set to 2, add_random 0, noop i/o scheduler, irqs
manually spread across cpus (irqbalance turned off).
With my block lld (actually doing the i/o), I get ~380k iops.
rq_affinity set to 2, add_random 0, i/o scheduler "none"
(there is no i/o scheduler with the make_request interface),
irqs manually spread across cpus (irqbalance turned off).
So the block driver seems to beat the snot out of the scsi lld
by a factor of 2x now, rather than 3x, so I guess that's some
improvement, but still.
-- steve
next prev parent reply other threads:[~2012-12-13 17:03 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-11 0:00 SCSI mid layer and high IOPS capable devices scameron
2012-12-11 8:21 ` Bart Van Assche
2012-12-11 22:46 ` scameron
2012-12-13 11:40 ` Bart Van Assche
2012-12-13 18:03 ` scameron [this message]
2012-12-13 17:18 ` Bart Van Assche
2012-12-13 15:22 ` Bart Van Assche
2012-12-13 17:25 ` scameron
2012-12-13 16:47 ` Bart Van Assche
2012-12-13 16:49 ` Christoph Hellwig
2012-12-14 9:44 ` Bart Van Assche
2012-12-14 16:44 ` scameron
2012-12-14 16:15 ` Bart Van Assche
2012-12-14 19:55 ` scameron
2012-12-14 19:28 ` Bart Van Assche
2012-12-14 21:06 ` scameron
2012-12-15 9:40 ` Bart Van Assche
2012-12-19 14:23 ` Christoph Hellwig
2012-12-13 21:20 ` scameron
2012-12-14 0:22 ` Jack Wang
[not found] ` <CADzpL0TMT31yka98Zv0=53N4=pDZOc9+gacnvDWMbj+iZg4H5w@mail.gmail.com>
[not found] ` <006301cdd99c$35099b40$9f1cd1c0$@com>
[not found] ` <CADzpL0S5cfCRQftrxHij8KOjKj55psSJedmXLBQz1uQm_SC30A@mail.gmail.com>
2012-12-14 4:59 ` Jack Wang
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=20121213180352.GJ20898@beardog.cce.hp.com \
--to=scameron@beardog.cce.hp.com \
--cc=bvanassche@acm.org \
--cc=dab@hp.com \
--cc=linux-scsi@vger.kernel.org \
--cc=stephenmcameron@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.