Messages in this thread |  | | Date | Mon, 16 Jun 2008 20:28:44 +0200 | From | Jens Axboe <> | Subject | Re: [PATCH 2/3] relay: Fix race condition which occurs when reading across CPUs. |
| |
On Mon, Jun 16 2008, Pekka Enberg wrote: > Hi Jens, > > On Mon, Jun 16 2008, Eduard - Gabriel Munteanu wrote: > >> In any case, if we use relay in a hot path, we are doing debugging, so > >> a couple of atomic operations won't be a big problem. Along with > >> setting affinity, this shouldn't be a problem. > > On Mon, Jun 16, 2008 at 7:46 PM, Jens Axboe <jens.axboe@oracle.com> wrote: > > Ehm no, that is a completely false claim. Relay speed does matter, a > > great deal. We rely heavily on eg blktrace being as ligt weight as > > possible to capture millions of events in a very short time frame > > without impacting performance too much. Relay is NOT just for debugging. > > > > So I completely agree with Mathieu here, and I'm not a big fan of the > > proposed solution. > > OK, so we just document that fact that you're not supposed to read > from different CPU and be done with that? Or do you have any > alternative fix in mind?
Hmm dunno, that is what blktrace also did but primarily for performance reasons. It's tricky - Tom stated that he is working on a lib to abstract this from applications. While that is handy for telling you what to do, it also an annoyance that you HAVE to do it that way (it's supposed to just be a "normal" fs, not with funky restrictions).
So perhaps provide both versions in-kernel and let the kernel user device. For blktrace, we have one app and we know we can use the faster variant since readers are affine. For more debug style exports or where you don't know your consumer, use the safer variant (which should be the default action).
-- Jens Axboe
|  |