Thread (106 messages) 106 messages, 12 authors, 2016-10-28

Re: MD-RAID: Use seq_putc() in three status functions?

From: Hannes Reinecke <hare@suse.de>
Date: 2016-10-17 09:51:23
Also in: kernel-janitors, lkml, ltp

On 10/17/2016 11:00 AM, SF Markus Elfring wrote:
quoted
quoted
Calling the function "seq_putc" will be more efficient than "seq_printf"
in this case because of the following reasons.

1. How does the distribution look like for supported processor architectures
   where the data transfer for bytes (as a function call parameter)
   is faster than for (string) pointers?
How would I know?
How many processor architecture characteristics do you know already?
x86, s390x, ppc/ppc64.
* Is a string pointer often longer than a byte?
Always.

(Which up to now I thought was basic programming knowledge...)
* I imagine that it can become also interesting to check byte level data access
  under constraints of machine word sizes and alignment.
So, another test for you to do.
quoted
I would assume that _you_ did some measurements here;
How much would you trust in any concrete numbers I could present
for this use case?

Do you give more trust to a reference testing platform?
At the moment _any_ test would do.
With every response from your side you just keep on asking further
questions. But so far you haven't delivered any answers nor measurements.
quoted
I could easily claim that seq_printf() is more efficient than
seq_putc(), and won't apply your patch.
This is also possible in principle.
No, this is what's going to happen if you don't show any measurements.
quoted
So _you_ have to prove that your patch is more efficient.
How many results would we like to clarify from various hardware
and software combinations?
See above. At the moment _any_ test result from your side would do.
quoted
quoted
2. Did anybody measure already how many the execution times can vary
   for these functions?
Probably not.
Thanks for this information.

How important are the mentioned functions for you within the Linux
programming interface so far?
Not very. The interface is only used in a slow path, and the execution
time doesn't affect I/O performance in any way.
quoted
Unless _you_ prove that _your_ patch is more efficient it won't get applied.
Which data would you accept as a "prove" in this case?
Again: You want something from us. We don't have to prove anything, you
need to convince us. And it is really hard to convince anyone by asking
questions.
quoted
quoted
   Where do you get doubts about its efficiency for the data processing
   of a single character?
Because it's being called at the end of a function calling seq_printf() already.
Interesting view …

quoted
So exchanging a single call is probably not helping anything,
as the compiler will optimize it anyway.
How common is the discussed software transformation between implementations
for optimising compilers?

quoted
Case in point: with your patch the x86_64 compiler generates nearly
identical code for driver/md/raid1.c, but with one instruction _more_
after your patch has been applied.
Which software versions and command parameters did you try out
for this information (from an unspecified run time environment)?
# gcc --version
gcc (SUSE Linux) 4.8.5
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is
NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.

git tree from git.kernel.org/mkp/u/4.10/scsi-queue

_I_ did some measurements.
I'm still waiting from results from your side.

Cheers,

Hannes
-- 
Dr. Hannes Reinecke		   Teamlead Storage & Networking
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)
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help