Re: FIO for MIPS

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Linux Kernel]     [Linux SCSI]     [Linux IDE]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux