From: Hannes Reinecke <hare@suse.de>
To: KY Srinivasan <kys@microsoft.com>,
James Bottomley <James.Bottomley@HansenPartnership.com>,
"gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"devel@linuxdriverproject.org" <devel@linuxdriverproject.org>,
"ohering@suse.com" <ohering@suse.com>,
"jbottomley@parallels.com" <jbottomley@parallels.com>,
"hch@infradead.org" <hch@infradead.org>,
"linux-scsi@vger.kernel.org" <linux-scsi@vger.kernel.org>,
"apw@canonical.com" <apw@canonical.com>,
"vkuznets@redhat.com" <vkuznets@redhat.com>,
"jasowang@redhat.com" <jasowang@redhat.com>,
"martin.petersen@oracle.com" <martin.petersen@oracle.com>
Subject: Re: [PATCH V3 4/4] scsi: storvsc: Tighten up the interrupt path
Date: Mon, 21 Dec 2015 08:42:08 +0100 [thread overview]
Message-ID: <5677AD50.4030406@suse.de> (raw)
In-Reply-To: <BY2PR0301MB1654C8B001A86200B918B9DFA0E20@BY2PR0301MB1654.namprd03.prod.outlook.com>
On 12/19/2015 03:28 AM, KY Srinivasan wrote:
>
[ .. ]
>>
>> Could you? You're making what you describe as an optimisation but
>> there are two reasons why this might not be so. The first is that the
>> compiler is entitled to inline static functions. If it did, likely it
>> picked up the optmisation anyway as Hannes suggested. However, the
>> other reason this might not be an optimisation (assuming the compiler
>> doesn't inline the function) is you're passing an argument which can be
>> offset computed. On all architectures, you have a fixed number of
>> registers for passing function arguments, then we have to use the
>> stack. Using the stack comes in far more expensive than computing an
>> offset to an existing pointer. Even if you're still in registers, the
>> offset now has to be computed and stored and the compiler loses track
>> of the relation.
>>
>> The bottom line is that adding an extra argument for a value which can
>> be offset computed is rarely a win.
>
> James,
> When I did this, I was mostly concerned about the cost of reestablishing state that was
> already known. So, even with the function being in-lined, I felt the cost of reestablishing
> state that was already known is unnecessary. In this particular case, I did not change the
> number of arguments that were being passed; I just changed the type of one of them -
> instead of passing struct hv_device *, I am now passing struct storvsc_device *. In the
> current code, we are using struct hv_device * to establish a pointer to struct storvsc_device *
> via the function get_in_stor_device(). This pattern currently exists in the call chain from the
> interrupt handler - storvsc_on_channel_callback().
>
> While the compiler is smart enough to inline both get_in_stor_device() as well as many of the static
> functions in the call chain from storvsc_on_channel_callback(), looking at the assembled code,
> the compiler is repeatedly inlining the call to get_in_stor_device() and this clearly is less than optimal.
>
Which means you actually checked the compiler output, and it made a
difference.
That's all I wanted to know, as it's not immediately clear from the
patch.
So:
Reviewed-by: Hannes Reinecke <hare@suse.com>
Cheers,
Hannes
--
Dr. Hannes Reinecke zSeries & Storage
hare@suse.de +49 911 74053 688
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton
HRB 21284 (AG Nürnberg)
_______________________________________________
devel mailing list
devel@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
next prev parent reply other threads:[~2015-12-21 7:42 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-13 20:28 [PATCH V3 0/4] scsi: storvsc: Properly support FC hosts K. Y. Srinivasan
2015-12-13 20:28 ` [PATCH V3 1/4] scsi: storvsc: Fix a bug in the layout of the hv_fc_wwn_packet K. Y. Srinivasan
2015-12-13 20:28 ` [PATCH V3 2/4] scsi: storvsc: Properly support Fibre Channel devices K. Y. Srinivasan
2015-12-18 8:49 ` Hannes Reinecke
2015-12-18 17:13 ` KY Srinivasan
2015-12-18 17:13 ` James Bottomley
2015-12-21 16:02 ` KY Srinivasan
2015-12-13 20:28 ` [PATCH V3 3/4] scsi: storvsc: Refactor the code in storvsc_channel_init() K. Y. Srinivasan
2015-12-18 8:50 ` Hannes Reinecke
2015-12-13 20:28 ` [PATCH V3 4/4] scsi: storvsc: Tighten up the interrupt path K. Y. Srinivasan
2015-12-18 8:51 ` Hannes Reinecke
2015-12-18 16:20 ` KY Srinivasan
2015-12-18 16:48 ` James Bottomley
2015-12-19 2:28 ` KY Srinivasan
2015-12-21 7:42 ` Hannes Reinecke [this message]
2015-12-21 16:28 ` James Bottomley
2015-12-21 19:40 ` KY Srinivasan
2015-12-18 8:40 ` [PATCH V3 1/4] scsi: storvsc: Fix a bug in the layout of the hv_fc_wwn_packet Hannes Reinecke
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=5677AD50.4030406@suse.de \
--to=hare@suse.de \
--cc=James.Bottomley@HansenPartnership.com \
--cc=apw@canonical.com \
--cc=devel@linuxdriverproject.org \
--cc=gregkh@linuxfoundation.org \
--cc=hch@infradead.org \
--cc=jasowang@redhat.com \
--cc=jbottomley@parallels.com \
--cc=kys@microsoft.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=ohering@suse.com \
--cc=vkuznets@redhat.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).