Flexible I/O Tester development
 help / color / mirror / Atom feed
* json output issue on solaris sparc
@ 2014-03-04 10:19 Sébastien Bouchex Bellomié
  2014-03-06 21:47 ` Jens Axboe
  0 siblings, 1 reply; 5+ messages in thread
From: Sébastien Bouchex Bellomié @ 2014-03-04 10:19 UTC (permalink / raw)
  To: fio@vger.kernel.org

Hello,

I'm trying fio on solaris sparc and I'm having an strange issue : io_bytes, bw, iops, runtime values are 0 when json output is enabled but contains valid values when using text (or terse) output format.
I have tested on solaris x64 and everything is fine.

Output (text format) :
---
Starting 1 process
Jobs: 1 (f=1): [w] [-.-% done] [0KB/452.7MB/0KB /s] [0/14.5K/0 iops] [eta 00m:00s]
random_rw: (groupid=0, jobs=1): err= 0: pid=15677: Tue Mar  4 11:04:24 2014
  write: io=1024.0MB, bw=454126KB/s, iops=14191, runt=  2309msec
    slat (usec): min=7, max=1430, avg= 8.54, stdev= 7.97
    clat (usec): min=22, max=387, avg=59.75, stdev=10.36
     lat (usec): min=56, max=1817, avg=68.29, stdev=14.43
    clat percentiles (usec):
     |  1.00th=[   50],  5.00th=[   50], 10.00th=[   51], 20.00th=[   52],
     | 30.00th=[   56], 40.00th=[   57], 50.00th=[   59], 60.00th=[   60],
     | 70.00th=[   61], 80.00th=[   62], 90.00th=[   69], 95.00th=[   71],
     | 99.00th=[   98], 99.50th=[  123], 99.90th=[  165], 99.95th=[  171],
     | 99.99th=[  195]
    bw (KB  /s): min=426112, max=471552, per=99.26%, avg=450752.00, stdev=21035.79
    lat (usec) : 50=0.81%, 100=98.28%, 250=0.91%, 500=0.01%
  cpu          : usr=109.53%, sys=74.39%, ctx=32833, majf=0, minf=0
  IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued    : total=r=0/w=32768/d=0, short=r=0/w=0/d=0
     latency   : target=0, window=0, percentile=100.00%, depth=1

Run status group 0 (all jobs):
  WRITE: io=1024.0MB, aggrb=454125KB/s, minb=454125KB/s, maxb=454125KB/s, mint=2309msec, maxt=2309msec
---

Output (json format):
---
{
  "fio version" : "fio-2.1.6",
  "jobs" : [
    {
      "jobname" : "random_rw",
      "groupid" : 0,
      "error" : 0,
      "read" : {
        "io_bytes" : 0,
        "bw" : 0,
        "iops" : 0,
        "runtime" : 0,
        "slat" : {
          "min" : 0,
          "max" : 0,
          "mean" : 0.00,
          "stddev" : 0.00
        },
        "clat" : {
          "min" : 0,
          "max" : 0,
          "mean" : 0.00,
          "stddev" : 0.00,
          "percentile" : {
            "1.000000" : 0,
            "5.000000" : 0,
            "10.000000" : 0,
            "20.000000" : 0,
            "30.000000" : 0,
            "40.000000" : 0,
            "50.000000" : 0,
            "60.000000" : 0,
            "70.000000" : 0,
            "80.000000" : 0,
            "90.000000" : 0,
            "95.000000" : 0,
            "99.000000" : 0,
            "99.500000" : 0,
            "99.900000" : 0,
            "99.950000" : 0,
            "99.990000" : 0,
            "0.00" : 0,
            "0.00" : 0,
            "0.00" : 0
          }
        },
        "lat" : {
          "min" : 0,
          "max" : 0,
          "mean" : 0.00,
          "stddev" : 0.00
        },
        "bw_min" : 0,
        "bw_max" : 0,
        "bw_agg" : 0.00,
        "bw_mean" : 0.00,
        "bw_dev" : 0.00
      },
      "write" : {
        "io_bytes" : 0,
        "bw" : 0,
        "iops" : 0,
        "runtime" : 0,
        "slat" : {
          "min" : 7,
          "max" : 888,
          "mean" : 9.37,
          "stddev" : 5.37
        },
        "clat" : {
          "min" : 42,
          "max" : 81326,
          "mean" : 103.08,
          "stddev" : 732.51,
          "percentile" : {
            "1.000000" : 50,
            "5.000000" : 52,
            "10.000000" : 53,
            "20.000000" : 58,
            "30.000000" : 60,
            "40.000000" : 62,
            "50.000000" : 66,
            "60.000000" : 70,
            "70.000000" : 73,
            "80.000000" : 107,
            "90.000000" : 205,
            "95.000000" : 213,
            "99.000000" : 318,
            "99.500000" : 490,
            "99.900000" : 548,
            "99.950000" : 596,
            "99.990000" : 46848,
            "0.00" : 0,
            "0.00" : 0,
            "0.00" : 0
          }
        },
        "lat" : {
          "min" : 50,
          "max" : 81335,
          "mean" : 112.45,
          "stddev" : 732.64
        },
        "bw_min" : 194880,
        "bw_max" : 375488,
        "bw_agg" : 270316.56,
        "bw_mean" : 270316.56,
        "bw_dev" : 60821.06
      },
      "trim" : {
        "io_bytes" : 0,
        "bw" : 0,
        "iops" : 0,
        "runtime" : 0,
        "slat" : {
          "min" : 0,
          "max" : 0,
          "mean" : 0.00,
          "stddev" : 0.00
        },
        "clat" : {
          "min" : 0,
          "max" : 0,
          "mean" : 0.00,
          "stddev" : 0.00,
          "percentile" : {
            "1.000000" : 0,
            "5.000000" : 0,
            "10.000000" : 0,
            "20.000000" : 0,
            "30.000000" : 0,
            "40.000000" : 0,
            "50.000000" : 0,
            "60.000000" : 0,
            "70.000000" : 0,
            "80.000000" : 0,
            "90.000000" : 0,
            "95.000000" : 0,
            "99.000000" : 0,
            "99.500000" : 0,
            "99.900000" : 0,
            "99.950000" : 0,
            "99.990000" : 0,
            "0.00" : 0,
            "0.00" : 0,
            "0.00" : 0
          }
        },
        "lat" : {
          "min" : 0,
          "max" : 0,
          "mean" : 0.00,
          "stddev" : 0.00
        },
        "bw_min" : 0,
        "bw_max" : 0,
        "bw_agg" : 0.00,
        "bw_mean" : 0.00,
        "bw_dev" : 0.00
      },
      "usr_cpu" : 105.77,
      "sys_cpu" : 79.71,
      "ctx" : 0,
      "majf" : 0,
      "minf" : 0,
      "iodepth_level" : {
        "1" : 100.00,
        "2" : 0.00,
        "4" : 0.00,
        "8" : 0.00,
        "16" : 0.00,
        "32" : 0.00,
        ">=64" : 0.00
      },
      "latency_us" : {
        "2" : 0.00,
        "4" : 0.00,
        "10" : 0.00,
        "20" : 0.00,
        "50" : 0.38,
        "100" : 78.60,
        "250" : 17.83,
        "500" : 2.83,
        "750" : 0.35,
        "1000" : 0.01
      },
      "latency_ms" : {
        "2" : 0.00,
        "4" : 0.00,
        "10" : 0.01,
        "20" : 0.01,
        "50" : 0.01,
        "100" : 0.01,
        "250" : 0.00,
        "500" : 0.00,
        "750" : 0.00,
        "1000" : 0.00,
        "2000" : 0.00,
        ">=2000" : 0.00
      },
      "latency_depth" : 1,
      "latency_target" : 0,
      "latency_percentile" : 100.00,
      "latency_window" : 0
    }
  ]
}
---

My profile file is :
---
[global]
ioengine=solarisaio

[random_rw]
rw=randwrite
size=1024m
directory=/data/fio
bs=32k
---

I'm using fio-2.1.6 rebuilt with gcc 4.8.0 with the default configure script.

Thanks
Seb


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

* Re: json output issue on solaris sparc
  2014-03-04 10:19 json output issue on solaris sparc Sébastien Bouchex Bellomié
@ 2014-03-06 21:47 ` Jens Axboe
  2014-03-07  7:50   ` Sébastien Bouchex Bellomié
  0 siblings, 1 reply; 5+ messages in thread
From: Jens Axboe @ 2014-03-06 21:47 UTC (permalink / raw)
  To: Sébastien Bouchex Bellomié, fio@vger.kernel.org

On 03/04/2014 03:19 AM, S�bastien Bouchex Bellomi� wrote:
> Hello,
>
> I'm trying fio on solaris sparc and I'm having an strange issue : io_bytes, bw, iops, runtime values are 0 when json output is enabled but contains valid values when using text (or terse) output format.
> I have tested on solaris x64 and everything is fine.

That's pretty weird... I lost my last SPARC box about 4 years ago, so I 
have nothing to test on. I wonder if it's an alignment thing. Is fio a 
32-bit or 64-bit application?

-- 
Jens Axboe



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

* RE: json output issue on solaris sparc
  2014-03-06 21:47 ` Jens Axboe
