Mister Morton vient d'ajouter un truc qui tue dans son patch :
Citation :
There is a patch here which makes a fairly fundamental change to the way
in which the kernel handles O_SYNC writes.
Traditionally Linux has held the inode semaphore while waiting for the
I/O to complete. And it writes _all_ the file's dirty data, regardless of
how much data the write() caller wrote.
The patch here arranges for the O_SYNC writer to only write the pages
which he actually dirtied. And it moves the waiting for I/O completion
outside the inode semaphore, so other writers can get in and submit their
I/O.
All this is designed to speed up the situation where multiple processes
or threads are submitting O_SYNC writes to the same file. Databases. It
speeds things up because the various writers can get more data into the
disk queueing code, so it can optimise the seek distances.
A few simple O_SYNC-based tests showed speedups from 50% to 400%,
depending on the access patterns and the number of writing threads. The
more threads the better.
If the application uses fsync() this change will provide no benefit.
This patch halves WimMark throughput. That is quite nonsensical.
|
Et ça marche !!! J'utilise Mnogosearch + MySQL pour indexer des sites assez importants et avec le kernel 2.5.70-mm2, l'indexation est quasiment deux fois plus rapide ! (ça ralentit toujours avec le temps mais là l'indexation tourne depuis 2h et c'est encore speed).
J'imagine que le gain de performance peut etre sensible avec tous les serveurs de mails (malheureusement Qmail utilise fsync() mais on peut toujours le patcher) .
Putain, vivement le 2.6 
Message édité par axey le 30-05-2003 à 11:31:03