All of lore.kernel.org
 help / color / mirror / Atom feed
* [Fuego] Fixes for dbench4
@ 2018-10-30  9:59 Daniel Sangorrin
  2018-10-30  9:59 ` [Fuego] [PATCH 1/3] dbench4: fix chart_config error Daniel Sangorrin
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Daniel Sangorrin @ 2018-10-30  9:59 UTC (permalink / raw)
  To: fuego

Hi Tim,

These are some patches to deal with the problem we discussed
on this thread:
https://lists.linuxfoundation.org/pipermail/fuego/2018-July/002216.html

[PATCH 1/3] dbench4: fix chart_config error
[PATCH 2/3] test.yaml: fix spaces
[PATCH 3/3] dbench4: add compatibility with files on the target

By the way, I just found out that Zhong had already sent some patches
to the list:
https://lists.linuxfoundation.org/pipermail/fuego/2018-August/thread.html

I think that my patches already cover
[PATCH 4/5] Benchmark.dbench4: add judgement for client.txt
However, the other 2 need review
[PATCH 3/5] Benchmark.dbench4: with make error
  -> I would rather have a check for libc.a
[PATCH 5/5] Benchmark.dbench4: add sync related cases in spec
  -> not sure this is worth it, but doesn't hurt either

Best regards,
Daniel



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

* [Fuego] [PATCH 1/3] dbench4: fix chart_config error
  2018-10-30  9:59 [Fuego] Fixes for dbench4 Daniel Sangorrin
@ 2018-10-30  9:59 ` Daniel Sangorrin
  2018-10-31  1:24   ` Tim.Bird
  2018-10-30  9:59 ` [Fuego] [PATCH 2/3] test.yaml: fix spaces Daniel Sangorrin
  2018-10-30  9:59 ` [Fuego] [PATCH 3/3] dbench4: add compatibility with files on the target Daniel Sangorrin
  2 siblings, 1 reply; 8+ messages in thread
From: Daniel Sangorrin @ 2018-10-30  9:59 UTC (permalink / raw)
  To: fuego

I was getting this error:
!!! ERROR: Missing chart_type in chart config file (/fuego-core/engine/tests/Benchmark.dbench4/chart_config.json)
Please add 'chart_type' entry in the file
chart config not found. Using default values.

TODO: if this is a change in the API or a regression, other
may need changes as well.

Signed-off-by: Daniel Sangorrin <daniel.sangorrin@toshiba.co.jp>
---
 engine/tests/Benchmark.dbench4/chart_config.json | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/engine/tests/Benchmark.dbench4/chart_config.json b/engine/tests/Benchmark.dbench4/chart_config.json
index ee256a2..cd5f799 100644
--- a/engine/tests/Benchmark.dbench4/chart_config.json
+++ b/engine/tests/Benchmark.dbench4/chart_config.json
@@ -1,3 +1,4 @@
 {
-        "dbench":["Throughput"]
+    "chart_type": "measure_plot",
+    "measures": ["default.dbench.Throughput"]
 }
-- 
2.7.4


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

* [Fuego] [PATCH 2/3] test.yaml: fix spaces
  2018-10-30  9:59 [Fuego] Fixes for dbench4 Daniel Sangorrin
  2018-10-30  9:59 ` [Fuego] [PATCH 1/3] dbench4: fix chart_config error Daniel Sangorrin
