Skip to content

Commit a9a5bcc

Browse files
Use CloudLatency in ilp_offloading_policy
1 parent b5e656c commit a9a5bcc

1 file changed

Lines changed: 21 additions & 7 deletions

File tree

internal/workflow/ilp_offloading_policy.go

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"strconv"
99
"time"
1010

11+
"github.com/serverledge-faas/serverledge/internal/config"
1112
"github.com/serverledge-faas/serverledge/internal/function"
1213
"github.com/serverledge-faas/serverledge/internal/metrics"
1314
"github.com/serverledge-faas/serverledge/internal/node"
@@ -216,14 +217,27 @@ func (policy *IlpOffloadingPolicy) Evaluate(r *Request, p *Progress) (Offloading
216217

217218
// Distances to Cloud and Data Store
218219
// TODO: we assume distance to Cloud == distance to DS (for all Edge nodes)
219-
distanceToCloud := 0.100 // TODO: measure Cloud latency (ping? or, retrieve from offloadingLatency )
220-
for _, n := range params.EdgeNodes {
221-
params.NodeLatency[tupleKey(n, CLOUD)] = distanceToCloud
222-
params.NodeLatency[tupleKey(CLOUD, n)] = distanceToCloud
223-
params.DSLatency[n] = distanceToCloud
220+
cloudAddress := config.GetString(config.CLOUD_URL, "")
221+
// TODO: what if we have multiple cloud nodes? one per region? CloudLatency already stores latency towards all of them
222+
distanceToCloud, found := registration.Reg.CloudLatency[cloudAddress]
223+
if found {
224+
for _, n := range params.EdgeNodes {
225+
params.NodeLatency[tupleKey(n, CLOUD)] = distanceToCloud
226+
params.NodeLatency[tupleKey(CLOUD, n)] = distanceToCloud
227+
params.DSLatency[n] = distanceToCloud
228+
}
229+
params.NodeLatency[tupleKey(CLOUD, CLOUD)] = 0.0
230+
params.DSLatency[CLOUD] = 0.001
231+
} else {
232+
// TODO: this branch is for testing purposes only. Remove it.
233+
for _, n := range params.EdgeNodes {
234+
params.NodeLatency[tupleKey(n, CLOUD)] = distanceToCloud
235+
params.NodeLatency[tupleKey(CLOUD, n)] = distanceToCloud
236+
params.DSLatency[n] = distanceToCloud
237+
}
238+
params.NodeLatency[tupleKey(CLOUD, CLOUD)] = 0.0
239+
params.DSLatency[CLOUD] = 0.001
224240
}
225-
params.NodeLatency[tupleKey(CLOUD, CLOUD)] = 0.0
226-
params.DSLatency[CLOUD] = 0.001
227241

228242
// Bandwidth (we assume identical)
229243
dsBandwidth := 100.0 // TODO: read from configuration?

0 commit comments

Comments
 (0)