diff CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/opt/bbmap-39.01-1/Xcalcmem.sh @ 69:33d812a61356

planemo upload commit 2e9511a184a1ca667c7be0c6321a36dc4e3d116d
author jpayne
date Tue, 18 Mar 2025 17:55:14 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/opt/bbmap-39.01-1/Xcalcmem.sh	Tue Mar 18 17:55:14 2025 -0400
@@ -0,0 +1,149 @@
+#!/bin/bash
+#calcmem
+
+#function usage(){
+#	echo "CalcMem v1.01"
+#	echo "Written by Brian Bushnell, Doug Jacobsen, Alex Copeland"
+#	echo "Calculates available memory in megabytes"
+#	echo "Last modified April 25, 2014"
+#}
+
+function parseXmx () {
+	local setxmx=0
+	local setxms=0
+	
+	for arg in "$@"
+	do
+		if [[ "$arg" == -Xmx* ]]; then
+			z="$arg"
+			setxmx=1
+		elif [[ "$arg" == Xmx* ]]; then
+			z="-$arg"
+			setxmx=1
+		elif [[ "$arg" == -Xms* ]]; then
+			z2="$arg"
+			setxms=1
+		elif [[ "$arg" == Xms* ]]; then
+			z2="-$arg"
+			setxms=1
+		elif [[ "$arg" == -da ]] || [[ "$arg" == -ea ]]; then
+			EA="$arg"
+		fi
+	done
+	
+	if [[ $setxmx == 1 ]] && [[ $setxms == 0 ]]; then
+		local substring=`echo $z| cut -d'x' -f 2`
+		z2="-Xms$substring"
+		setxms=1
+	elif [[ $setxmx == 0 ]] && [[ $setxms == 1 ]]; then
+		local substring=`echo $z2| cut -d's' -f 2`
+		z="-Xmx$substring"
+		setxmx=1
+	fi
+	
+	set=$setxmx
+}
+
+
+RAM=0;
+
+function freeRam(){
+	#Memory is in kilobytes.
+	local defaultMem=3200000
+	if [ $# -gt 0 ]; then
+		defaultMem=$1;
+		case $defaultMem in
+			*g)
+			defaultMem=`echo $defaultMem| cut -d'g' -f 1`
+			defaultMem=$(( $defaultMem * $(( 1024 * 1024 )) ))
+			;;
+			*m)
+			defaultMem=`echo $defaultMem| cut -d'm' -f 1`
+			defaultMem=$(( $defaultMem * 1024 ))
+			;;
+			*k)
+			defaultMem=`echo $defaultMem| cut -d'k' -f 1`
+			;;
+		esac
+	fi
+	
+	local mult=84
+	if [ $# -gt 1 ]; then
+		mult=$2;
+	fi
+	
+	#echo "mult =    $mult"
+	#echo "default = $defaultMem"
+	
+	local ulimit=$(ulimit -v)
+	local x=$ulimit
+	
+	if [ -e /proc/meminfo ]; then
+		local vfree=$(cat /proc/meminfo | awk -F: 'BEGIN{total=-1;used=-1} /^CommitLimit:/ { total=$2 }; /^Committed_AS:/ { used=$2 } END{ print (total-used) }')
+		local pfree=$(cat /proc/meminfo | awk -F: 'BEGIN{free=-1;cached=-1;buffers=-1} /^MemFree:/ { free=$2 }; /^Cached:/ { cached=$2}; /^Buffers:/ { buffers=$2} END{ print (free+cached+buffers) }')
+		
+		echo "vfree =   $vfree"
+		echo "pfree =   $pfree"
+		echo "ulimit =  $ulimit"
+
+		local x2=0;
+		
+		if [ $vfree -gt 0 ] && [ $pfree -gt 0 ]; then
+			if [ $vfree -gt $pfree ]; then x2=$pfree; 
+			else x2=$vfree; fi
+		elif [ $vfree -gt 0 ]; then x2=$vfree;
+		elif [ $pfree -gt 0 ]; then x2=$pfree;
+		fi
+		
+		echo $x
+		echo $x2
+		echo $vfree
+		echo $pfree
+		
+		if [ "$x" = "unlimited" ] || (($x > $x2)); then x=$x2; fi
+		
+	fi
+	
+	#echo "x=$x"
+	local HOSTNAME=`hostname`
+	if [ $x -lt 1 ] || [[ $HOSTNAME == genepool* ]]; then
+		#echo "hello 2"
+		#echo $x
+		#echo "ram is unlimited"
+		RAM=$((defaultMem/1024))
+		echo "Max memory cannot be determined.  Attempting to use $RAM MB." 1>&2
+		echo "If this fails, please set ulimit or run this program qsubbed or from a qlogin session on Genepool." 1>&2
+	else
+		#echo "hello 1"
+		#echo $x
+		
+		#if [ $x -ge 1000000000 ]; then
+		#	echo "ram is 1000g+"
+		#elif [ $x -ge 500000000 ]; then
+		#	echo "ram is 500g+"
+		#elif [ $x -ge 250000000 ]; then
+		#	echo "ram is 250g+"
+		#elif [ $x -ge 144000000 ]; then
+		#	echo "ram is 144g+"
+		#elif [ $x -ge 120000000 ]; then
+		#	echo "ram is 120g+"
+		#elif [ $x -ge 40000000 ]; then
+		#	echo "ram is 40g+"
+		#else
+		#	echo "ram is under 40g"
+		#fi
+		#echo $x
+		RAM=$(( ((x-500000)*mult/100)/1024 ))
+		#echo $RAM
+	fi
+	
+	echo $set
+	echo $z
+	echo $z2
+	
+	#local z="-Xmx${RAM}m"
+	return 0
+}
+
+parseXmx "$@"
+freeRam "$@"