Added start-delay for workers to spread the load.
This commit is contained in:
		
							parent
							
								
									4d28218ce4
								
							
						
					
					
						commit
						722b3b4ea6
					
				
							
								
								
									
										23
									
								
								ppss.sh
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								ppss.sh
									
									
									
									
									
								
							| @ -76,7 +76,8 @@ ARRAY_POINTER_FILE="$PPSS_DIR/ppss-array-pointer-$PID"  # Pointer for keeping tr | ||||
| JOB_LOG_DIR="$PPSS_DIR/job_log"                         # Directory containing log files of processed items. | ||||
| LOGFILE="$PPSS_DIR/ppss-log-$$.txt"                     # General PPSS log file. Contains lots of info. | ||||
| STOP=0                                                  # STOP job. | ||||
| MAX_DELAY=3 | ||||
| MAX_DELAY=0                                             # MAX DELAY between jobs. | ||||
| MAX_LOCK_DELAY=3                                        # | ||||
| PERCENT="0" | ||||
| LISTENER_PID="" | ||||
| IFS_BACKUP="$IFS" | ||||
| @ -114,10 +115,11 @@ showusage_short () { | ||||
|     echo | ||||
|     echo "usage: $0 [ -d <sourcedir> | -f <sourcefile> ]  [ -c '<command> \"$ITEM\"' ]" | ||||
|     echo "                 [ -C <configfile> ]  [ -j ] [ -l <logfile> ] [ -p <# jobs> ]" | ||||
|     echo "                 [ -D <delay> ]" | ||||
|     echo | ||||
|     echo "Examples:" | ||||
|     echo "                 $0 -d /dir/with/some/files -c 'gzip '"  | ||||
|     echo "                 $0 -d /dir/with/some/files -c 'gzip \"$ITEM\"'"  | ||||
|     echo "                 $0 -d /dir/with/some/files -c 'gzip \"$ITEM\"' -D 5"  | ||||
|     echo "                 $0 -d /dir/with/some/files -c 'cp \"$ITEM\" /tmp' -p 2"  | ||||
| } | ||||
| 
 | ||||
| @ -278,7 +280,7 @@ kill_process () { | ||||
|         kill -9 "$SSH_MASTER_PID" >> /dev/null 2>&1  | ||||
|     fi | ||||
|     sleep 1 | ||||
|     log INFO "Finished." | ||||
|     log INFO "Finished. Consult ./$JOB_LOG_DIR for job output." | ||||
| } | ||||
| 
 | ||||
| exec_cmd () {  | ||||
| @ -433,6 +435,11 @@ do | ||||
|                         add_var_to_config SRC_DIR "$SRC_DIR" | ||||
|                         shift 2 | ||||
|                         ;;  | ||||
|              --delay|-D) | ||||
|                         MAX_DELAY="$2" | ||||
|                         add_var_to_config MAX_DELAY "$MAX_DELAY" | ||||
|                         shift 2 | ||||
|                         ;; | ||||
|           --command|-c )  | ||||
|                         COMMAND=$2 | ||||
|                         if [ "$MODE" == "config" ] | ||||
| @ -1043,7 +1050,7 @@ get_global_lock () { | ||||
|         ERROR="$?" | ||||
|         if [ ! "$ERROR" == "0" ] | ||||
|         then | ||||
|             random_delay $MAX_DELAY | ||||
|             random_delay $MAX_LOCK_DELAY | ||||
|             continue | ||||
|         else | ||||
|             break | ||||
| @ -1249,7 +1256,7 @@ get_item () { | ||||
|     then | ||||
|         return 1 | ||||
|     fi | ||||
| 
 | ||||
|      | ||||
|     get_global_lock | ||||
| 
 | ||||
|     SIZE_OF_ARRAY="${#ARRAY[@]}" | ||||
| @ -1263,7 +1270,6 @@ get_item () { | ||||
| 
 | ||||
|     # This variable is used to walk thtough all array items. | ||||
|     ARRAY_POINTER=`cat $ARRAY_POINTER_FILE` | ||||
| 
 | ||||
|      | ||||
|     # Check if all items have been processed. | ||||
|     if [ "$ARRAY_POINTER" -ge "$SIZE_OF_ARRAY" ] | ||||
| @ -1522,6 +1528,11 @@ start_all_workers () { | ||||
|     do | ||||
|         start_single_worker | ||||
|         ((i++)) | ||||
| 
 | ||||
|         if [ ! "$MAX_DELAY" == "0" ] | ||||
|         then | ||||
|             random_delay "$MAX_DELAY" | ||||
|         fi | ||||
|     done | ||||
| } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user