[Ocfs2-test-devel] [PATCH 1/2] Ocfs2-test: Update inline-data tests to make it compatible with openmpi-1.3.2

Tristan tristan.ye at oracle.com
Mon Oct 12 18:25:19 PDT 2009


Marcos E. Matsunaga wrote:
> Tristan,
>
> Using "-mca btl_tcp_if_include eth0", you are assuming all nodes in 
> the cluster use eth0 as public or private network. That may not be 
> true. Some nodes in my cluster use eth1 or eth2 too.
>
> Other than that, it all looks good to me.

Cool, thank you for pointing this out, I remembered I changed it in 
o2tf.py that way, but forgot here.


Tristan.

>
> Regards,
>
> Marcos Eduardo Matsunaga
>
> Oracle USA
> Linux Engineering
>
> “The statements and opinions expressed here are my own and do not
> necessarily represent those of Oracle Corporation.”
>   
>
>
> Tristan Ye wrote:
>> This patch first update o2tf.sh(openmpi_run() func) since 1.3.2 openmpi deprecated
>> one mca parameter which we used for specifying the remote connection method(rsh or ssh)
>>
>> Secondly, it fixes a bug in multi-inline-tests which may bite us with 1.3.2 openmpi if we
>> use 'sudo' before mpi binary.
>>
>> Signed-off-by: Tristan Ye <tristan.ye at oracle.com>
>> ---
>>  programs/inline-data/multi-inline-data.c |    4 +-
>>  programs/inline-data/multi-inline-dirs.c |    4 +-
>>  programs/inline-data/multi-inline-run.sh |   70 +++++-------------------------
>>  programs/python_common/o2tf.py           |    8 ++--
>>  4 files changed, 19 insertions(+), 67 deletions(-)
>>
>> diff --git a/programs/inline-data/multi-inline-data.c b/programs/inline-data/multi-inline-data.c
>> index d30b283..7a6b929 100755
>> --- a/programs/inline-data/multi-inline-data.c
>> +++ b/programs/inline-data/multi-inline-data.c
>> @@ -119,7 +119,7 @@ extern int is_file_inlined(char *dirent_name, unsigned long *i_size,
>>  
>>  static void usage(void)
>>  {
>> -	printf("Usage: inline-data [-i <iteration>] "
>> +	printf("Usage: multi-inline-data [-i <iteration>] "
>>  	       "<-d <device>> <mount_point>\n"
>>  	       "Run a series of tests intended to verify I/O to and from\n"
>>  	       "files/dirs with inline data.\n\n"
>> @@ -156,7 +156,7 @@ static int parse_opts(int argc, char **argv)
>>  {
>>  	int c;
>>  	while (1) {
>> -		c = getopt(argc, argv, "D:d:I:i:C:c:M:m:");
>> +		c = getopt(argc, argv, "D:d:I:i:");
>>  		if (c == -1)
>>  			break;
>>  		switch (c) {
>> diff --git a/programs/inline-data/multi-inline-dirs.c b/programs/inline-data/multi-inline-dirs.c
>> index 047b14f..e3be06b 100644
>> --- a/programs/inline-data/multi-inline-dirs.c
>> +++ b/programs/inline-data/multi-inline-dirs.c
>> @@ -127,7 +127,7 @@ static inline char rand_char(void)
>>  
>>  static void usage(void)
>>  {
>> -	printf("Usage: inline-dirs [-i <iteration>] [-s operated_entries] "
>> +	printf("Usage: multi-inline-dirs [-i <iteration>] [-s operated_entries] "
>>  	       "<-d <device>> <mount_point>\n"
>>  	       "Run a series of tests intended to verify I/O to and from\n"
>>  	       "dirs with inline data.\n\n"
>> @@ -165,7 +165,7 @@ static int parse_opts(int argc, char **argv)
>>  {
>>  	int c;
>>  	while (1) {
>> -		c = getopt(argc, argv, "D:d:I:i:C:c:M:m:S:s:");
>> +		c = getopt(argc, argv, "D:d:I:i:S:s:");
>>  		if (c == -1)
>>  			break;
>>  		switch (c) {
>> diff --git a/programs/inline-data/multi-inline-run.sh b/programs/inline-data/multi-inline-run.sh
>> index bc77573..6b18903 100755
>> --- a/programs/inline-data/multi-inline-run.sh
>> +++ b/programs/inline-data/multi-inline-run.sh
>> @@ -41,8 +41,8 @@ REMOTE_MOUNT_BIN="${BINDIR}/remote_mount.py"
>>  UMOUNT_BIN="`which sudo` -u root `which umount`"
>>  REMOTE_UMOUNT_BIN="${BINDIR}/remote_umount.py"
>>  MKFS_BIN="`which sudo` -u root `which mkfs.ocfs2`"
>> -INLINE_DATA_BIN="`which sudo` -u root ${BINDIR}/multi-inline-data"
>> -INLINE_DIRS_BIN="`which sudo` -u root ${BINDIR}/multi-inline-dirs"
>> +INLINE_DATA_BIN="${BINDIR}/multi-inline-data"
>> +INLINE_DIRS_BIN="${BINDIR}/multi-inline-dirs"
>>  DEFAULT_LOG="multiple-inline-data-test-logs"
>>  LOG_OUT_DIR=
>>  DATA_LOG_FILE=
>> @@ -56,14 +56,13 @@ CLUSTERSIZE=
>>  BLOCKNUMS=
>>  
>>  TMP_DIR=/tmp
>> -DEFAULT_HOSTFILE=".openmpi_hostfile"
>>  DEFAULT_RANKS=4
>>  
>>  declare -i MPI_RANKS
>>  MPI_HOSTS=
>>  MPI_HOSTFILE=
>>  MPI_ACCESS_METHOD="ssh"
>> -MPI_PLS_AGENT_ARG="-mca pls_rsh_agent ssh:rsh"
>> +MPI_PLS_AGENT_ARG="-mca plm_rsh_agent ssh:rsh"
>>  
>>  set -o pipefail
>>  
>> @@ -161,38 +160,13 @@ f_getoptions()
>>  
>>  }
>>  
>> -f_create_hostfile()
>> -{
>> -	MPI_HOSTFILE="${TMP_DIR}/${DEFAULT_HOSTFILE}"
>> -        TMP_FILE="${TMP_DIR}/.tmp_openmpi_hostfile_$$"
>> -
>> -        echo ${MPI_HOSTS}|sed -e 's/,/\n/g'>$TMP_FILE
>> -
>> -        if [ -f "$MPI_HOSTFILE" ];then
>> -               ${RM} -rf ${MPI_HOSTFILE}
>> -        fi
>> -
>> -        while read line
>> -        do
>> -                if [ -z $line ];then
>> -                        continue
>> -                fi
>> -
>> -                echo "$line">>$MPI_HOSTFILE
>> -
>> -        done<$TMP_FILE
>> -
>> -
>> -        ${RM} -rf $TMP_FILE
>> -}
>> -
>>  f_setup()
>>  {
>>  
>>          f_getoptions $*
>>  
>>  	if [ "$MPI_ACCESS_METHOD" = "rsh" ];then
>> -                MPI_PLS_AGENT_ARG="-mca pls_rsh_agent rsh:ssh"
>> +                MPI_PLS_AGENT_ARG="-mca plm_rsh_agent rsh:ssh"
>>                  REMOTE_SH_BIN=${RSH_BIN}
>>          fi
>>  
>> @@ -225,10 +199,7 @@ f_setup()
>>  
>>  	if [ -z "$MPI_HOSTS" ];then
>>  		f_usage
>> -        else
>> -		f_create_hostfile
>> -        fi
>> -
>> +	fi
>>  }
>>  
>>  f_do_mkfs_and_mount()
>> @@ -241,14 +212,6 @@ f_do_mkfs_and_mount()
>>  	echo_status ${RET} |tee -a ${RUN_LOG_FILE}
>>  	exit_or_not ${RET}
>>  
>> -#	while read node_line ; do
>> -#		host_node=`echo ${node_line}|${AWK_BIN} '{print $1}'`
>> -#		echo -n "Mounting device to ${MOUNT_POINT} on ${host_node}:"|tee -a ${RUN_LOG_FILE}
>> -#		RET=$(${REMOTE_SH_BIN} -n ${host_node} "sudo /bin/mount -t ocfs2 -o rw,nointr ${OCFS2_DEVICE} ${MOUNT_POINT};echo \$?" 2>>${RUN_LOG_FILE})
>> -#		echo_status ${RET} |tee -a ${RUN_LOG_FILE}
>> -#		exit_or_not ${RET}
>> -#			
>> -#	done<${MPI_HOSTFILE}
>>  	echo -n "Mounting device ${OCFS2_DEVICE} to nodes(${MPI_HOSTS}):"|tee -a ${RUN_LOG_FILE}
>>          ${REMOTE_MOUNT_BIN} -l ocfs2-inline-test -m ${MOUNT_POINT} -n ${MPI_HOSTS}>>${RUN_LOG_FILE} 2>&1
>>          RET=$?
>> @@ -262,24 +225,13 @@ f_do_mkfs_and_mount()
>>  
>>  f_do_umount()
>>  {
>> -#	while read node_line;do
>> -#		host_node=`echo ${node_line}|awk '{print $1}'`
>> -#		echo -ne "Unmounting device from ${MOUNT_POINT} on ${host_node}:"|tee -a ${RUN_LOG_FILE}
>> -#		RET=$(${REMOTE_SH_BIN} -n ${host_node} "sudo /bin/umount ${MOUNT_POINT};echo \$?" 2>>${RUN_LOG_FILE})
>> -#		echo_status ${RET} |tee -a ${RUN_LOG_FILE}
>> -#		exit_or_not ${RET}
>> -#		
>> -#	done<${MPI_HOSTFILE}
>> -
>>  	echo -n "Umounting device ${OCFS2_DEVICE} from nodes(${MPI_HOSTS}):"|tee -a ${RUN_LOG_FILE}
>>          ${REMOTE_UMOUNT_BIN} -m ${MOUNT_POINT} -n ${MPI_HOSTS}>>${RUN_LOG_FILE} 2>&1
>>          RET=$?
>>          echo_status ${RET} |tee -a ${RUN_LOG_FILE}
>>          exit_or_not ${RET}
>> -
>>  }
>>  
>> -
>>  f_run_data_test()
>>  {
>>  	echo >>${DATA_LOG_FILE}
>> @@ -290,7 +242,7 @@ f_run_data_test()
>>          echo "==========================================================">>${DATA_LOG_FILE}
>>  	echo -e "Testing Binary:\t\t${INLINE_DATA_BIN} -i 1 -d ${OCFS2_DEVICE} ${MOUNT_POINT}">>${DATA_LOG_FILE}
>>  
>> -	${SUDO} ${MPIRUN} ${MPI_PLS_AGENT_ARG} -mca btl tcp,self -mca btl_tcp_if_include eth0 -np ${MPI_RANKS} --hostfile ${MPI_HOSTFILE} ${INLINE_DATA_BIN} -i 1 -d ${OCFS2_DEVICE} ${MOUNT_POINT}>>${DATA_LOG_FILE} 2>&1
>> +	${SUDO} ${MPIRUN} ${MPI_PLS_AGENT_ARG} -mca btl tcp,self -mca btl_tcp_if_include eth0 -np ${MPI_RANKS} --host ${MPI_HOSTS} ${INLINE_DATA_BIN} -i 1 -d ${OCFS2_DEVICE} ${MOUNT_POINT}>>${DATA_LOG_FILE} 2>&1
>>  	RET=$?
>>  	echo_status ${RET} |tee -a ${RUN_LOG_FILE}
>>  	exit_or_not ${RET}
>> @@ -302,9 +254,9 @@ f_run_data_test()
>>          echo -ne "Stress Test For Regular File Among Nodes:">> ${DATA_LOG_FILE}             
>>          echo >>${DATA_LOG_FILE}
>>          echo "==========================================================">>${DATA_LOG_FILE}
>> -	echo -e "Testing Binary:\t\t${INLINE_DATA_BIN} -i 50 -d ${OCFS2_DEVICE} ${MOUNT_POINT}">>${DATA_LOG_FILE}
>> +	echo -e "Testing Binary:\t\t${INLINE_DATA_BIN} -i 200 -d ${OCFS2_DEVICE} ${MOUNT_POINT}">>${DATA_LOG_FILE}
>>  
>> -        ${SUDO} ${MPIRUN} ${MPI_PLS_AGENT_ARG} -mca btl tcp,self -mca btl_tcp_if_include eth0 -np ${MPI_RANKS} --hostfile ${MPI_HOSTFILE} ${INLINE_DATA_BIN} -i 200  -d ${OCFS2_DEVICE} ${MOUNT_POINT}>>${DATA_LOG_FILE} 2>&1
>> +        ${SUDO} ${MPIRUN} ${MPI_PLS_AGENT_ARG} -mca btl tcp,self -mca btl_tcp_if_include eth0 -np ${MPI_RANKS} --host ${MPI_HOSTS} ${INLINE_DATA_BIN} -i 200 -d ${OCFS2_DEVICE} ${MOUNT_POINT}>>${DATA_LOG_FILE} 2>&1
>>  	RET=$?
>>          echo_status ${RET} |tee -a ${RUN_LOG_FILE}
>>          exit_or_not ${RET}
>> @@ -321,7 +273,7 @@ f_run_dirs_test()
>>          echo "==========================================================">>${DIRS_LOG_FILE}
>>  	echo -e "Testing Binary:\t\t${INLINE_DIRS_BIN} -i 1 -s 20 -d ${OCFS2_DEVICE} ${MOUNT_POINT}">>${DIRS_LOG_FILE}
>>  
>> -	${SUDO} ${MPIRUN} ${MPI_PLS_AGENT_ARG} -mca btl tcp,self -mca btl_tcp_if_include eth0 -np ${MPI_RANKS} --hostfile ${MPI_HOSTFILE}  ${INLINE_DIRS_BIN} -i 1 -s 20 -d ${OCFS2_DEVICE} ${MOUNT_POINT}>>${DIRS_LOG_FILE} 2>&1
>> +	${SUDO} ${MPIRUN} ${MPI_PLS_AGENT_ARG} -mca btl tcp,self -mca btl_tcp_if_include eth0 -np ${MPI_RANKS} --host ${MPI_HOSTS}  ${INLINE_DIRS_BIN} -i 1 -s 20 -d ${OCFS2_DEVICE} ${MOUNT_POINT}>>${DIRS_LOG_FILE} 2>&1
>>  	RET=$?
>>          echo_status ${RET} |tee -a ${RUN_LOG_FILE}
>>          exit_or_not ${RET}
>> @@ -335,7 +287,7 @@ f_run_dirs_test()
>>          echo "==========================================================">>${DIRS_LOG_FILE}
>>  	echo -e "Testing Binary:\t\t${INLINE_DIRS_BIN} -i 1 -s 100 -d ${OCFS2_DEVICE} ${MOUNT_POINT}">>${DIRS_LOG_FILE}
>>  
>> -        ${SUDO} ${MPIRUN} ${MPI_PLS_AGENT_ARG} -mca btl tcp,self -mca btl_tcp_if_include eth0 -np ${MPI_RANKS} --hostfile ${MPI_HOSTFILE}  ${INLINE_DIRS_BIN} -i 1 -s 100 -d ${OCFS2_DEVICE} ${MOUNT_POINT}>>${DIRS_LOG_FILE} 2>&1
>> +        ${SUDO} ${MPIRUN} ${MPI_PLS_AGENT_ARG} -mca btl tcp,self -mca btl_tcp_if_include eth0 -np ${MPI_RANKS} --host ${MPI_HOSTS}  ${INLINE_DIRS_BIN} -i 1 -s 100 -d ${OCFS2_DEVICE} ${MOUNT_POINT}>>${DIRS_LOG_FILE} 2>&1
>>  	RET=$?
>>          echo_status ${RET} |tee -a ${RUN_LOG_FILE}
>>          exit_or_not ${RET}
>> @@ -349,7 +301,7 @@ f_run_dirs_test()
>>          echo "==========================================================">>${DIRS_LOG_FILE}
>>  	echo -e "Testing Binary:\t\t${INLINE_DIRS_BIN} -i 5 -s 20 -d ${OCFS2_DEVICE} ${MOUNT_POINT}">>${DIRS_LOG_FILE}
>>  
>> -        ${SUDO} ${MPIRUN} ${MPI_PLS_AGENT_ARG} -mca btl tcp,self -mca btl_tcp_if_include eth0 -np ${MPI_RANKS} --hostfile ${MPI_HOSTFILE}  ${INLINE_DIRS_BIN} -i 1 -s 20 -d ${OCFS2_DEVICE} ${MOUNT_POINT}>>${DIRS_LOG_FILE} 2>&1
>> +        ${SUDO} ${MPIRUN} ${MPI_PLS_AGENT_ARG} -mca btl tcp,self -mca btl_tcp_if_include eth0 -np ${MPI_RANKS} --host ${MPI_HOSTS}  ${INLINE_DIRS_BIN} -i 5 -s 20 -d ${OCFS2_DEVICE} ${MOUNT_POINT}>>${DIRS_LOG_FILE} 2>&1
>>  	RET=$?
>>          echo_status ${RET} |tee -a ${RUN_LOG_FILE}
>>          exit_or_not ${RET}
>> diff --git a/programs/python_common/o2tf.py b/programs/python_common/o2tf.py
>> index 5e68aaf..df060cb 100644
>> --- a/programs/python_common/o2tf.py
>> +++ b/programs/python_common/o2tf.py
>> @@ -212,9 +212,9 @@ so just do a sanity check here to test if all nodes are available.
>>  	nodelen = len(nodelist)
>>  
>>  	if remote_sh == '' or remote_sh == 'ssh':
>> -		shopt = '-mca pls_rsh_agent ssh:rsh'
>> +		shopt = '-mca plm_rsh_agent ssh:rsh'
>>  	else:
>> -		shopt = '-mca pls_rsh_agent rsh:ssh'
>> +		shopt = '-mca plm_rsh_agent rsh:ssh'
>>  
>>  	fd = open(config.MPIHOSTS,'w',0)
>>  	for i in range(nodelen):
>> @@ -252,9 +252,9 @@ def openmpi_run(DEBUGON, nproc, cmd, nodes, remote_sh, logfile, w_flag):
>>  		nprocopt='-np ' + str(nproc)
>>  
>>  	if remote_sh == '' or remote_sh == 'ssh':
>> -		shopt = '-mca pls_rsh_agent ssh:rsh'
>> +		shopt = '-mca plm_rsh_agent ssh:rsh'
>>  	else:
>> -		shopt = '-mca pls_rsh_agent rsh:ssh'
>> +		shopt = '-mca plm_rsh_agent rsh:ssh'
>>  	try:
>>  		if DEBUGON:
>>  			printlog('o2tf.mpi_run: MPIRUN = %s' % config.MPIRUN,
>>   




More information about the Ocfs2-test-devel mailing list