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

planemo upload commit 2e9511a184a1ca667c7be0c6321a36dc4e3d116d
author jpayne
date Tue, 18 Mar 2025 17:55:14 -0400
parents
children
comparison
equal deleted inserted replaced
67:0e9998148a16 69:33d812a61356
1 #!/bin/bash
2
3 #usage(){
4 # echo "CalcMem v1.15"
5 # echo "Written by Brian Bushnell, Doug Jacobsen, Alex Copeland, Bryce Foster"
6 # echo "Calculates available memory in megabytes"
7 # echo "Last modified December 17, 2019"
8 #}
9
10 #Also parses other Java flags
11 function parseXmx () {
12
13 local setxmx=0
14 local setxms=0
15
16 for arg in "$@"
17 do
18 if [[ "$arg" == "Xmx="* ]] || [[ "$arg" == "xmx="* ]]; then
19 z="-Xmx"${arg:4}
20 setxmx=1
21 elif [[ "$arg" == "-Xmx="* ]] || [[ "$arg" == "-xmx="* ]]; then
22 z="-Xmx"${arg:5}
23 setxmx=1
24 elif [[ "$arg" == -Xmx* ]] || [[ "$arg" == -xmx* ]]; then
25 #z="$arg"
26 z="-X"${arg:2}
27 setxmx=1
28 elif [[ "$arg" == Xmx* ]] || [[ "$arg" == xmx* ]]; then
29 #z="-$arg"
30 z="-X"${arg:1}
31 setxmx=1
32 elif [[ "$arg" == -Xms* ]]; then
33 z2="$arg"
34 setxms=1
35 elif [[ "$arg" == Xms* ]]; then
36 z2="-$arg"
37 setxms=1
38 elif [[ "$arg" == -da ]] || [[ "$arg" == -ea ]]; then
39 EA="$arg"
40 elif [[ "$arg" == da ]] || [[ "$arg" == ea ]]; then
41 EA="-$arg"
42 elif [[ "$arg" == ExitOnOutOfMemoryError ]] || [[ "$arg" == exitonoutofmemoryerror ]] || [[ "$arg" == eoom ]]; then
43 EOOM="-XX:+ExitOnOutOfMemoryError"
44 elif [[ "$arg" == -ExitOnOutOfMemoryError ]] || [[ "$arg" == -exitonoutofmemoryerror ]] || [[ "$arg" == -eoom ]]; then
45 EOOM="-XX:+ExitOnOutOfMemoryError"
46 elif [[ "$arg" == json ]] || [[ "$arg" == "json=t" ]] || [[ "$arg" == "json=true" ]] || [[ "$arg" == "format=json" ]]; then
47 json=1
48 elif [[ "$arg" == silent ]] || [[ "$arg" == "silent=t" ]] || [[ "$arg" == "silent=true" ]]; then
49 silent=1
50 fi
51 done
52
53 if [[ $setxmx == 1 ]] && [[ $setxms == 0 ]]; then
54 local substring=`echo $z| cut -d'x' -f 2`
55 z2="-Xms$substring"
56 setxms=1
57 elif [[ $setxmx == 0 ]] && [[ $setxms == 1 ]]; then
58 local substring=`echo $z2| cut -d's' -f 2`
59 z="-Xmx$substring"
60 setxmx=1
61 fi
62
63 set=$setxmx
64
65 }
66
67 function setEnvironment(){
68
69 EA="-ea"
70 EOOM=""
71
72 if [[ $SHIFTER_RUNTIME == 1 ]]; then
73 #Ignore NERSC_HOST
74 shifter=1
75 elif [ -v "$EC2_HOME" ]; then
76 #Let's assume this is the AWS taxonomy server...
77 PATH=/test1/binaries/bgzip:$PATH
78 PATH=/test1/binaries/lbzip2/bin:$PATH
79 PATH=/test1/binaries/sambamba:$PATH
80 #PATH=/test1/binaries/java/jdk-11.0.2/bin:$PATH
81 PATH=/test1/binaries/pigz2/pigz-2.4:$PATH
82 elif [ -z "$NERSC_HOST" ]; then
83 #Not NERSC; do nothing
84 :
85 else
86 PATH=/global/projectb/sandbox/gaag/bbtools/bgzip:$PATH
87 PATH=/global/projectb/sandbox/gaag/bbtools/lbzip2/bin:$PATH
88 PATH=/global/projectb/sandbox/gaag/bbtools/sambamba:$PATH
89 PATH=/global/projectb/sandbox/gaag/bbtools/java/jdk-11.0.2/bin:$PATH
90 PATH=/global/projectb/sandbox/gaag/bbtools/pigz2/pigz-2.4:$PATH
91
92 if [[ $NERSC_HOST == cori ]]; then
93
94 #module unload PrgEnv-intel
95 #module load PrgEnv-gnu/7.1
96 PATH=/global/projectb/sandbox/gaag/bbtools/samtools_cori/bin:$PATH
97 :
98 fi
99 fi
100 }
101
102 function freeRam(){
103 RAM=0;
104
105 #Memory is in kilobytes.
106 local defaultMem=3200000
107 if [ $# -gt 0 ]; then
108 defaultMem=$1;
109 case $defaultMem in
110 *g)
111 defaultMem=`echo $defaultMem| cut -d'g' -f 1`
112 defaultMem=$(( $defaultMem * $(( 1024 * 1024 )) ))
113 ;;
114 *m)
115 defaultMem=`echo $defaultMem| cut -d'm' -f 1`
116 defaultMem=$(( $defaultMem * 1024 ))
117 ;;
118 *k)
119 defaultMem=`echo $defaultMem| cut -d'k' -f 1`
120 ;;
121 esac
122 fi
123
124 local mult=84
125 if [ $# -gt 1 ]; then
126 mult=$2;
127 fi
128
129 #echo "mult = $mult" # percent of memory to allocate
130 #echo "default = $defaultMem"
131
132 local ulimit=$(ulimit -v)
133 ulimit="${ulimit:-0}"
134 if [ "$ulimit" = "unlimited" ]; then ulimit=0; fi
135 local x=$ulimit
136 #echo "x = ${x}" # normally ulimit -v
137
138 #local HOSTNAME=`hostname`
139 local sge_x=0
140 local slurm_x=$(( SLURM_MEM_PER_NODE * 1024 ))
141
142 if [[ $RQCMEM -gt 0 ]]; then
143 #echo "branch for manual memory"
144 x=$(( RQCMEM * 1024 ));
145 elif [ -e /proc/meminfo ]; then
146 local vfree=$(cat /proc/meminfo | awk -F: 'BEGIN{total=-1;used=-1} /^CommitLimit:/ { total=$2 }; /^Committed_AS:/ { used=$2 } END{ print (total-used) }')
147 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) }')
148
149 #echo "vfree = $vfree"
150 #echo "pfree = $pfree"
151 #echo "ulimit = $ulimit"
152
153 local x2=0;
154
155
156 if [ $vfree -gt 0 ] && [ $pfree -gt 0 ]; then
157 if [ $vfree -gt $pfree ]; then x2=$pfree;
158 else x2=$vfree; fi
159 elif [ $vfree -gt 0 ]; then x2=$vfree;
160 elif [ $pfree -gt 0 ]; then x2=$pfree;
161 fi
162
163 #echo $sge_x
164 #echo $slurm_x
165 #echo $x
166 #echo $x2
167
168 # set to SGE_HGR_RAMC or SLURM_MEM_PER_NODE value
169 if [ $sge_x -gt 0 ]; then
170 if [ $x2 -gt $sge_x ] || [ $x2 -eq 0 ]; then
171 x=$sge_x;
172 x2=$x;
173 fi
174 elif [ $slurm_x -gt 0 ]; then
175 if [ $x2 -gt $slurm_x ] || [ $x2 -eq 0 ]; then
176 x=$slurm_x;
177 x2=$x;
178 fi
179 fi
180
181 #echo "x = ${x}"
182 #echo "x2 = ${x2}"
183 #echo $vfree
184 #echo $pfree
185
186 if [ "$x" = "unlimited" ] || (("$x" > $x2)); then x=$x2; fi
187 if [ $x -lt 1 ]; then x=$x2; fi
188 fi
189
190 if [ $x -lt 1 ] || [[ $HOSTNAME == genepool* ]]; then
191 #echo "branch for unknown memory"
192 #echo $x
193 #echo "ram is unlimited"
194 RAM=$((defaultMem/1024))
195 echo "Max memory cannot be determined. Attempting to use $RAM MB." 1>&2
196 echo "If this fails, please add the -Xmx flag (e.g. -Xmx24g) to your command, " 1>&2
197 echo "or run this program qsubbed or from a qlogin session on Genepool, or set ulimit to an appropriate value." 1>&2
198 else
199 #echo "branch for known memory"
200 #echo "x = ${x}"
201 #echo "m = ${mult}"
202
203 # available (ram - 500k) * 85% / 1024kb = megs of ram to use
204 # not sure where this formula came from
205 RAM=$(( ((x-500000)*mult/100)/1024 ))
206 #echo $RAM
207 fi
208 #local z="-Xmx${RAM}m"
209 #echo $RAM
210 return 0
211 }
212
213 #freeRam "$@"