@ 2014-03-07  7:50   ` Sébastien Bouchex Bellomié
  2014-03-11 14:39     ` Sébastien Bouchex Bellomié
  0 siblings, 1 reply; 5+ messages in thread
From: Sébastien Bouchex Bellomié @ 2014-03-07  7:50 UTC (permalink / raw)
  To: Jens Axboe, fio@vger.kernel.org

Hi,

I'm using a 32 bit binary. The 64 bit binary is just crashing at startup (bus error)

Seb

-----Original Message-----
From: Jens Axboe [mailto:axboe@kernel.dk] 
Sent: jeudi 6 mars 2014 22:47
To: Sébastien Bouchex Bellomié; fio@vger.kernel.org
Subject: Re: json output issue on solaris sparc

On 03/04/2014 03:19 AM, Sébastien Bouchex Bellomié wrote:
> Hello,
>
> I'm trying fio on solaris sparc and I'm having an strange issue : io_bytes, bw, iops, runtime values are 0 when json output is enabled but contains valid values when using text (or terse) output format.
> I have tested on solaris x64 and everything is fine.

That's pretty weird... I lost my last SPARC box about 4 years ago, so I have nothing to test on. I wonder if it's an alignment thing. Is fio a 32-bit or 64-bit application?

--
Jens Axboe



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