@ 2018-10-30  9:59 ` Daniel Sangorrin
  2018-10-31  1:24   ` Tim.Bird
  2018-10-30  9:59 ` [Fuego] [PATCH 3/3] dbench4: add compatibility with files on the target Daniel Sangorrin
  2 siblings, 1 reply; 8+ messages in thread
From: Daniel Sangorrin @ 2018-10-30  9:59 UTC (permalink / raw)
  To: fuego

Signed-off-by: Daniel Sangorrin <daniel.sangorrin@toshiba.co.jp>
---
 engine/tests/Benchmark.dbench4/test.yaml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/engine/tests/Benchmark.dbench4/test.yaml b/engine/tests/Benchmark.dbench4/test.yaml
index c18ed97..8f261ef 100644
--- a/engine/tests/Benchmark.dbench4/test.yaml
+++ b/engine/tests/Benchmark.dbench4/test.yaml
@@ -10,8 +10,8 @@ fuego_release: 1
 type: Benchmark
 tags: ['disk', 'storage', 'performance']
 tarball_src:
-	- dbench-4.00.tar.gz: https://github.com/sahlberg/dbench (commit: 53ed08d)
-	- zlib-1.2.11.tar.gz: http://zlib.net/zlib-1.2.11.tar.gz
+    - dbench-4.00.tar.gz: https://github.com/sahlberg/dbench (commit: 53ed08d)
+    - zlib-1.2.11.tar.gz: http://zlib.net/zlib-1.2.11.tar.gz
 gitrepo: https://github.com/sahlberg/dbench
 params:
     - MOUNT_BLOCKDEV:
-- 
2.7.4


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

* [Fuego] [PATCH 3/3] dbench4: add compatibility with files on the target
  2018-10-30  9:59 [Fuego] Fixes for dbench4 Daniel Sangorrin
  2018-10-30  9:59 ` [Fuego] [PATCH 1/3] dbench4: fix chart_config error Daniel Sangorrin
  2018-10-30  9:59 ` [Fuego] [PATCH 2/3] test.yaml: fix spaces Daniel Sangorrin
@ 2018-10-30  9:59 ` Daniel Sangorrin
  2018-10-31  1:35   ` Tim.Bird
  2 siblings, 1 reply; 8+ messages in thread
From: Daniel Sangorrin @ 2018-10-30  9:59 UTC (permalink / raw)
  To: fuego

Zhong reported a problem when dbench was on the target
but client.txt was absent. This patch adds the ability
to specify a loadfile using an absolute path, and
the ability to check whether a loadfile is on the target
or not.

By adding the loadfile parameter to the spec, we can also
now specify other loadfiles such as smb.txt or scsi.txt,
although I haven't tested that properly because it needs
some setup.

I noticed that Debian's dbench is 4.0 but does not have a
backend (-B parameter). I added a variable to specify that
and if it is not specified I try to guess the best one
from the loadfile.

TODO: add support for socketio

Signed-off-by: Daniel Sangorrin <daniel.sangorrin@toshiba.co.jp>
Reported-by: Lu Zhong <zhongl.fnst@cn.fujitsu.com>
---
 engine/tests/Benchmark.dbench4/fuego_test.sh | 70 ++++++++++++++++++++++------
 engine/tests/Benchmark.dbench4/spec.json     |  4 +-
 engine/tests/Benchmark.dbench4/test.yaml     | 12 +++++
 3 files changed, 72 insertions(+), 14 deletions(-)

diff --git a/engine/tests/Benchmark.dbench4/fuego_test.sh b/engine/tests/Benchmark.dbench4/fuego_test.sh
index 535bdd9..14942d3 100755
--- a/engine/tests/Benchmark.dbench4/fuego_test.sh
+++ b/engine/tests/Benchmark.dbench4/fuego_test.sh
@@ -7,6 +7,7 @@ function test_pre_check {
     assert_define BENCHMARK_DBENCH_TIMELIMIT
     assert_define BENCHMARK_DBENCH_NPROCS
 
+    # check if dbench 4+ exists on the target
     is_on_target_path dbench PROGRAM_DBENCH
     if [ ! -z "$PROGRAM_DBENCH" ]; then
         help=$(cmd "dbench --help") || true
@@ -19,6 +20,26 @@ function test_pre_check {
             echo "dbench found on the target (version $version)."
         fi
     fi
+
+    # check if the loadfile exists on the target
+    LOADFILE=${BENCHMARK_DBENCH_LOADFILE:-client.txt}
+    LOADFILE_ONTARGET=""
+    if is_abs_path $LOADFILE; then
+        if $(cmd "test -e $LOADFILE"); then
+            LOADFILE_ONTARGET=$LOADFILE
+            echo "$LOADFILE_ONTARGET found on the target."
+        else
+            echo "Warning: $LOADFILE not found on the target, using Fuego's default."
+            LOADFILE_ONTARGET=""
+            LOADFILE="client.txt"
+        fi
+    else
+        # check if the file is on the target board
+        if $(cmd "test -e /usr/share/dbench/$LOADFILE"); then
+            LOADFILE_ONTARGET="/usr/share/dbench/$LOADFILE"
+            echo "$LOADFILE_ONTARGET found on the target."
+        fi
+    fi
 }
 
 function test_build {
@@ -41,29 +62,52 @@ function test_build {
 
 function test_deploy {
     if [ -z "$PROGRAM_DBENCH" ]; then
-        put dbench loadfiles/client.txt $BOARD_TESTDIR/fuego.$TESTDIR/
+        echo "Deploying dbench."
+        put dbench $BOARD_TESTDIR/fuego.$TESTDIR/
+        PROGRAM_DBENCH="$BOARD_TESTDIR/fuego.$TESTDIR/dbench"
+    fi
+
+    if [ -z "$LOADFILE_ONTARGET" ]; then
+        echo "Deploying loadfiles/$LOADFILE."
+        put loadfiles/$LOADFILE $BOARD_TESTDIR/fuego.$TESTDIR/
+        LOADFILE_ONTARGET="$BOARD_TESTDIR/fuego.$TESTDIR/$LOADFILE"
     fi
 }
 
 function test_run {
+    # check if the backend needs to be specified
+    HELP=$(cmd "$PROGRAM_DBENCH --help") || true
+    HELP_BACKEND=$(echo $HELP | grep backend) || true
+    if [ ! -z "$HELP_BACKEND" ]; then
+        echo "This dbench supports backends"
+        if [ -z "$BENCHMARK_DBENCH_BACKEND" ]; then
+            echo "Warning: backend not specified, trying to guess one."
+            case $(basename $LOADFILE) in
+                client.txt) BENCHMARK_DBENCH_BACKEND="fileio" ;;
+                iscsi*) BENCHMARK_DBENCH_BACKEND="iscsi" ;;
+                scsi.txt) BENCHMARK_DBENCH_BACKEND="scsi" ;;
+                smb*) BENCHMARK_DBENCH_BACKEND="smb" ;;
+                nfs*) BENCHMARK_DBENCH_BACKEND="nfs" ;;
+                *) BENCHMARK_DBENCH_BACKEND="sockio" ;;
+            esac
+        fi
+        echo "Using backend $BENCHMARK_DBENCH_BACKEND"
+        BACKEND="-B $BENCHMARK_DBENCH_BACKEND"
+    else
+        echo "This dbench does not support backends"
+        BACKEND=""
+    fi
+
     hd_test_mount_prepare $BENCHMARK_DBENCH_MOUNT_BLOCKDEV \
         $BENCHMARK_DBENCH_MOUNT_POINT
-    if [ -z "$PROGRAM_DBENCH" ]; then
-        report "cd $BOARD_TESTDIR/fuego.$TESTDIR; \
-            ./dbench -B fileio -c ./client.txt \
-            -D $BENCHMARK_DBENCH_MOUNT_POINT/fuego.$TESTDIR \
-            -t $BENCHMARK_DBENCH_TIMELIMIT \
-            $BENCHMARK_DBENCH_EXTRAPARAMS \
-            $BENCHMARK_DBENCH_NPROCS; \
-            sync"
-    else
-        report "cd $BOARD_TESTDIR/fuego.$TESTDIR; \
-            dbench -D $BENCHMARK_DBENCH_MOUNT_POINT/fuego.$TESTDIR \
+    # TODO: timelimit does not seem to work like a timeout as expected
+    report "$PROGRAM_DBENCH \
             -t $BENCHMARK_DBENCH_TIMELIMIT \
+            $BACKEND -c $LOADFILE_ONTARGET \
+            -D $BENCHMARK_DBENCH_MOUNT_POINT/fuego.$TESTDIR \
             $BENCHMARK_DBENCH_EXTRAPARAMS \
             $BENCHMARK_DBENCH_NPROCS; \
             sync"
-    fi
     hd_test_clean_umount $BENCHMARK_DBENCH_MOUNT_BLOCKDEV \
         $BENCHMARK_DBENCH_MOUNT_POINT
 }
diff --git a/engine/tests/Benchmark.dbench4/spec.json b/engine/tests/Benchmark.dbench4/spec.json
index c855f36..c7df4b3 100644
--- a/engine/tests/Benchmark.dbench4/spec.json
+++ b/engine/tests/Benchmark.dbench4/spec.json
@@ -5,7 +5,9 @@
             "MOUNT_BLOCKDEV":"ROOT",
             "MOUNT_POINT":"$BOARD_TESTDIR/work",
             "TIMELIMIT":"30",
-            "NPROCS":"2"
+            "NPROCS":"2",
+            "LOADFILE":"client.txt",
+            "BACKEND":"fileio"
         },
         "sync": {
             "MOUNT_BLOCKDEV":"ROOT",
diff --git a/engine/tests/Benchmark.dbench4/test.yaml b/engine/tests/Benchmark.dbench4/test.yaml
index 8f261ef..10a407a 100644
--- a/engine/tests/Benchmark.dbench4/test.yaml
+++ b/engine/tests/Benchmark.dbench4/test.yaml
@@ -30,6 +30,18 @@ params:
         description: Number of parallel threads.
         example: 2
         optional: no
+    - LOADFILE:
+        description: |
+            One of the loadfiles under the loadfiles/ folder. If an absolute
+            path is specified it will be interpreted as a file in the target
+            filesystem to be used as load file.
+        example: client.txt, nfs.txt, scsi.txt, /usr/share/client.txt
+        default: client.txt
+        optional: yes
+    - BACKEND:
+        description: the dbench backend
+        example: fileio, sockio, nfs, scsi, iscsi, smb
+        optional: yes
     - EXTRAPARAMS:
         description: |
                 Additional parameters such as
-- 
2.7.4


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

* Re: [Fuego] [PATCH 1/3] dbench4: fix chart_config error
  2018-10-30  9:59 ` [Fuego] [PATCH 1/3] dbench4: fix chart_config error Daniel Sangorrin
