I mean that the one of the big problems with posixaio in Linux is that it screws up the internal io context IO tracking in the kernel because it uses a bunch of unrelated threads to actually do the IO. If CLONE_IO had been used as clone() flag, they would at least share a context and things would work a lot better. libaio doesn't have this issue, but it requires O_DIRECT to be async (it doesn't work with buffered IO). On Wed, Sep 02 2009, Learner Study wrote: > Hi Jens: > > Do you mean using CLONE_IO with posixaio would be better than O_DIRECT with > posixaio? > > Thanks! > > On Tue, Sep 1, 2009 at 11:31 PM, Jens Axboe <jens.axboe@xxxxxxxxxx> wrote: > > > Hi, > > > > Yes, if you can live with O_DIRECT, libaio performs a lot better than > > posixaio. Nobody should use posixaio in their apps if they care just a > > bit about performance, it just doesn't work very well. Using CLONE_IO > > would help, but even with that it's still pretty suboptimal. > > > > > > On Tue, Sep 01 2009, Learner Study wrote: > > > Hi Jens: > > > > > > Thanks - it works well. > > > > > > I'm using FIO with posixaio ioengine and performance is pretty bad. I'm > > > trying to get libaio to work in my MIPS environment. Based on my tests > > in > > > previous x86 env, I had seen libaio to give better performance with FIO > > as > > > compared to posixaio. > > > > > > Again, thanks for your prompt help. > > > > > > On Mon, Aug 31, 2009 at 10:38 PM, Jens Axboe <jens.axboe@xxxxxxxxxx> > > wrote: > > > > > > > On Mon, Aug 31 2009, Learner Study wrote: > > > > > Hello: > > > > > > > > > > I checked README for FIO and apparently it isn't yet supported on > > MIPS64 > > > > > platform yet (atleast until version 1.30) > > > > > Does someone have a patch I could use to do this? Any other ideas... > > > > > > > > I just checked in the below patch. I haven't checked the memory > > ordering > > > > defines yet, not sure if any of the mips cpus are weaker ordered. I'll > > > > check that later, this should at least get you started. > > > > > > > > commit c28b912f77c3dafbdcdcf4def2c8c1f9c127100c > > > > Author: Jens Axboe <jens.axboe@xxxxxxxxxx> > > > > Date: Tue Sep 1 07:23:57 2009 +0200 > > > > > > > > MIPS support > > > > > > > > Signed-off-by: Jens Axboe <jens.axboe@xxxxxxxxxx> > > > > > > > > diff --git a/arch/arch-mips.h b/arch/arch-mips.h > > > > new file mode 100644 > > > > index 0000000..759d3a9 > > > > --- /dev/null > > > > +++ b/arch/arch-mips.h > > > > @@ -0,0 +1,25 @@ > > > > +#ifndef ARCH_MIPS64_H > > > > +#define ARCH_MIPS64_H > > > > + > > > > +#define ARCH (arch_mips) > > > > + > > > > +#ifndef __NR_ioprio_set > > > > +#define __NR_ioprio_set 314 > > > > +#define __NR_ioprio_get 315 > > > > +#endif > > > > + > > > > +#ifndef __NR_fadvise64 > > > > +#define __NR_fadvise64 215 > > > > +#endif > > > > + > > > > +#ifndef __NR_sys_splice > > > > +#define __NR_sys_splice 263 > > > > +#define __NR_sys_tee 265 > > > > +#define __NR_sys_vmsplice 266 > > > > +#endif > > > > + > > > > +#define read_barrier() __asm__ __volatile__("": : :"memory") > > > > +#define write_barrier() __asm__ __volatile__("": : > > > > :"memory") > > > > +#define nop __asm__ __volatile__("": : :"memory") > > > > + > > > > +#endif > > > > diff --git a/arch/arch.h b/arch/arch.h > > > > index 28c6632..87db222 100644 > > > > --- a/arch/arch.h > > > > +++ b/arch/arch.h > > > > @@ -31,6 +31,8 @@ enum { > > > > #include "arch-sparc64.h" > > > > #elif defined(__arm__) > > > > #include "arch-arm.h" > > > > +#elif defined(__mips__) || defined(__mips64__) > > > > +#include "arch-mips.h" > > > > #else > > > > #error "Unsupported arch" > > > > #endif > > > > > > > > -- > > > > Jens Axboe > > > > > > > > > > > > -- > > Jens Axboe > > > > -- Jens Axboe -- To unsubscribe from this list: send the line "unsubscribe fio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html