All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: FIO for MIPS
       [not found] <7efa8a7d0908311900o2f0bfbb8t52a8b518782e2bdc@mail.gmail.com>
@ 2009-09-01  5:38 ` Jens Axboe
  2009-09-01 23:43   ` Learner Study
  0 siblings, 1 reply; 5+ messages in thread
From: Jens Axboe @ 2009-09-01  5:38 UTC (permalink / raw)
  To: Learner Study; +Cc: fio

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@oracle.com>
Date:   Tue Sep 1 07:23:57 2009 +0200

    MIPS support
    
    Signed-off-by: Jens Axboe <jens.axboe@oracle.com>

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


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: FIO for MIPS
  2009-09-01  5:38 ` FIO for MIPS Jens Axboe
@ 2009-09-01 23:43   ` Learner Study
  2009-09-02  6:31     ` Jens Axboe
  0 siblings, 1 reply; 5+ messages in thread
From: Learner Study @ 2009-09-01 23:43 UTC (permalink / raw)
  To: Jens Axboe; +Cc: fio, vmurgai

[-- Attachment #1: Type: text/plain, Size: 2302 bytes --]

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@oracle.com> 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@oracle.com>
> Date:   Tue Sep 1 07:23:57 2009 +0200
>
>    MIPS support
>
>    Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
>
> 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
>
>

[-- Attachment #2: Type: text/html, Size: 3133 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: FIO for MIPS
  2009-09-01 23:43   ` Learner Study
@ 2009-09-02  6:31     ` Jens Axboe
  2009-09-02  8:24       ` Learner Study
  0 siblings, 1 reply; 5+ messages in thread
From: Jens Axboe @ 2009-09-02  6:31 UTC (permalink / raw)
  To: Learner Study; +Cc: fio, vmurgai

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@oracle.com> 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@oracle.com>
> > Date:   Tue Sep 1 07:23:57 2009 +0200
> >
> >    MIPS support
> >
> >    Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
> >
> > 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


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: FIO for MIPS
  2009-09-02  6:31     ` Jens Axboe
@ 2009-09-02  8:24       ` Learner Study
  2009-09-02  8:30         ` Jens Axboe
  0 siblings, 1 reply; 5+ messages in thread
From: Learner Study @ 2009-09-02  8:24 UTC (permalink / raw)
  To: Jens Axboe; +Cc: fio

[-- Attachment #1: Type: text/plain, Size: 3177 bytes --]

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@oracle.com> 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@oracle.com>
> 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@oracle.com>
> > > Date:   Tue Sep 1 07:23:57 2009 +0200
> > >
> > >    MIPS support
> > >
> > >    Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
> > >
> > > 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
>
>

[-- Attachment #2: Type: text/html, Size: 4546 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: FIO for MIPS
  2009-09-02  8:24       ` Learner Study
@ 2009-09-02  8:30         ` Jens Axboe
  0 siblings, 0 replies; 5+ messages in thread
From: Jens Axboe @ 2009-09-02  8:30 UTC (permalink / raw)
  To: Learner Study; +Cc: fio


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@oracle.com> 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@oracle.com>
> > 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@oracle.com>
> > > > Date:   Tue Sep 1 07:23:57 2009 +0200
> > > >
> > > >    MIPS support
> > > >
> > > >    Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
> > > >
> > > > 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


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2009-09-02  8:30 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <7efa8a7d0908311900o2f0bfbb8t52a8b518782e2bdc@mail.gmail.com>
2009-09-01  5:38 ` FIO for MIPS Jens Axboe
2009-09-01 23:43   ` Learner Study
2009-09-02  6:31     ` Jens Axboe
2009-09-02  8:24       ` Learner Study
2009-09-02  8:30         ` Jens Axboe

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.