* RE: json output issue on solaris sparc
  2014-03-07  7:50   ` Sébastien Bouchex Bellomié
@ 2014-03-11 14:39     ` Sébastien Bouchex Bellomié
  2014-03-11 15:03       ` Jens Axboe
  0 siblings, 1 reply; 5+ messages in thread
From: Sébastien Bouchex Bellomié @ 2014-03-11 14:39 UTC (permalink / raw)
  To: Jens Axboe, fio@vger.kernel.org

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

Hi,

OK, the issue was related to the alignment issue between the thread_options structure and its "packed" version : The lexxx_to_cpu macros are incorrectly casting the pointers and that causes an bus error.
I have fixed the issue by avoid casting the pointers and calling directly the "swap" method.

I have also included a fixed on the thread_options structure regarding the ddir_seq_add variable : Its length was incorrect.

Attached, you will find a patch that's fixed both.

The 32 bit version is still not working on json but since the 64 bit version is working fine, I will not probably work on it.

Seb

-----Original Message-----
From: fio-owner@vger.kernel.org [mailto:fio-owner@vger.kernel.org] On Behalf Of Sébastien Bouchex Bellomié
Sent: vendredi 7 mars 2014 08:51
To: Jens Axboe; fio@vger.kernel.org
Subject: RE: json output issue on solaris sparc

Hi,

I'm using a 32 bit binary. The 64 bit binary is just crashing at startup (bus error)

Seb

-----Original Message-----
From: Jens Axboe [mailto:axboe@kernel.dk]
Sent: jeudi 6 mars 2014 22:47
To: Sébastien Bouchex Bellomié; fio@vger.kernel.org
Subject: Re: json output issue on solaris sparc

On 03/04/2014 03:19 AM, Sébastien Bouchex Bellomié wrote:
> Hello,
>
> I'm trying fio on solaris sparc and I'm having an strange issue : io_bytes, bw, iops, runtime values are 0 when json output is enabled but contains valid values when using text (or terse) output format.
> I have tested on solaris x64 and everything is fine.

That's pretty weird... I lost my last SPARC box about 4 years ago, so I have nothing to test on. I wonder if it's an alignment thing. Is fio a 32-bit or 64-bit application?

--
Jens Axboe

--
To unsubscribe from this list: send the line "unsubscribe fio" in the body of a message to majordomo@vger.kernel.org More majordomo info at  http://vger.kernel.org/majordomo-info.html

[-- Attachment #2: Fixed-Solaric-sparc-alignement-issue.patch --]
[-- Type: application/octet-stream, Size: 1269 bytes --]

diff --git a/os/os.h b/os/os.h
index 7f92d1b..2f2d069 100644
--- a/os/os.h
+++ b/os/os.h
@@ -201,28 +201,22 @@
 #endif /* FIO_HAVE_BYTEORDER_FUNCS */
 
 #define le16_to_cpu(val) ({			\
-	uint16_t *__val = &(val);		\
-	__le16_to_cpu(*__val);			\
+	__le16_to_cpu(val);			\
 })
 #define le32_to_cpu(val) ({			\
-	uint32_t *__val = &(val);		\
-	__le32_to_cpu(*__val);			\
+	__le32_to_cpu(val);			\
 })
 #define le64_to_cpu(val) ({			\
-	uint64_t *__val = &(val);		\
-	__le64_to_cpu(*__val);			\
+	__le64_to_cpu(val);				\
 })
 #define cpu_to_le16(val) ({			\
-	uint16_t *__val = &(val);		\
-	__cpu_to_le16(*__val);			\
+	__cpu_to_le16(val);			\
 })
 #define cpu_to_le32(val) ({			\
-	uint32_t *__val = &(val);		\
-	__cpu_to_le32(*__val);			\
+	__cpu_to_le32(val);			\
 })
 #define cpu_to_le64(val) ({			\
-	uint64_t *__val = &(val);		\
-	__cpu_to_le64(*__val);			\
+	__cpu_to_le64(val);			\
 })
 
 #ifndef FIO_HAVE_BLKTRACE
diff --git a/thread_options.h b/thread_options.h
index 4ea6ebd..bacd86b 100644
--- a/thread_options.h
+++ b/thread_options.h
@@ -45,7 +45,7 @@
 	unsigned int kb_base;
 	unsigned int unit_base;
 	unsigned int ddir_seq_nr;
-	long ddir_seq_add;
+	long long ddir_seq_add;
 	unsigned int iodepth;
 	unsigned int iodepth_low;
 	unsigned int iodepth_batch;

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

* Re: json output issue on solaris sparc
  2014-03-11 14:39     ` Sébastien Bouchex Bellomié
