From 29e709dca64d0c475420a4ea8635acebfc901d74 Mon Sep 17 00:00:00 2001 From: jitendra Date: Fri, 21 Sep 2007 07:39:56 +0000 Subject: [PATCH 1/1] b:11171, 10961 i:nathan, cliffw - removed OSTS and ECHO_CLIENTS command line options, instead used only 'targets' option for all three cases. - modified README-obdfilter-survey as per changes in 11171. --- lustre-iokit/ChangeLog | 5 + .../obdfilter-survey/README.obdfilter-survey | 25 +-- lustre-iokit/obdfilter-survey/libecho | 105 ++++++++---- lustre-iokit/obdfilter-survey/obdfilter-survey | 176 ++++++++++----------- 4 files changed, 169 insertions(+), 142 deletions(-) diff --git a/lustre-iokit/ChangeLog b/lustre-iokit/ChangeLog index 1b77092..69e48fb 100644 --- a/lustre-iokit/ChangeLog +++ b/lustre-iokit/ChangeLog @@ -15,3 +15,8 @@ Aditions for bug: 11171 - Added automatic ondecho module load support on client and server - Added flexible OSS setup and cleanup +2007-09-21 Jitendra Pawar + Aditions for bug: 11171, 10961 + - removed OSTS and ECHO_CLIENTS command line options, instead + used only 'targets' option for all three cases. + - modified README-obdfilter-survey as per changes in 11171. diff --git a/lustre-iokit/obdfilter-survey/README.obdfilter-survey b/lustre-iokit/obdfilter-survey/README.obdfilter-survey index 051e0aa..e483a6a 100644 --- a/lustre-iokit/obdfilter-survey/README.obdfilter-survey +++ b/lustre-iokit/obdfilter-survey/README.obdfilter-survey @@ -31,7 +31,7 @@ components. of echo_client running on 1 or more nodes. You just need to pass parameters case=network and - server_nid="" to the script. The script will do the + targets="" to the script. The script will do the required setup for network case. 3. The Stripe F/S over the Network. @@ -53,8 +53,10 @@ Running ------- The script must be customised according to the components under test and -where it should keep its working files. Customization variables are -described clearly at Customization variables Section in the script. +where it should keep its working files. Customization variables are +described clearly at Customization variables Section in the script. +Please see maximum suported value ranges for customization variables +in the srcipt. To run against a local disk: --------------------------- @@ -89,14 +91,13 @@ oss02: 0 UP obdfilter oss02-sdi oss02-sdi_UUID 3 Here the obdfilter instance names are oss01-sdb, oss01-sdd, oss02-sdi. Since you are driving obdfilter instances directly, set the shell array -variable 'ost_names' to the names of the obdfilter instances and leave -'ECHO_CLIENTS' undefined. +variable 'targets' to the names of the obdfilter instances. + Example: -OSTS='oss01:oss01-sdb oss01:oss01-sdd oss02:oss02-sdi' \ +targets='oss01:oss01-sdb oss01:oss01-sdd oss02:oss02-sdi' \ ./obdfilter-survey - To run against a network: ------------------------ For the second case i.e. obdfilter-survey over network, following setup @@ -107,14 +108,14 @@ is to be done. and server machine to avoid typing password. 1. Automated run: To run obdfilter-surevy against network you just need to pass parameter - case=netdisk and server_nid="" to the script. + case=netdisk and targets="" to the script. -e.g. $ nobjhi=2 thrhi=2 size=1024 server_nid="" \ +e.g. $ nobjhi=2 thrhi=2 size=1024 targets="" \ case=network sh obdfilter-survey On server side you can see the stats at : - /proc/fs/lustre/obdecho//ststs -where, 'ost_testfs' is the obdecho server created through script. + /proc/fs/lustre/obdecho//stats +where, 'echo_srv' is the obdecho server created through script. NOTE: In network test only automated run is supported. @@ -130,7 +131,7 @@ e.g. : $ nobjhi=2 thrhi=2 size=1024 case=netdisk sh obdfilter-survey 2. Manual run: While running manually you need to tell the script all the names of the echo_client instances, which should already be up and running. -e.g. $ nobjhi=2 thrhi=2 size=1024 ECHO_CLIENTS="ECHO_ ..." \ +e.g. $ nobjhi=2 thrhi=2 size=1024 targets=" ..." \ sh obdfilter-survey diff --git a/lustre-iokit/obdfilter-survey/libecho b/lustre-iokit/obdfilter-survey/libecho index 9bca4b8..860d547 100644 --- a/lustre-iokit/obdfilter-survey/libecho +++ b/lustre-iokit/obdfilter-survey/libecho @@ -22,6 +22,7 @@ insmod="/sbin/insmod" rmmod="/sbin/rmmod" declare -a ost_names +declare -a client_names declare -a host_list declare -a dev_list declare -a unique_hosts @@ -155,10 +156,44 @@ get_devnos () { return 0 } +# do cleanup for netdisk case. +cleanup_netdisk () { + for osc in $@; do + lctl <&2 return fi - client_name=${ost_name}_echo_client + client_name=${ost_name}_ecc fi ec=`get_devno $host echo_client $client_name` if [ -n "$ec" ]; then @@ -238,13 +261,14 @@ get_ec_devno () { echo "OST $ost_name not setup" 1>&2 return fi + client_name=${ost_name}_ecc remote_shell $host "$lctl <&2 + echo "Can't setup echo-client" 1>&2 return fi echo $ec $client_name 1 @@ -254,10 +278,9 @@ EOF" # It creates echoclients for all osc listed using #lctl device_list command ec_using_osc () { local osc_name=$1 - local osc_uuid=$2 $lctl </dev/null 2>&1 + $lctl add_uuid echo_UUID $server_nid@tcp >/dev/null 2>&1 $lctl </dev/null 2>&1 + $lctl <&2 - exit 1 - fi - for ((i = 0; i < ndevs; i++)); do - str=(`split_hostname ${client_names[$i]}`) - host_names[$i]=${str[0]} - client_names[$i]=${str[1]} - done -else - ndevs=${#ost_names[@]} - if ((ndevs == 0)); then - echo "Please specify either client_names or ost_names" 1>&2 - exit 1 - fi - for ((i = 0; i < ndevs; i++)); do - str=(`split_hostname ${ost_names[$i]}`) - host_names[$i]=${str[0]} - ost_names[$i]=${str[1]} - done -fi - # get vmstat started # disable portals debug and get obdecho loaded on all relevant hosts unique_hosts=(`unique ${host_names[@]}`) @@ -386,9 +367,8 @@ for host in ${unique_hosts[@]}; do echo "Can't load obdecho on $host" 1>&2 exit 1 done - # get all the echo_client device numbers and names -for ((i=0; i < ndevs; i++)); do +for ((i=0; i < $ndevs; i++)); do host=${host_names[$i]} devno=(`get_ec_devno $host "${client_names[$i]}" "${ost_names[$i]}"`) if ((${#devno[@]} != 3)); then @@ -398,6 +378,10 @@ for ((i=0; i < ndevs; i++)); do client_names[$i]=${devno[1]} do_teardown_ec[$i]=${devno[2]} done +if (($ndevs <= 0 || ${#host_names[@]} <= 0)); then + echo "no devices or hosts specified" + cleanup 0 $clean_srv_OSS $cleanup_oscs +fi print_summary "$(date) Obdfilter-survey for case=$case from $(hostname)" for ((rsz = $rszlo; rsz <= $rszhi; rsz*=2)); do for ((nobj = $nobjlo; nobj <= $nobjhi; nobj*=2)); do @@ -436,7 +420,7 @@ for ((rsz = $rszlo; rsz <= $rszhi; rsz*=2)); do fi # create the objects tmpf="${workf}_tmp" - for ((idx = 0; idx < ndevs; idx++)); do + for ((idx = 0; idx < $ndevs; idx++)); do host=${host_names[$idx]} devno=${devnos[$idx]} client_name="${host}:${client_names[$idx]}" @@ -461,7 +445,7 @@ for ((rsz = $rszlo; rsz <= $rszhi; rsz*=2)); do for host in ${unique_hosts[@]}; do echo -n > ${cmdsf}_${host} done - for ((idx = 0; idx < ndevs; idx++)); do + for ((idx = 0; idx < $ndevs; idx++)); do host=${host_names[$idx]} devno=${devnos[$idx]} tmpfi="${tmpf}_$idx" @@ -503,7 +487,7 @@ for ((rsz = $rszlo; rsz <= $rszhi; rsz*=2)); do print_summary -n "$str" # collect/check individual OST stats echo -n > $tmpf - for ((idx = 0; idx < ndevs; idx++)); do + for ((idx = 0; idx < $ndevs; idx++)); do client_name="${host_names[$idx]}:${client_names[$idx]}" tmpfi="${tmpf}_$idx" echo "=============> $test $client_name" >> $workf @@ -532,7 +516,7 @@ for ((rsz = $rszlo; rsz <= $rszhi; rsz*=2)); do done print_summary "" # destroy objects we created - for ((idx = 0; idx < ndevs; idx++)); do + for ((idx = 0; idx < $ndevs; idx++)); do host=${host_names[$idx]} devno=${devnos[$idx]} client_name="${host}:${client_names[$idx]}" @@ -545,5 +529,5 @@ for ((rsz = $rszlo; rsz <= $rszhi; rsz*=2)); do done done done -cleanup 0 $clean_srv_OSS +cleanup 0 $clean_srv_OSS $cleanup_oscs exit 0 -- 1.8.3.1