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