From: Eric Dumazet <dada1@cosmosbay.com>
To: Andi Kleen <ak@suse.de>
Cc: Andrew Morton <akpm@osdl.org>, linux-kernel@vger.kernel.org
Subject: [PATCH] small change to fget()
Date: Mon, 29 Mar 2004 11:37:53 +0200 [thread overview]
Message-ID: <4067EE71.4000205@cosmosbay.com> (raw)
In-Reply-To: <p7365co848r.fsf@nielsen.suse.de>
Hello all
This one liner patch permits to save 2 instructions in the fget()
function, at least on x86_64 SMP (only one ref to current->files)
diff -Nru linux-2.6.2/fs/file_table.c linux-2.6.2-custom/fs/file_table.c
--- linux-2.6.2/fs/file_table.c 2004-02-04 17:59:43.000000000 +0100
+++ linux-2.6.2-custom/fs/file_table.c 2004-03-29
11:26:42.170555000 +0200
@@ -198,7 +198,7 @@
struct files_struct *files = current->files;
spin_lock(&files->file_lock);
- file = fcheck(fd);
+ file = fcheck_files(files,fd) ;
if (file)
get_file(file);
spin_unlock(&files->file_lock);
The assembly code was (oprofile data included) :
ffffffff8016c3d0 <fget>: /* fget total: 921168 0.1624 */
51191 0.0090 :ffffffff8016c3d0: mov %gs:0x0,%rax
76621 0.0135 :ffffffff8016c3d9: mov 0x7e8(%rax),%rsi
121592 0.0214 :ffffffff8016c3e0: lock decb 0x4(%rsi)
11278 0.0020 :ffffffff8016c3e4: js ffffffff8016c5e8
<.text.lock.file_table+0x20>
122737 0.0216 :ffffffff8016c3ea: mov %gs:0x0,%rax
174870 0.0308 :ffffffff8016c3f3: mov 0x7e8(%rax),%rcx
2274 4.0e-04 :ffffffff8016c3fa: xor %eax,%eax
77418 0.0137 :ffffffff8016c3fc: cmp 0x8(%rcx),%edi
3417 6.0e-04 :ffffffff8016c3ff: jae ffffffff8016c40b <fget+0x3b>
8184 0.0014 :ffffffff8016c401: mov 0x18(%rcx),%rax
37585 0.0066 :ffffffff8016c405: mov %edi,%edx
7357 0.0013 :ffffffff8016c407: mov (%rax,%rdx,8),%rax
5817 0.0010 :ffffffff8016c40b: test %rax,%rax
57910 0.0102 :ffffffff8016c40e: je ffffffff8016c414 <fget+0x44>
3401 6.0e-04 :ffffffff8016c410: lock incl 0x28(%rax)
7729 0.0014 :ffffffff8016c414: movb $0x1,0x4(%rsi)
151787 0.0268 :ffffffff8016c418: retq
And it is now :
380: 65 48 8b 04 25 00 00 mov %gs:0x0,%rax
387: 00 00
389: 48 8b 88 e8 07 00 00 mov 0x7e8(%rax),%rcx
390: f0 fe 49 04 lock decb 0x4(%rcx)
394: 0f 88 ee 01 00 00 js 588 <.text.lock.file_table+0x20>
39a: 31 c0 xor %eax,%eax
39c: 3b 79 08 cmp 0x8(%rcx),%edi
39f: 73 0a jae 3ab <fget+0x2b>
3a1: 48 8b 41 18 mov 0x18(%rcx),%rax
3a5: 89 fa mov %edi,%edx
3a7: 48 8b 04 d0 mov (%rax,%rdx,8),%rax
3ab: 48 85 c0 test %rax,%rax
3ae: 74 04 je 3b4 <fget+0x34>
3b0: f0 ff 40 28 lock incl 0x28(%rax)
3b4: c6 41 04 01 movb $0x1,0x4(%rcx)
3b8: c3 retq
Thanks
next prev parent reply other threads:[~2004-03-29 9:38 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-03-29 6:32 [PATCH] ppc32: Fix sector_t definition with CONFIG_LBD Benjamin Herrenschmidt
2004-03-29 7:03 ` Andrew Morton
[not found] ` <20040328230351.1a0d0e9c.akpm@osdl.org.suse.lists.linux.kernel>
2004-03-29 8:08 ` Andi Kleen
2004-03-29 9:37 ` Eric Dumazet [this message]
2004-03-29 13:18 ` Benjamin Herrenschmidt
2004-03-29 10:00 ` Andi Kleen
2004-03-29 13:10 ` Anton Blanchard
2004-03-29 13:19 ` Christoph Hellwig
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=4067EE71.4000205@cosmosbay.com \
--to=dada1@cosmosbay.com \
--cc=ak@suse.de \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
/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