@ 2018-10-31  1:24   ` Tim.Bird
  0 siblings, 0 replies; 8+ messages in thread
From: Tim.Bird @ 2018-10-31  1:24 UTC (permalink / raw)
  To: daniel.sangorrin, fuego

Looks good. Applied.
Thanks,
 -- Tim

> -----Original Message-----
> From: fuego-bounces@lists.linuxfoundation.org [mailto:fuego-
> bounces@lists.linuxfoundation.org] On Behalf Of Daniel Sangorrin
> Sent: Tuesday, October 30, 2018 2:59 AM
> To: fuego@lists.linuxfoundation.org
> Subject: [Fuego] [PATCH 1/3] dbench4: fix chart_config error
> 
> I was getting this error:
> !!! ERROR: Missing chart_type in chart config file (/fuego-
> core/engine/tests/Benchmark.dbench4/chart_config.json)
> Please add 'chart_type' entry in the file
> chart config not found. Using default values.
> 
> TODO: if this is a change in the API or a regression, other
> may need changes as well.
> 
> Signed-off-by: Daniel Sangorrin <daniel.sangorrin@toshiba.co.jp>
> ---
>  engine/tests/Benchmark.dbench4/chart_config.json | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/engine/tests/Benchmark.dbench4/chart_config.json
> b/engine/tests/Benchmark.dbench4/chart_config.json
> index ee256a2..cd5f799 100644
> --- a/engine/tests/Benchmark.dbench4/chart_config.json
> +++ b/engine/tests/Benchmark.dbench4/chart_config.json
> @@ -1,3 +1,4 @@
>  {
> -        "dbench":["Throughput"]
> +    "chart_type": "measure_plot",
> +    "measures": ["default.dbench.Throughput"]
>  }
> --
> 2.7.4
> 
> _______________________________________________
> Fuego mailing list
> Fuego@lists.linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/fuego

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

* Re: [Fuego] [PATCH 2/3] test.yaml: fix spaces
  2018-10-30  9:59 ` [Fuego] [PATCH 2/3] test.yaml: fix spaces Daniel Sangorrin
