From 5c94ea4c29b7172cfe1e8f5c32432eba50cd4efe Mon Sep 17 00:00:00 2001 From: william Date: Mon, 25 Apr 2016 15:39:21 -0400 Subject: [PATCH 01/12] load stuff --- routes/api.js | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/routes/api.js b/routes/api.js index f01df4d..edf5c4e 100644 --- a/routes/api.js +++ b/routes/api.js @@ -7,10 +7,35 @@ var redis = require("redis"); var client = redis.createClient(); var request = require('request'); var lxc = require('../lxc'); +var os = require('os'); +var spawn = require('child_process').spawn; +var totalMem = os.totalmem(); var timeoutEvents = {}; var ip2name = {}; +var availContainers = []; +var usedContainers = []; + +var getFreeMem = function(callback){ + + var prc = spawn('free', []); + + prc.stdout.setEncoding('utf8'); + prc.stdout.on('data', function (data) { + var str = data.toString() + var lines = str.split(/\n/g); + for(var i = 0; i < lines.length; i++) { + lines[i] = lines[i].split(/\s+/); + } + var freeMem = Number(lines[2][3]); + return callback(freeMem); + }); + + prc.on('close', function (code) { + }); +}; + var lxcTimeout = function(ip, time){ var name = ip2name[ip]; @@ -147,4 +172,13 @@ router.post('/run/:ip?', function doRun(req, res, next){ }); +var startAll = function(){ + getFreeMem(function(freeMem){ + var usedMem = Math.round((freeMem/totalmem)*100); + console.log(usedMem); + }); +} + +startAll(); + module.exports = router; From 6acc3fba214d6c778a13cf106f2950543bd7707c Mon Sep 17 00:00:00 2001 From: william Date: Mon, 25 Apr 2016 15:40:49 -0400 Subject: [PATCH 02/12] load stuff --- routes/api.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routes/api.js b/routes/api.js index edf5c4e..ebf6b17 100644 --- a/routes/api.js +++ b/routes/api.js @@ -174,7 +174,7 @@ router.post('/run/:ip?', function doRun(req, res, next){ var startAll = function(){ getFreeMem(function(freeMem){ - var usedMem = Math.round((freeMem/totalmem)*100); + var usedMem = Math.round((freeMem/totalMem)*100); console.log(usedMem); }); } From d4522501267c4900b0611e44523a782cd030cb3c Mon Sep 17 00:00:00 2001 From: william Date: Mon, 25 Apr 2016 15:42:07 -0400 Subject: [PATCH 03/12] load stuff --- routes/api.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routes/api.js b/routes/api.js index ebf6b17..8bc7a55 100644 --- a/routes/api.js +++ b/routes/api.js @@ -175,7 +175,7 @@ router.post('/run/:ip?', function doRun(req, res, next){ var startAll = function(){ getFreeMem(function(freeMem){ var usedMem = Math.round((freeMem/totalMem)*100); - console.log(usedMem); + console.log('freeMem:', freeMem, 'totalmem', totalMem, 'usedMem:', usedMem); }); } From 2f8cf5c1203b379ac691bad684d9f69bb6537369 Mon Sep 17 00:00:00 2001 From: william Date: Mon, 25 Apr 2016 15:46:05 -0400 Subject: [PATCH 04/12] load stuff --- routes/api.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/routes/api.js b/routes/api.js index 8bc7a55..07d0f81 100644 --- a/routes/api.js +++ b/routes/api.js @@ -172,9 +172,10 @@ router.post('/run/:ip?', function doRun(req, res, next){ }); +// freeMem: 97700 totalmem 513818624 usedMem: 0 var startAll = function(){ getFreeMem(function(freeMem){ - var usedMem = Math.round((freeMem/totalMem)*100); + var usedMem = Math.round(((totalMem-freeMem)/totalMem)*100); console.log('freeMem:', freeMem, 'totalmem', totalMem, 'usedMem:', usedMem); }); } From 109db64634870b29aee72ddbafa65d304c04fb95 Mon Sep 17 00:00:00 2001 From: william Date: Mon, 25 Apr 2016 16:24:30 -0400 Subject: [PATCH 05/12] load stuff --- routes/api.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/routes/api.js b/routes/api.js index 07d0f81..8ba0534 100644 --- a/routes/api.js +++ b/routes/api.js @@ -173,10 +173,19 @@ router.post('/run/:ip?', function doRun(req, res, next){ }); // freeMem: 97700 totalmem 513818624 usedMem: 0 +// freeMem: 420,472 totalmem 513,818,624 usedMem: 100 var startAll = function(){ getFreeMem(function(freeMem){ - var usedMem = Math.round(((totalMem-freeMem)/totalMem)*100); - console.log('freeMem:', freeMem, 'totalmem', totalMem, 'usedMem:', usedMem); + var usedMemPrecent = Math.round((freeMem/totalMem)*100); + console.log('freeMem:', freeMem, 'totalmem', totalMem, 'usedMemPrecent:', usedMemPrecent); + if(usedMemPrecent < 81 ){ + var name = 'crunner-'+(Math.random()*100).toString().replace('.',''); + return lxc.startEphemeral(name, 'crunner', function(data){ + ip2name[data.ip] = name; + availContainers.push(data.ip); + return startAll(); + }); + } }); } From d93b43d37ff13324b08806d8f132e2d511151f18 Mon Sep 17 00:00:00 2001 From: william Date: Mon, 25 Apr 2016 16:36:48 -0400 Subject: [PATCH 06/12] load stuff --- routes/api.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routes/api.js b/routes/api.js index 8ba0534..e0a12ef 100644 --- a/routes/api.js +++ b/routes/api.js @@ -19,7 +19,7 @@ var usedContainers = []; var getFreeMem = function(callback){ - var prc = spawn('free', []); + var prc = spawn('free -b', []); prc.stdout.setEncoding('utf8'); prc.stdout.on('data', function (data) { From f809e57ba5a6bd83d1af52b20c94b548f807f6ed Mon Sep 17 00:00:00 2001 From: william Date: Mon, 25 Apr 2016 16:37:29 -0400 Subject: [PATCH 07/12] load stuff --- routes/api.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routes/api.js b/routes/api.js index e0a12ef..bf3fd24 100644 --- a/routes/api.js +++ b/routes/api.js @@ -19,7 +19,7 @@ var usedContainers = []; var getFreeMem = function(callback){ - var prc = spawn('free -b', []); + var prc = spawn('free', ['-b']); prc.stdout.setEncoding('utf8'); prc.stdout.on('data', function (data) { From ceadfcb24fd3a08bd8e1a385d82c50cac83866a7 Mon Sep 17 00:00:00 2001 From: william Date: Mon, 25 Apr 2016 16:44:48 -0400 Subject: [PATCH 08/12] load stuff --- routes/api.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routes/api.js b/routes/api.js index bf3fd24..a680917 100644 --- a/routes/api.js +++ b/routes/api.js @@ -176,7 +176,7 @@ router.post('/run/:ip?', function doRun(req, res, next){ // freeMem: 420,472 totalmem 513,818,624 usedMem: 100 var startAll = function(){ getFreeMem(function(freeMem){ - var usedMemPrecent = Math.round((freeMem/totalMem)*100); + var usedMemPrecent = Math.round(( (totalMem-freeMem) /totalMem)*100); console.log('freeMem:', freeMem, 'totalmem', totalMem, 'usedMemPrecent:', usedMemPrecent); if(usedMemPrecent < 81 ){ var name = 'crunner-'+(Math.random()*100).toString().replace('.',''); From f82968fbbebb2d52c8eb2aed56004321f272ae2f Mon Sep 17 00:00:00 2001 From: william Date: Mon, 25 Apr 2016 16:46:32 -0400 Subject: [PATCH 09/12] load stuff --- routes/api.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/routes/api.js b/routes/api.js index a680917..b48098c 100644 --- a/routes/api.js +++ b/routes/api.js @@ -176,15 +176,17 @@ router.post('/run/:ip?', function doRun(req, res, next){ // freeMem: 420,472 totalmem 513,818,624 usedMem: 100 var startAll = function(){ getFreeMem(function(freeMem){ - var usedMemPrecent = Math.round(( (totalMem-freeMem) /totalMem)*100); - console.log('freeMem:', freeMem, 'totalmem', totalMem, 'usedMemPrecent:', usedMemPrecent); - if(usedMemPrecent < 81 ){ + var usedMemPercent = Math.round(( (totalMem-freeMem) /totalMem)*100); + console.log('freeMem:', freeMem, 'totalmem', totalMem, 'usedMemPercent:', usedMemPercent); + if(usedMemPercent < 81 ){ var name = 'crunner-'+(Math.random()*100).toString().replace('.',''); return lxc.startEphemeral(name, 'crunner', function(data){ ip2name[data.ip] = name; availContainers.push(data.ip); return startAll(); }); + }else{ + console.log('using', usedMemPercent, 'percent memory, stopping container creation!'); } }); } From 280a90a7ebb47dbd5977673f219976323432e9a5 Mon Sep 17 00:00:00 2001 From: william Date: Mon, 25 Apr 2016 16:50:20 -0400 Subject: [PATCH 10/12] load stuff --- routes/api.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routes/api.js b/routes/api.js index b48098c..ee465eb 100644 --- a/routes/api.js +++ b/routes/api.js @@ -186,7 +186,7 @@ var startAll = function(){ return startAll(); }); }else{ - console.log('using', usedMemPercent, 'percent memory, stopping container creation!'); + console.log('using', usedMemPercent, 'percent memory, stopping container creation!' availContainers.length, 'created'); } }); } From c42cf797e7023ab432a3748c87549fc407c68f6b Mon Sep 17 00:00:00 2001 From: william Date: Mon, 25 Apr 2016 16:51:27 -0400 Subject: [PATCH 11/12] load stuff --- routes/api.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routes/api.js b/routes/api.js index ee465eb..3bd117e 100644 --- a/routes/api.js +++ b/routes/api.js @@ -186,7 +186,7 @@ var startAll = function(){ return startAll(); }); }else{ - console.log('using', usedMemPercent, 'percent memory, stopping container creation!' availContainers.length, 'created'); + console.log('using', usedMemPercent, 'percent memory, stopping container creation!', availContainers.length, 'created'); } }); } From c742c8fb7a62cf26a5efb5e20f58f5bcc2fb2a10 Mon Sep 17 00:00:00 2001 From: william Date: Mon, 25 Apr 2016 16:56:57 -0400 Subject: [PATCH 12/12] load stuff --- routes/api.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/routes/api.js b/routes/api.js index 3bd117e..5b3491e 100644 --- a/routes/api.js +++ b/routes/api.js @@ -162,11 +162,7 @@ router.post('/run/:ip?', function doRun(req, res, next){ if(found){ return runner(req, res, ip) }else{ - var name = 'crunner-'+(Math.random()*100).toString().replace('.',''); - return lxc.startEphemeral(name, 'crunner', function(data){ - ip2name[data.ip] = name; - return runner(req, res, data.ip); - }); + return runner(req, res, availContainers.pop()); } });