1#!/bin/bash 2 3function usage() { 4 echo "F-Stack app start tool" 5 echo "Options:" 6 echo " -c [conf] Path of config file" 7 echo " -b [N] Path of binary" 8 echo " -h show this help" 9 exit 10} 11 12conf=config.ini 13bin=./example/helloworld 14 15while getopts "c:b:h" args 16do 17 case $args in 18 c) 19 conf=$OPTARG 20 ;; 21 b) 22 bin=$OPTARG 23 ;; 24 h) 25 usage 26 exit 0 27 ;; 28 esac 29done 30 31allcmask0x=`cat ${conf}|grep lcore_mask|awk -F '=' '{print $2}'` 32((allcmask=16#$allcmask0x)) 33 34num_procs=0 35PROCESSOR=$(grep 'processor' /proc/cpuinfo |sort |uniq |wc -l) 36for((i=0;i<${PROCESSOR};++i)) 37do 38 mask=`echo "2^$i"|bc` 39 ((result=${allcmask} & ${mask})) 40 if [ ${result} != 0 ] 41 then 42 ((num_procs++)); 43 cpuinfo[$i]=1 44 else 45 cpuinfo[$i]=0 46 fi 47done 48 49proc_id=0 50for((i=0;i<${PROCESSOR};++i)) 51do 52 if ((cpuinfo[$i] == 1)) 53 then 54 cmask=`echo "2^$i"|bc` 55 cmask=`echo "obase=16;${cmask}"|bc` 56 if ((proc_id == 0)) 57 then 58 echo "${bin} ${conf} -c $cmask --proc-type=primary --num-procs=${num_procs} --proc-id=${proc_id}" 59 ${bin} ${conf} -c ${cmask} --proc-type=primary --num-procs=${num_procs} --proc-id=${proc_id} & 60 sleep 5 61 else 62 echo "${bin} ${conf} -c $cmask --proc-type=secondary --num-procs=${num_procs} --proc-id=${proc_id}" 63 ${bin} ${conf} -c $cmask --proc-type=secondary --num-procs=${num_procs} --proc-id=${proc_id} & 64 fi 65 ((proc_id++)) 66 fi 67done 68