Mercurial > repos > rliterman > csp2
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 "$@"