linux/arch
Salman Qazi 30d697fa3a x86: fix performance regression in write() syscall
While the introduction of __copy_from_user_nocache (see commit:
0812a579c9) may have been an improvement
for sufficiently large writes, there is evidence to show that it is
deterimental for small writes.  Unixbench's fstime test gives the
following results for 256 byte writes with MAX_BLOCK of 2000:

    2.6.29-rc6 ( 5 samples, each in KB/sec ):
    283750, 295200, 294500, 293000, 293300

    2.6.29-rc6 + this patch (5 samples, each in KB/sec):
    313050, 3106750, 293350, 306300, 307900

    2.6.18
    395700, 342000, 399100, 366050, 359850

    See w_test() in src/fstime.c in unixbench version 4.1.0.  Basically, the above test
    consists of counting how much we can write in this manner:

    alarm(10);
    while (!sigalarm) {
            for (f_blocks = 0; f_blocks < 2000; ++f_blocks) {
                   write(f, buf, 256);
            }
            lseek(f, 0L, 0);
    }

Note, there are other components to the write syscall regression
that are not addressed here.

Signed-off-by: Salman Qazi <sqazi@google.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-02-24 17:16:36 +01:00
..
alpha Merge branch 'core/header-fixes' into x86/headers 2009-02-13 21:05:03 +01:00
arm Merge branch 'core/header-fixes' into x86/headers 2009-02-13 21:05:03 +01:00
avr32 headers_check fix: avr32, swab.h 2009-02-01 11:01:23 +05:30
blackfin Merge branch 'core/header-fixes' into x86/headers 2009-02-13 21:05:03 +01:00
cris Merge branch 'syscalls' of git://git390.osdl.marist.edu/pub/scm/linux-2.6 2009-01-14 19:58:40 -08:00
frv FRV: in_interrupt() requires #inclusion of linux/hardirq.h not asm/hardirq.h now 2009-02-09 08:51:35 -08:00
h8300 headers_check fix: h8300, swab.h 2009-02-01 11:01:24 +05:30
ia64 Merge branches 'x86/acpi', 'x86/apic', 'x86/cpudetect', 'x86/headers', 'x86/paravirt', 'x86/urgent' and 'x86/xen'; commit 'v2.6.29-rc5' into x86/core 2009-02-17 12:07:00 +01:00
m32r eeprom: More consistent symbol names 2009-01-26 21:19:57 +01:00
m68k m68knommu: remove the no longer used PCI support option 2009-01-27 16:42:02 +10:00
m68knommu m68knommu: fix 5329 ColdFire periphal addressing 2009-01-27 16:42:03 +10:00
mips Merge branch 'core/header-fixes' into x86/headers 2009-02-13 21:05:03 +01:00
mn10300 Merge branch 'x86/mm' into core/percpu 2009-01-21 10:39:51 +01:00
parisc Merge branch 'core/header-fixes' into x86/headers 2009-02-13 21:05:03 +01:00
powerpc Merge branch 'core/header-fixes' into x86/headers 2009-02-13 21:05:03 +01:00
s390 [S390] Update default configuration. 2009-02-11 10:37:40 +01:00
sh sh: Fix up T-bit error handling in SH-4A mutex fastpath. 2009-01-29 11:56:03 +09:00
sparc Merge branch 'linus' into x86/apic 2009-02-13 09:44:22 +01:00
um mm: invoke oom-killer from page fault 2009-01-06 15:58:58 -08:00
x86 x86: fix performance regression in write() syscall 2009-02-24 17:16:36 +01:00
xtensa headers_check fix: xtensa, swab.h 2009-02-01 11:01:30 +05:30
.gitignore
Kconfig [CVE-2009-0029] System call wrapper infrastructure 2009-01-14 14:15:16 +01:00