@ 2018-10-31  1:24   ` Tim.Bird
  0 siblings, 0 replies; 8+ messages in thread
From: Tim.Bird @ 2018-10-31  1:24 UTC (permalink / raw)
  To: daniel.sangorrin, fuego

Applied. Thanks.
 -- Tim

> -----Original Message-----
> From: fuego-bounces@lists.linuxfoundation.org [mailto:fuego-
> bounces@lists.linuxfoundation.org] On Behalf Of Daniel Sangorrin
> Sent: Tuesday, October 30, 2018 2:59 AM
> To: fuego@lists.linuxfoundation.org
> Subject: [Fuego] [PATCH 2/3] test.yaml: fix spaces
> 
> Signed-off-by: Daniel Sangorrin <daniel.sangorrin@toshiba.co.jp>
> ---
>  engine/tests/Benchmark.dbench4/test.yaml | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/engine/tests/Benchmark.dbench4/test.yaml
> b/engine/tests/Benchmark.dbench4/test.yaml
> index c18ed97..8f261ef 100644
> --- a/engine/tests/Benchmark.dbench4/test.yaml
> +++ b/engine/tests/Benchmark.dbench4/test.yaml
> @@ -10,8 +10,8 @@ fuego_release: 1
>  type: Benchmark
>  tags: ['disk', 'storage', 'performance']
>  tarball_src:
> -	- dbench-4.00.tar.gz: https://github.com/sahlberg/dbench (commit:
> 53ed08d)
> -	- zlib-1.2.11.tar.gz: http://zlib.net/zlib-1.2.11.tar.gz
> +    - dbench-4.00.tar.gz: https://github.com/sahlberg/dbench (commit:
> 53ed08d)
> +    - zlib-1.2.11.tar.gz: http://zlib.net/zlib-1.2.11.tar.gz
>  gitrepo: https://github.com/sahlberg/dbench
>  params:
>      - MOUNT_BLOCKDEV:
> --
> 2.7.4
> 
> _______________________________________________
> Fuego mailing list
> Fuego@lists.linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/fuego

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

* Re: [Fuego] [PATCH 3/3] dbench4: add compatibility with files on the target
  2018-10-30  9:59 ` [Fuego] [PATCH 3/3] dbench4: add compatibility with files on the target Daniel Sangorrin
@ 2018-10-31  1:35   ` Tim.Bird
  2018-10-31  1:48     ` Daniel Sangorrin
  0 siblings, 1 reply; 8+ messages in thread
From: Tim.Bird @ 2018-10-31  1:35 UTC (permalink / raw)
  To: daniel.sangorrin, fuego



