annotate 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
rev   line source
jpayne@69 1 #!/bin/bash
jpayne@69 2 #calcmem
jpayne@69 3
jpayne@69 4 #function usage(){
jpayne@69 5 # echo "CalcMem v1.01"
jpayne@69 6 # echo "Written by Brian Bushnell, Doug Jacobsen, Alex Copeland"
jpayne@69 7 # echo "Calculates available memory in megabytes"
jpayne@69 8 # echo "Last modified April 25, 2014"
jpayne@69 9 #}
jpayne@69 10
jpayne@69 11 function parseXmx () {
jpayne@69 12 local setxmx=0
jpayne@69 13 local setxms=0
jpayne@69 14
jpayne@69 15 for arg in "$@"
jpayne@69 16 do
jpayne@69 17 if [[ "$arg" == -Xmx* ]]; then
jpayne@69 18 z="$arg"
jpayne@69 19 setxmx=1
jpayne@69 20 elif [[ "$arg" == Xmx* ]]; then
jpayne@69 21 z="-$arg"
jpayne@69 22 setxmx=1
jpayne@69 23 elif [[ "$arg" == -Xms* ]]; then
jpayne@69 24 z2="$arg"
jpayne@69 25 setxms=1
jpayne@69 26 elif [[ "$arg" == Xms* ]]; then
jpayne@69 27 z2="-$arg"
jpayne@69 28 setxms=1
jpayne@69 29 elif [[ "$arg" == -da ]] || [[ "$arg" == -ea ]]; then
jpayne@69 30 EA="$arg"
jpayne@69 31 fi
jpayne@69 32 done
jpayne@69 33
jpayne@69 34 if [[ $setxmx == 1 ]] && [[ $setxms == 0 ]]; then
jpayne@69 35 local substring=`echo $z| cut -d'x' -f 2`
jpayne@69 36 z2="-Xms$substring"
jpayne@69 37 setxms=1
jpayne@69 38 elif [[ $setxmx == 0 ]] && [[ $setxms == 1 ]]; then
jpayne@69 39 local substring=`echo $z2| cut -d's' -f 2`
jpayne@69 40 z="-Xmx$substring"
jpayne@69 41 setxmx=1
jpayne@69 42 fi
jpayne@69 43
jpayne@69 44 set=$setxmx
jpayne@69 45 }
jpayne@69 46
jpayne@69 47
jpayne@69 48 RAM=0;
jpayne@69 49
jpayne@69 50 function freeRam(){
jpayne@69 51 #Memory is in kilobytes.
jpayne@69 52 local defaultMem=3200000
jpayne@69 53 if [ $# -gt 0 ]; then
jpayne@69 54 defaultMem=$1;
jpayne@69 55 case $defaultMem in
jpayne@69 56 *g)
jpayne@69 57 defaultMem=`echo $defaultMem| cut -d'g' -f 1`
jpayne@69 58 defaultMem=$(( $defaultMem * $(( 1024 * 1024 )) ))
jpayne@69 59 ;;
jpayne@69 60 *m)
jpayne@69 61 defaultMem=`echo $defaultMem| cut -d'm' -f 1`
jpayne@69 62 defaultMem=$(( $defaultMem * 1024 ))
jpayne@69 63 ;;
jpayne@69 64 *k)
jpayne@69 65 defaultMem=`echo $defaultMem| cut -d'k' -f 1`
jpayne@69 66 ;;
jpayne@69 67 esac
jpayne@69 68 fi
jpayne@69 69
jpayne@69 70 local mult=84
jpayne@69 71 if [ $# -gt 1 ]; then
jpayne@69 72 mult=$2;
jpayne@69 73 fi
jpayne@69 74
jpayne@69 75 #echo "mult = $mult"
jpayne@69 76 #echo "default = $defaultMem"
jpayne@69 77
jpayne@69 78 local ulimit=$(ulimit -v)
jpayne@69 79 local x=$ulimit
jpayne@69 80
jpayne@69 81 if [ -e /proc/meminfo ]; then
jpayne@69 82 local vfree=$(cat /proc/meminfo | awk -F: 'BEGIN{total=-1;used=-1} /^CommitLimit:/ { total=$2 }; /^Committed_AS:/ { used=$2 } END{ print (total-used) }')
jpayne@69 83 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) }')
jpayne@69 84
jpayne@69 85 echo "vfree = $vfree"
jpayne@69 86 echo "pfree = $pfree"
jpayne@69 87 echo "ulimit = $ulimit"
jpayne@69 88
jpayne@69 89 local x2=0;
jpayne@69 90
jpayne@69 91 if [ $vfree -gt 0 ] && [ $pfree -gt 0 ]; then
jpayne@69 92 if [ $vfree -gt $pfree ]; then x2=$pfree;
jpayne@69 93 else x2=$vfree; fi
jpayne@69 94 elif [ $vfree -gt 0 ]; then x2=$vfree;
jpayne@69 95 elif [ $pfree -gt 0 ]; then x2=$pfree;
jpayne@69 96 fi
jpayne@69 97
jpayne@69 98 echo $x
jpayne@69 99 echo $x2
jpayne@69 100 echo $vfree
jpayne@69 101 echo $pfree
jpayne@69 102
jpayne@69 103 if [ "$x" = "unlimited" ] || (($x > $x2)); then x=$x2; fi
jpayne@69 104
jpayne@69 105 fi
jpayne@69 106
jpayne@69 107 #echo "x=$x"
jpayne@69 108 local HOSTNAME=`hostname`
jpayne@69 109 if [ $x -lt 1 ] || [[ $HOSTNAME == genepool* ]]; then
jpayne@69 110 #echo "hello 2"
jpayne@69 111 #echo $x
jpayne@69 112 #echo "ram is unlimited"
jpayne@69 113 RAM=$((defaultMem/1024))
jpayne@69 114 echo "Max memory cannot be determined. Attempting to use $RAM MB." 1>&2
jpayne@69 115 echo "If this fails, please set ulimit or run this program qsubbed or from a qlogin session on Genepool." 1>&2
jpayne@69 116 else
jpayne@69 117 #echo "hello 1"
jpayne@69 118 #echo $x
jpayne@69 119
jpayne@69 120 #if [ $x -ge 1000000000 ]; then
jpayne@69 121 # echo "ram is 1000g+"
jpayne@69 122 #elif [ $x -ge 500000000 ]; then
jpayne@69 123 # echo "ram is 500g+"
jpayne@69 124 #elif [ $x -ge 250000000 ]; then
jpayne@69 125 # echo "ram is 250g+"
jpayne@69 126 #elif [ $x -ge 144000000 ]; then
jpayne@69 127 # echo "ram is 144g+"
jpayne@69 128 #elif [ $x -ge 120000000 ]; then
jpayne@69 129 # echo "ram is 120g+"
jpayne@69 130 #elif [ $x -ge 40000000 ]; then
jpayne@69 131 # echo "ram is 40g+"
jpayne@69 132 #else
jpayne@69 133 # echo "ram is under 40g"
jpayne@69 134 #fi
jpayne@69 135 #echo $x
jpayne@69 136 RAM=$(( ((x-500000)*mult/100)/1024 ))
jpayne@69 137 #echo $RAM
jpayne@69 138 fi
jpayne@69 139
jpayne@69 140 echo $set
jpayne@69 141 echo $z
jpayne@69 142 echo $z2
jpayne@69 143
jpayne@69 144 #local z="-Xmx${RAM}m"
jpayne@69 145 return 0
jpayne@69 146 }
jpayne@69 147
jpayne@69 148 parseXmx "$@"
jpayne@69 149 freeRam "$@"