@ 2014-03-11 15:03       ` Jens Axboe
  0 siblings, 0 replies; 5+ messages in thread
From: Jens Axboe @ 2014-03-11 15:03 UTC (permalink / raw)
  To: Sébastien Bouchex Bellomié, fio@vger.kernel.org

On 03/11/2014 08:39 AM, S�bastien Bouchex Bellomi� wrote:
> Hi,
>
> OK, the issue was related to the alignment issue between the thread_options structure and its "packed" version : The lexxx_to_cpu macros are incorrectly casting the pointers and that causes an bus error.
> I have fixed the issue by avoid casting the pointers and calling directly the "swap" method.
>
> I have also included a fixed on the thread_options structure regarding the ddir_seq_add variable : Its length was incorrect.
>
> Attached, you will find a patch that's fixed both.
>
> The 32 bit version is still not working on json but since the 64 bit version is working fine, I will not probably work on it.

Nice work! I have applied the patch.

-- 
Jens Axboe



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

end of thread, other threads:[~2014-03-11 15:03 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-03-04 10:19 json output issue on solaris sparc Sébastien Bouchex Bellomié
2014-03-06 21:47 ` Jens Axboe
2014-03-07  7:50   ` Sébastien Bouchex Bellomié
2014-03-11 14:39     ` Sébastien Bouchex Bellomié
2014-03-11 15:03       ` Jens Axboe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox