From: "Alan D. Brunelle" <Alan.Brunelle@hp.com>
To: Jens Axboe <jens.axboe@oracle.com>
Cc: linux-kernel@vger.kernel.org, arjan@linux.intel.com, dgc@sgi.com,
npiggin@suse.de
Subject: Re: [PATCH 0/8] IO queuing and complete affinity
Date: Thu, 07 Feb 2008 10:16:38 -0500 [thread overview]
Message-ID: <47AB20D6.2000200@hp.com> (raw)
In-Reply-To: <1202375945-29525-1-git-send-email-jens.axboe@oracle.com>
Jens Axboe wrote:
> Hi,
>
> Since I'll be on vacation next week, I thought I'd send this out in
> case people wanted to play with it. It works here, but I haven't done
> any performance numbers at all.
>
> Patches 1-7 are all preparation patches for #8, which contains the
> real changes. I'm not particularly happy with the arch implementation
> for raising a softirq on another CPU, but it should be fast enough
> so suffice for testing.
>
> Anyway, this patchset is mainly meant as a playground for testing IO
> affinity. It allows you to set three values per queue, see the files
> in the /sys/block/<dev>/queue directory:
>
> completion_affinity
> Only allow completions to happen on the defined CPU mask.
> queue_affinity
> Only allow queuing to happen on the defined CPU mask.
> rq_affinity
> Always complete a request on the same CPU that queued it.
>
> As you can tell, there's some overlap to allow for experimentation.
> rq_affinity will override completion_affinity, so it's possible to
> have completions on a CPU that isn't set in that mask. The interface
> is currently limited to all CPUs or a specific CPU, but the implementation
> is supports (and works with) cpu masks. The logic is in
> blk_queue_set_cpumask(), it should be easy enough to change this to
> echo a full mask, or allow OR'ing of CPU masks when a new CPU is passed in.
> For now, echo a CPU number to set that CPU, or use -1 to set all CPUs.
> The default is all CPUs for no change in behaviour.
>
> Patch set is against current git as of this morning. The code is also in
> the block git repo, branch is io-cpu-affinity.
>
> git://git.kernel.dk/linux-2.6-block.git io-cpu-affinity
>
FYI: on a kernel with this patch set, running on a 4-way ia64 (non-NUMA) w/ a FC disk, I crafted a test with 135 combinations:
o Having the issuing application pegged on each CPU - or - left alone (run on any CPU), yields 5 possibilities
o Having the queue affinity on each CPU, or any (-1), yields 5 possibilities
o Having the completion affinity on each CPU, or any (-1), yields 5 possibilities
and
o Having the issuing application pegged on each CPU - or - left alone (run on ay CPU), yields 5 possibilities
o Having rq_affinity set to 0 or 1, yields 2 possibilities.
Each test was for 10 minutes, and ran overnight just fine. The difference amongst the 135 resulting values (based upon latency per-IO seen at the application layer) was <<1% (0.32% to be exact). This would seem to indicate that there isn't a penalty for running with this code, and it seems relatively stable given this.
The application used was doing 64KiB asynchronous direct reads, and had a minimum average per-IO latency of 42.426310 milliseconds, and average of 42.486557 milliseconds (std dev of 0.0041561), and a max of 42.561360 milliseconds
I'm going to do some runs on a 16-way NUMA box, w/ a lot of disks today, to see if we see gains in that environment.
Alan D. Brunelle
HP OSLO S&P
next prev parent reply other threads:[~2008-02-07 15:17 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-02-07 9:18 [PATCH 0/8] IO queuing and complete affinity Jens Axboe
2008-02-07 9:18 ` [PATCH 1/8] block: split softirq handling into blk-softirq.c Jens Axboe
2008-02-07 9:18 ` [PATCH 2/8] Add interface for queuing work on a specific CPU Jens Axboe
2008-02-07 9:45 ` Andrew Morton
2008-02-07 9:49 ` Jens Axboe
2008-02-07 17:44 ` Harvey Harrison
2008-02-11 10:51 ` Oleg Nesterov
2008-02-07 9:19 ` [PATCH 3/8] block: make kblockd_schedule_work() take the queue as parameter Jens Axboe
2008-02-07 9:19 ` [PATCH 4/8] x86: add support for remotely triggering the block softirq Jens Axboe
2008-02-07 10:07 ` Ingo Molnar
2008-02-07 10:17 ` Jens Axboe
2008-02-07 10:25 ` Ingo Molnar
2008-02-07 10:31 ` Jens Axboe
2008-02-07 10:38 ` Ingo Molnar
2008-02-07 14:18 ` Jens Axboe
2008-02-07 10:49 ` [patch] block layer: kmemcheck fixes Ingo Molnar
2008-02-07 17:42 ` Linus Torvalds
2008-02-07 17:55 ` Jens Axboe
2008-02-07 19:31 ` Ingo Molnar
2008-02-07 20:06 ` Jens Axboe
2008-02-08 1:22 ` David Miller
2008-02-08 1:28 ` Linus Torvalds
2008-02-08 15:09 ` Arjan van de Ven
2008-02-08 22:44 ` Nick Piggin
2008-02-08 22:56 ` Arjan van de Ven
2008-02-08 23:58 ` Nick Piggin
2008-02-08 11:38 ` Jens Axboe
2008-02-07 9:19 ` [PATCH 5/8] x86-64: add support for remotely triggering the block softirq Jens Axboe
2008-02-07 9:19 ` [PATCH 6/8] ia64: " Jens Axboe
2008-02-07 9:19 ` [PATCH 7/8] kernel: add generic softirq interface for triggering a remote softirq Jens Axboe
2008-02-07 9:19 ` [PATCH 8/8] block: add test code for testing CPU affinity Jens Axboe
2008-02-07 15:16 ` Alan D. Brunelle [this message]
2008-02-07 18:25 ` IO queuing and complete affinity with threads (was Re: [PATCH 0/8] IO queuing and complete affinity) Jens Axboe
2008-02-07 20:40 ` Alan D. Brunelle
2008-02-08 7:38 ` Nick Piggin
2008-02-08 7:47 ` Jens Axboe
2008-02-08 7:53 ` Nick Piggin
2008-02-08 7:59 ` Jens Axboe
2008-02-08 8:12 ` Nick Piggin
2008-02-08 8:24 ` Jens Axboe
2008-02-08 8:33 ` Nick Piggin
2008-02-11 5:22 ` David Chinner
2008-02-12 8:28 ` Jeremy Higdon
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=47AB20D6.2000200@hp.com \
--to=alan.brunelle@hp.com \
--cc=arjan@linux.intel.com \
--cc=dgc@sgi.com \
--cc=jens.axboe@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=npiggin@suse.de \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox