Commit 3d52f8b6 authored by Nilanjan Daw's avatar Nilanjan Daw

Deployment Aggressiveness parameter added

Support added for deployment aggressiveness parameter for implicit chains
parent 77e670aa
......@@ -37,6 +37,6 @@
},
"speculative_deployment": true,
"JIT_deployment": true,
"aggressivity": 0.6,
"aggressivity": 0.2,
"id_size": 20
}
\ No newline at end of file
......@@ -537,7 +537,10 @@ async function speculative_deployment(req, runtime) {
console.log("mle_path", branchInfo.mle_path);
if (branchInfo.mle_path && branchInfo.mle_path.length > 1) {
/**
* calculating the depth upto which speculative deployment will work
*/
let deployDepth = branchInfo.mle_path.length * constants.aggressivity
if (constants.JIT_deployment) {
/**
* Perform Speculation with JIT
......@@ -559,13 +562,16 @@ async function speculative_deployment(req, runtime) {
}),
headers: { 'Content-Type': 'application/json' },
})
/**
* Get the branch chain and the metrics data related to the MLE path
*/
Promise.all([metricsPromise, chainDataPromise])
.then(data => {
let metrics = new Map(), chainData = new Map()
let currentDelay = 0
data[0] = data[0].results, data[1] = data[1].results
for (let i = 0; i < branchInfo.mle_path.length; i++) {
for (let i = 0; i < deployDepth; i++) {
let id = data[0][i].id
metrics[id] = data[0][i].docs[0].ok
id = data[1][i].id
......@@ -575,17 +581,14 @@ async function speculative_deployment(req, runtime) {
}
currentDelay = metrics[branchInfo.mle_path[0].id].container.starttime
for (let i = 1; i < branchInfo.mle_path.length; i++) {
for (let i = 1; i < deployDepth; i++) {
let parent = chainData[branchInfo.mle_path[i - 1].id]
let self = branchInfo.mle_path[i].id
console.log(self);
console.log("parent branches", parent.branches.get(self)[1]);
currentDelay += parent.branches.get(self)[1]
let invokeTime = currentDelay - metrics[self].container.starttime
invokeTime = (invokeTime < 0)? 0: invokeTime
console.log(self, "invoke time:", currentDelay - metrics[self].container.starttime);
console.log("current delay", currentDelay, "start time", metrics[self].container.starttime);
console.log(self, "current delay", currentDelay, "invoke time:", currentDelay - metrics[self].container.starttime);
setTimeout(chainHandler.notify, invokeTime, "container", self)
}
......@@ -595,9 +598,11 @@ async function speculative_deployment(req, runtime) {
/**
* Perform Speculation without JIT
*/
let depthCounter = 0
for (let node of branchInfo.mle_path) {
// console.log(functionToResource);
if (depthCounter > deployDepth)
break
if (!functionToResource.has(node.node + runtime) && !db.has(node.node + runtime)) {
console.log("Deploying according to MLE path: ", node.node);
......@@ -608,6 +613,7 @@ async function speculative_deployment(req, runtime) {
producer.send(payload, function () { })
db.set(node.node + runtime, [])
}
depthCounter++
}
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment