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