From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758609AbYC0MC7 (ORCPT ); Thu, 27 Mar 2008 08:02:59 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1755721AbYC0MCu (ORCPT ); Thu, 27 Mar 2008 08:02:50 -0400 Received: from brick.kernel.dk ([87.55.233.238]:28462 "EHLO kernel.dk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754805AbYC0MCu (ORCPT ); Thu, 27 Mar 2008 08:02:50 -0400 Date: Thu, 27 Mar 2008 13:02:44 +0100 From: Jens Axboe To: Ingo Molnar Cc: linux-kernel@vger.kernel.org, npiggin@suse.de, paulus@samba.org, tglx@linutronix.de, mingo@redhat.com, tony.luck@intel.com, Alan.Brunelle@hp.com Subject: Re: [PATCH 0/5] Generic smp_call_function(), improvements, and smp_call_function_single() Message-ID: <20080327120244.GL12346@kernel.dk> References: <1205927772-31401-1-git-send-email-jens.axboe@oracle.com> <20080321095343.GA21409@elte.hu> <20080321131558.GA15355@kernel.dk> <20080327100802.GD15003@elte.hu> <20080327103707.GH12346@kernel.dk> <20080327104359.GC26725@elte.hu> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="xHFwDpU9dbj6ez1V" Content-Disposition: inline In-Reply-To: <20080327104359.GC26725@elte.hu> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --xHFwDpU9dbj6ez1V Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Thu, Mar 27 2008, Ingo Molnar wrote: > > * Jens Axboe wrote: > > > I very much wanted the kthread approach to work, since it's easier to > > work with. It's not for lack of will or trying... I'll be happy to > > supply you otherwise identical patches for this, the only difference > > being kthread of IPI completions if you want to play with this. > > i'd love to be able to run/pull something simple that enables me to > replicate the measurements you did on a generic PC [without having to > hit any real IO hardware which would put any context switching effects > down into the noise category]. You can pull io-cpu-affinity or io-cpu-affinity-kthread from git://git.kernel.dk/linux-2.6-block.git - or just see the two attached patches, apply either one to current -git to test it. > Obviously since the kthread approach embedds IPI sending it can never be > as fast as a pure IPI approach - but it should still be reasonably fast. > 3 usecs versus 2 usecs in a microbenchmark sounds about right to me, but > it would be better to make it a better-sounding 2.5 usecs versus 2 usecs > or so :-) If you have ideas to speedup the kthread approach, fire away :-) -- Jens Axboe --xHFwDpU9dbj6ez1V Content-Type: application/x-bzip Content-Disposition: attachment; filename="io-affinity-ipi.patch.bz2" Content-Transfer-Encoding: base64 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 --xHFwDpU9dbj6ez1V Content-Type: application/x-bzip Content-Disposition: attachment; filename="io-affinity-kthread.patch.bz2" Content-Transfer-Encoding: base64 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 --xHFwDpU9dbj6ez1V--