> -----Original Message-----
> From: Daniel Sangorrin on October 30, 2018 2:59 AM
> 
> Zhong reported a problem when dbench was on the target
> but client.txt was absent. This patch adds the ability
> to specify a loadfile using an absolute path, and
> the ability to check whether a loadfile is on the target
> or not.
> 
> By adding the loadfile parameter to the spec, we can also
> now specify other loadfiles such as smb.txt or scsi.txt,
> although I haven't tested that properly because it needs
> some setup.
> 
> I noticed that Debian's dbench is 4.0 but does not have a
> backend (-B parameter). I added a variable to specify that
> and if it is not specified I try to guess the best one
> from the loadfile.
> 
> TODO: add support for socketio
> 
> Signed-off-by: Daniel Sangorrin <daniel.sangorrin@toshiba.co.jp>
> Reported-by: Lu Zhong <zhongl.fnst@cn.fujitsu.com>
> ---
>  engine/tests/Benchmark.dbench4/fuego_test.sh | 70
> ++++++++++++++++++++++------
>  engine/tests/Benchmark.dbench4/spec.json     |  4 +-
>  engine/tests/Benchmark.dbench4/test.yaml     | 12 +++++
>  3 files changed, 72 insertions(+), 14 deletions(-)
> 
> diff --git a/engine/tests/Benchmark.dbench4/fuego_test.sh
> b/engine/tests/Benchmark.dbench4/fuego_test.sh
> index 535bdd9..14942d3 100755
> --- a/engine/tests/Benchmark.dbench4/fuego_test.sh
> +++ b/engine/tests/Benchmark.dbench4/fuego_test.sh
> @@ -7,6 +7,7 @@ function test_pre_check {
>      assert_define BENCHMARK_DBENCH_TIMELIMIT
>      assert_define BENCHMARK_DBENCH_NPROCS
> 
> +    # check if dbench 4+ exists on the target
>      is_on_target_path dbench PROGRAM_DBENCH
>      if [ ! -z "$PROGRAM_DBENCH" ]; then
>          help=$(cmd "dbench --help") || true
> @@ -19,6 +20,26 @@ function test_pre_check {
>              echo "dbench found on the target (version $version)."
>          fi
>      fi
> +
> +    # check if the loadfile exists on the target
> +    LOADFILE=${BENCHMARK_DBENCH_LOADFILE:-client.txt}
> +    LOADFILE_ONTARGET=""
> +    if is_abs_path $LOADFILE; then
I'm not familiar with "is_abs_path" .  Is this a shell function
or a program?

> +        if $(cmd "test -e $LOADFILE"); then
> +            LOADFILE_ONTARGET=$LOADFILE
> +            echo "$LOADFILE_ONTARGET found on the target."
> +        else
> +            echo "Warning: $LOADFILE not found on the target, using Fuego's
> default."
> +            LOADFILE_ONTARGET=""
> +            LOADFILE="client.txt"
> +        fi
> +    else
> +        # check if the file is on the target board
> +        if $(cmd "test -e /usr/share/dbench/$LOADFILE"); then
> +            LOADFILE_ONTARGET="/usr/share/dbench/$LOADFILE"
> +            echo "$LOADFILE_ONTARGET found on the target."
> +        fi
> +    fi
>  }
> 
>  function test_build {
> @@ -41,29 +62,52 @@ function test_build {
> 
>  function test_deploy {
>      if [ -z "$PROGRAM_DBENCH" ]; then
> -        put dbench loadfiles/client.txt $BOARD_TESTDIR/fuego.$TESTDIR/
> +        echo "Deploying dbench."
> +        put dbench $BOARD_TESTDIR/fuego.$TESTDIR/
> +        PROGRAM_DBENCH="$BOARD_TESTDIR/fuego.$TESTDIR/dbench"
> +    fi
> +
> +    if [ -z "$LOADFILE_ONTARGET" ]; then
> +        echo "Deploying loadfiles/$LOADFILE."
> +        put loadfiles/$LOADFILE $BOARD_TESTDIR/fuego.$TESTDIR/
> +        LOADFILE_ONTARGET="$BOARD_TESTDIR/fuego.$TESTDIR/$LOADFILE"
>      fi
>  }
> 
>  function test_run {
> +    # check if the backend needs to be specified
> +    HELP=$(cmd "$PROGRAM_DBENCH --help") || true
> +    HELP_BACKEND=$(echo $HELP | grep backend) || true
Couldn't this just be: $(cmd "$PROGRAM_DBENCH --help" | grep backend) || true ?

> +    if [ ! -z "$HELP_BACKEND" ]; then
if [ -n "$HELP_BACKEND" ]; then

> +        echo "This dbench supports backends"
> +        if [ -z "$BENCHMARK_DBENCH_BACKEND" ]; then
> +            echo "Warning: backend not specified, trying to guess one."
> +            case $(basename $LOADFILE) in
> +                client.txt) BENCHMARK_DBENCH_BACKEND="fileio" ;;
> +                iscsi*) BENCHMARK_DBENCH_BACKEND="iscsi" ;;
> +                scsi.txt) BENCHMARK_DBENCH_BACKEND="scsi" ;;
> +                smb*) BENCHMARK_DBENCH_BACKEND="smb" ;;
> +                nfs*) BENCHMARK_DBENCH_BACKEND="nfs" ;;
> +                *) BENCHMARK_DBENCH_BACKEND="sockio" ;;
> +            esac
> +        fi
> +        echo "Using backend $BENCHMARK_DBENCH_BACKEND"
> +        BACKEND="-B $BENCHMARK_DBENCH_BACKEND"
> +    else
> +        echo "This dbench does not support backends"
> +        BACKEND=""
> +    fi
> +
>      hd_test_mount_prepare $BENCHMARK_DBENCH_MOUNT_BLOCKDEV \
>          $BENCHMARK_DBENCH_MOUNT_POINT
> -    if [ -z "$PROGRAM_DBENCH" ]; then
> -        report "cd $BOARD_TESTDIR/fuego.$TESTDIR; \
> -            ./dbench -B fileio -c ./client.txt \
> -            -D $BENCHMARK_DBENCH_MOUNT_POINT/fuego.$TESTDIR \
> -            -t $BENCHMARK_DBENCH_TIMELIMIT \
> -            $BENCHMARK_DBENCH_EXTRAPARAMS \
> -            $BENCHMARK_DBENCH_NPROCS; \
> -            sync"
> -    else
> -        report "cd $BOARD_TESTDIR/fuego.$TESTDIR; \
> -            dbench -D $BENCHMARK_DBENCH_MOUNT_POINT/fuego.$TESTDIR \
> +    # TODO: timelimit does not seem to work like a timeout as expected
> +    report "$PROGRAM_DBENCH \
>              -t $BENCHMARK_DBENCH_TIMELIMIT \
> +            $BACKEND -c $LOADFILE_ONTARGET \
> +            -D $BENCHMARK_DBENCH_MOUNT_POINT/fuego.$TESTDIR \
>              $BENCHMARK_DBENCH_EXTRAPARAMS \
>              $BENCHMARK_DBENCH_NPROCS; \
>              sync"
> -    fi
>      hd_test_clean_umount $BENCHMARK_DBENCH_MOUNT_BLOCKDEV \
>          $BENCHMARK_DBENCH_MOUNT_POINT
>  }
> diff --git a/engine/tests/Benchmark.dbench4/spec.json
> b/engine/tests/Benchmark.dbench4/spec.json
> index c855f36..c7df4b3 100644
> --- a/engine/tests/Benchmark.dbench4/spec.json
> +++ b/engine/tests/Benchmark.dbench4/spec.json
> @@ -5,7 +5,9 @@
>              "MOUNT_BLOCKDEV":"ROOT",
>              "MOUNT_POINT":"$BOARD_TESTDIR/work",
>              "TIMELIMIT":"30",
> -            "NPROCS":"2"
> +            "NPROCS":"2",
> +            "LOADFILE":"client.txt",
> +            "BACKEND":"fileio"
>          },
>          "sync": {
>              "MOUNT_BLOCKDEV":"ROOT",
> diff --git a/engine/tests/Benchmark.dbench4/test.yaml
> b/engine/tests/Benchmark.dbench4/test.yaml
> index 8f261ef..10a407a 100644
> --- a/engine/tests/Benchmark.dbench4/test.yaml
> +++ b/engine/tests/Benchmark.dbench4/test.yaml
> @@ -30,6 +30,18 @@ params:
>          description: Number of parallel threads.
>          example: 2
>          optional: no
> +    - LOADFILE:
> +        description: |
> +            One of the loadfiles under the loadfiles/ folder. If an absolute
> +            path is specified it will be interpreted as a file in the target
> +            filesystem to be used as load file.
> +        example: client.txt, nfs.txt, scsi.txt, /usr/share/client.txt
> +        default: client.txt
> +        optional: yes
> +    - BACKEND:
> +        description: the dbench backend
> +        example: fileio, sockio, nfs, scsi, iscsi, smb
> +        optional: yes
>      - EXTRAPARAMS:
>          description: |
>                  Additional parameters such as
> --
> 2.7.4

Looks good overall.  I like the approach.  I'm just a bit 
worried about the use of is_abs_path.  The other changes
I suggested are cosmetic.

Let me know.
 -- Tim


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

* Re: [Fuego] [PATCH 3/3] dbench4: add compatibility with files on the target
  2018-10-31  1:35   ` Tim.Bird
@ 2018-10-31  1:48     ` Daniel Sangorrin
  0 siblings, 0 replies; 8+ messages in thread
From: Daniel Sangorrin @ 2018-10-31  1:48 UTC (permalink / raw)
  To: Tim.Bird, fuego

> -----Original Message-----
> From: Tim.Bird@sony.com <Tim.Bird@sony.com>
> > -----Original Message-----
> > From: Daniel Sangorrin on October 30, 2018 2:59 AM
> >
> > Zhong reported a problem when dbench was on the target
> > but client.txt was absent. This patch adds the ability
> > to specify a loadfile using an absolute path, and
> > the ability to check whether a loadfile is on the target
> > or not.
> >
> > By adding the loadfile parameter to the spec, we can also
> > now specify other loadfiles such as smb.txt or scsi.txt,
> > although I haven't tested that properly because it needs
> > some setup.
> >
> > I noticed that Debian's dbench is 4.0 but does not have a
> > backend (-B parameter). I added a variable to specify that
> > and if it is not specified I try to guess the best one
> > from the loadfile.
> >
> > TODO: add support for socketio
> >
> > Signed-off-by: Daniel Sangorrin <daniel.sangorrin@toshiba.co.jp>
> > Reported-by: Lu Zhong <zhongl.fnst@cn.fujitsu.com>
> > ---
> >  engine/tests/Benchmark.dbench4/fuego_test.sh | 70
> > ++++++++++++++++++++++------
> >  engine/tests/Benchmark.dbench4/spec.json     |  4 +-
> >  engine/tests/Benchmark.dbench4/test.yaml     | 12 +++++
> >  3 files changed, 72 insertions(+), 14 deletions(-)
> >
> > diff --git a/engine/tests/Benchmark.dbench4/fuego_test.sh
> > b/engine/tests/Benchmark.dbench4/fuego_test.sh
> > index 535bdd9..14942d3 100755
> > --- a/engine/tests/Benchmark.dbench4/fuego_test.sh
> > +++ b/engine/tests/Benchmark.dbench4/fuego_test.sh
> > @@ -7,6 +7,7 @@ function test_pre_check {
> >      assert_define BENCHMARK_DBENCH_TIMELIMIT
> >      assert_define BENCHMARK_DBENCH_NPROCS
> >
> > +    # check if dbench 4+ exists on the target
> >      is_on_target_path dbench PROGRAM_DBENCH
> >      if [ ! -z "$PROGRAM_DBENCH" ]; then
> >          help=$(cmd "dbench --help") || true
> > @@ -19,6 +20,26 @@ function test_pre_check {
> >              echo "dbench found on the target (version $version)."
> >          fi
> >      fi
> > +
> > +    # check if the loadfile exists on the target
> > +    LOADFILE=${BENCHMARK_DBENCH_LOADFILE:-client.txt}
> > +    LOADFILE_ONTARGET=""
> > +    if is_abs_path $LOADFILE; then
> I'm not familiar with "is_abs_path" .  Is this a shell function
> or a program?

Oouch sorry, it seems that I hadn't merged that function into my repository. It should be there now, I sent it to the list as well.

> > +        if $(cmd "test -e $LOADFILE"); then
> > +            LOADFILE_ONTARGET=$LOADFILE
> > +            echo "$LOADFILE_ONTARGET found on the target."
> > +        else
> > +            echo "Warning: $LOADFILE not found on the target, using Fuego's
> > default."
> > +            LOADFILE_ONTARGET=""
> > +            LOADFILE="client.txt"
> > +        fi
> > +    else
> > +        # check if the file is on the target board
> > +        if $(cmd "test -e /usr/share/dbench/$LOADFILE"); then
> > +            LOADFILE_ONTARGET="/usr/share/dbench/$LOADFILE"
> > +            echo "$LOADFILE_ONTARGET found on the target."
> > +        fi
> > +    fi
> >  }
> >
> >  function test_build {
> > @@ -41,29 +62,52 @@ function test_build {
> >
> >  function test_deploy {
> >      if [ -z "$PROGRAM_DBENCH" ]; then
> > -        put dbench loadfiles/client.txt $BOARD_TESTDIR/fuego.$TESTDIR/
> > +        echo "Deploying dbench."
> > +        put dbench $BOARD_TESTDIR/fuego.$TESTDIR/
> > +        PROGRAM_DBENCH="$BOARD_TESTDIR/fuego.$TESTDIR/dbench"
> > +    fi
> > +
> > +    if [ -z "$LOADFILE_ONTARGET" ]; then
> > +        echo "Deploying loadfiles/$LOADFILE."
> > +        put loadfiles/$LOADFILE $BOARD_TESTDIR/fuego.$TESTDIR/
> > +
> LOADFILE_ONTARGET="$BOARD_TESTDIR/fuego.$TESTDIR/$LOADFILE"
> >      fi
> >  }
> >
> >  function test_run {
> > +    # check if the backend needs to be specified
> > +    HELP=$(cmd "$PROGRAM_DBENCH --help") || true
> > +    HELP_BACKEND=$(echo $HELP | grep backend) || true
> Couldn't this just be: $(cmd "$PROGRAM_DBENCH --help" | grep backend) || true ?

Yes, indeed. I was having problems because I didn't put true, but when I solved I forgot to put them into one sentence.

> > +    if [ ! -z "$HELP_BACKEND" ]; then
> if [ -n "$HELP_BACKEND" ]; then

OK

> > +        echo "This dbench supports backends"
> > +        if [ -z "$BENCHMARK_DBENCH_BACKEND" ]; then
> > +            echo "Warning: backend not specified, trying to guess one."
> > +            case $(basename $LOADFILE) in
> > +                client.txt) BENCHMARK_DBENCH_BACKEND="fileio" ;;
> > +                iscsi*) BENCHMARK_DBENCH_BACKEND="iscsi" ;;
> > +                scsi.txt) BENCHMARK_DBENCH_BACKEND="scsi" ;;
> > +                smb*) BENCHMARK_DBENCH_BACKEND="smb" ;;
> > +                nfs*) BENCHMARK_DBENCH_BACKEND="nfs" ;;
> > +                *) BENCHMARK_DBENCH_BACKEND="sockio" ;;
> > +            esac
> > +        fi
> > +        echo "Using backend $BENCHMARK_DBENCH_BACKEND"
> > +        BACKEND="-B $BENCHMARK_DBENCH_BACKEND"
> > +    else
> > +        echo "This dbench does not support backends"
> > +        BACKEND=""
> > +    fi
> > +
> >      hd_test_mount_prepare $BENCHMARK_DBENCH_MOUNT_BLOCKDEV \
> >          $BENCHMARK_DBENCH_MOUNT_POINT
> > -    if [ -z "$PROGRAM_DBENCH" ]; then
> > -        report "cd $BOARD_TESTDIR/fuego.$TESTDIR; \
> > -            ./dbench -B fileio -c ./client.txt \
> > -            -D $BENCHMARK_DBENCH_MOUNT_POINT/fuego.$TESTDIR \
> > -            -t $BENCHMARK_DBENCH_TIMELIMIT \
> > -            $BENCHMARK_DBENCH_EXTRAPARAMS \
> > -            $BENCHMARK_DBENCH_NPROCS; \
> > -            sync"
> > -    else
> > -        report "cd $BOARD_TESTDIR/fuego.$TESTDIR; \
> > -            dbench -D
> $BENCHMARK_DBENCH_MOUNT_POINT/fuego.$TESTDIR \
> > +    # TODO: timelimit does not seem to work like a timeout as expected
> > +    report "$PROGRAM_DBENCH \
> >              -t $BENCHMARK_DBENCH_TIMELIMIT \
> > +            $BACKEND -c $LOADFILE_ONTARGET \
> > +            -D $BENCHMARK_DBENCH_MOUNT_POINT/fuego.$TESTDIR \
> >              $BENCHMARK_DBENCH_EXTRAPARAMS \
> >              $BENCHMARK_DBENCH_NPROCS; \
> >              sync"
> > -    fi
> >      hd_test_clean_umount $BENCHMARK_DBENCH_MOUNT_BLOCKDEV \
> >          $BENCHMARK_DBENCH_MOUNT_POINT
> >  }
> > diff --git a/engine/tests/Benchmark.dbench4/spec.json
> > b/engine/tests/Benchmark.dbench4/spec.json
> > index c855f36..c7df4b3 100644
> > --- a/engine/tests/Benchmark.dbench4/spec.json
> > +++ b/engine/tests/Benchmark.dbench4/spec.json
> > @@ -5,7 +5,9 @@
> >              "MOUNT_BLOCKDEV":"ROOT",
> >              "MOUNT_POINT":"$BOARD_TESTDIR/work",
> >              "TIMELIMIT":"30",
> > -            "NPROCS":"2"
> > +            "NPROCS":"2",
> > +            "LOADFILE":"client.txt",
> > +            "BACKEND":"fileio"
> >          },
> >          "sync": {
> >              "MOUNT_BLOCKDEV":"ROOT",
> > diff --git a/engine/tests/Benchmark.dbench4/test.yaml
> > b/engine/tests/Benchmark.dbench4/test.yaml
> > index 8f261ef..10a407a 100644
> > --- a/engine/tests/Benchmark.dbench4/test.yaml
> > +++ b/engine/tests/Benchmark.dbench4/test.yaml
> > @@ -30,6 +30,18 @@ params:
> >          description: Number of parallel threads.
> >          example: 2
> >          optional: no
> > +    - LOADFILE:
> > +        description: |
> > +            One of the loadfiles under the loadfiles/ folder. If an absolute
> > +            path is specified it will be interpreted as a file in the target
> > +            filesystem to be used as load file.
> > +        example: client.txt, nfs.txt, scsi.txt, /usr/share/client.txt
> > +        default: client.txt
> > +        optional: yes
> > +    - BACKEND:
> > +        description: the dbench backend
> > +        example: fileio, sockio, nfs, scsi, iscsi, smb
> > +        optional: yes
> >      - EXTRAPARAMS:
> >          description: |
> >                  Additional parameters such as
> > --
> > 2.7.4
> 
> Looks good overall.  I like the approach.  I'm just a bit
> worried about the use of is_abs_path.  The other changes
> I suggested are cosmetic.
> 
> Let me know.

Sorry about not sending is_abs_path.
Thanks for the review!
Daniel


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

end of thread, other threads:[~2018-10-31  1:48 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-10-30  9:59 [Fuego] Fixes for dbench4 Daniel Sangorrin
2018-10-30  9:59 ` [Fuego] [PATCH 1/3] dbench4: fix chart_config error Daniel Sangorrin
2018-10-31  1:24   ` Tim.Bird
2018-10-30  9:59 ` [Fuego] [PATCH 2/3] test.yaml: fix spaces Daniel Sangorrin
2018-10-31  1:24   ` Tim.Bird
2018-10-30  9:59 ` [Fuego] [PATCH 3/3] dbench4: add compatibility with files on the target Daniel Sangorrin
2018-10-31  1:35   ` Tim.Bird
2018-10-31  1:48     ` Daniel Sangorrin

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.