From 2d3333dd6b2522d2af7450178a538962f04f2ba8 Mon Sep 17 00:00:00 2001
From: Rohit Gupta <rohit.gupta@eurecom.fr>
Date: Mon, 26 Sep 2016 14:13:32 +0200
Subject: [PATCH] Gitlab CI: fix for cleaning memory only when critically low

---
 cmake_targets/autotests/tools/free_mem.bash | 22 ++++++++++++++++++++-
 cmake_targets/tools/build_helper            |  3 ++-
 2 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/cmake_targets/autotests/tools/free_mem.bash b/cmake_targets/autotests/tools/free_mem.bash
index 873d6121e7..f0a5b03d85 100755
--- a/cmake_targets/autotests/tools/free_mem.bash
+++ b/cmake_targets/autotests/tools/free_mem.bash
@@ -31,6 +31,26 @@
 # \author Navid Nikaein, Rohit Gupta
 
 # To free unused memory else test setup runs out of memory
-sudo -E bash -c 'echo 3 > /proc/sys/vm/drop_caches ' 
+
+mem_threshold=0.2 #If free memory is less than this threshold, then VM drop cache is called
+mem_tot=`vmstat -s -S k |grep "total memory" | awk '{print $1}'`
+mem_free=`vmstat -s -S k |grep "free memory" | awk '{print $1}'`
+
+mem_frac=`bc <<< "scale=4;$mem_free/$mem_tot"`
+echo $mem_frac
+#mem_frac=`bc <<< "scale=4;`echo $mem_free`/`echo $mem_tot`"`
+echo "Total Memory = $mem_tot k "
+echo "Free Memory = $mem_free k"
+echo "Fraction free memory = $mem_frac "
+
+res=`bc <<< "$mem_frac < 0.2" `
+
+echo "Comparison Result = $res"
+
+if [ "$res" == "1" ]
+then
+  echo "Free memory less than threshold = $mem_threshold"
+  sudo -E bash -c 'echo 3 > /proc/sys/vm/drop_caches ' 
+fi
 
 
diff --git a/cmake_targets/tools/build_helper b/cmake_targets/tools/build_helper
index 4ebe2be1b0..73df7cc640 100755
--- a/cmake_targets/tools/build_helper
+++ b/cmake_targets/tools/build_helper
@@ -284,7 +284,8 @@ check_install_additional_tools (){
 	wvdial \
         python-numpy \
     sshpass \
-    nscd
+    nscd \
+    bc
 
     $SUDO pip install paramiko
     $SUDO pip install pyroute2
-- 
GitLab