Skip to content

Commit 3b70b3e

Browse files
grussorussomatnar
andcommitted
Fix: minor issues with architecture-awareness integration
Co-authored-by: Matteo Nardelli <matnar@gmail.com>
1 parent 0433c38 commit 3b70b3e

5 files changed

Lines changed: 18 additions & 20 deletions

File tree

internal/lb/architectureAwareLb.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -216,11 +216,11 @@ func (b *ArchitectureAwareBalancer) AddTarget(t *middleware.ProxyTarget) bool {
216216
// Every time we add a node, we set the information about its available memory
217217
if nodeInfo != nil {
218218
totalMemoryMb := nodeInfo.TotalMemory
219-
freeMemoryMB := totalMemoryMb - nodeInfo.UsedMemory
219+
availMemoryMb := nodeInfo.AvailableMemory
220220
freeCpu := nodeInfo.TotalCPU - nodeInfo.UsedCPU
221221
// Update will update the freeMemory only if the information in nodeInfo is fresher than what we
222222
// already have in the NodeMetrics cache.
223-
NodeMetrics.Update(t.Name, freeMemoryMB, totalMemoryMb, nodeInfo.LastUpdateTime, freeCpu)
223+
NodeMetrics.Update(t.Name, availMemoryMb, totalMemoryMb, nodeInfo.LastUpdateTime, freeCpu)
224224
}
225225
// Decide if target belongs to ARM or x86
226226
if t.Meta["arch"] == container.ARM {
Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,22 @@ import (
1313
"github.com/serverledge-faas/serverledge/internal/function"
1414
)
1515

16-
type ArchitectureUNawareBalancer struct {
16+
type ArchitectureUnawareBalancer struct {
1717
mu sync.Mutex
1818

1919
// instead of classic lists we will use hashRings (see hashRing.go) to implement a consistent hashing technique
2020
hashRing *HashRing
2121
}
2222

23-
// NewArchitectureUNawareBalancer Constructor
24-
func NewArchitectureUNawareBalancer(targets []*middleware.ProxyTarget) *ArchitectureUNawareBalancer {
23+
// NewArchitectureUnawareBalancer Constructor
24+
func NewArchitectureUnawareBalancer(targets []*middleware.ProxyTarget) *ArchitectureUnawareBalancer {
2525

2626
// REPLICAS is the number of times each physical node will appear in the hash ring. This is done to improve how
2727
// virtual nodes (i.e.: replicas of each physical node) are distributed over the ring, to reduce variation.
2828
REPLICAS := config.GetInt(config.REPLICAS, 128)
2929
log.Printf("Running ArchitectureUNawareLB with %d replicas per node in the hash ring\n", REPLICAS)
3030

31-
b := &ArchitectureUNawareBalancer{
31+
b := &ArchitectureUnawareBalancer{
3232
hashRing: NewHashRing(REPLICAS),
3333
}
3434

@@ -49,7 +49,7 @@ func NewArchitectureUNawareBalancer(targets []*middleware.ProxyTarget) *Architec
4949
}
5050

5151
// Next Used by Echo Proxy middleware to select the next target dynamically
52-
func (b *ArchitectureUNawareBalancer) Next(c echo.Context) *middleware.ProxyTarget {
52+
func (b *ArchitectureUnawareBalancer) Next(c echo.Context) *middleware.ProxyTarget {
5353
b.mu.Lock()
5454
defer b.mu.Unlock()
5555

@@ -76,19 +76,19 @@ func (b *ArchitectureUNawareBalancer) Next(c echo.Context) *middleware.ProxyTarg
7676
}
7777

7878
// AddTarget Echo requires this method for dynamic load-balancing. It simply inserts a new node in the respective ring.
79-
func (b *ArchitectureUNawareBalancer) AddTarget(t *middleware.ProxyTarget) bool {
79+
func (b *ArchitectureUnawareBalancer) AddTarget(t *middleware.ProxyTarget) bool {
8080
b.mu.Lock()
8181
defer b.mu.Unlock()
8282

8383
nodeInfo := GetSingleTargetInfo(t)
8484
// Every time we add a node, we set the information about its available memory
8585
if nodeInfo != nil {
8686
totalMemoryMb := nodeInfo.TotalMemory
87-
freeMemoryMB := totalMemoryMb - nodeInfo.UsedMemory
87+
availableMemoryMb := nodeInfo.AvailableMemory
8888
freeCpu := nodeInfo.TotalCPU - nodeInfo.UsedCPU
8989
// Update will update the freeMemory only if the information in nodeInfo is fresher than what we
9090
// already have in the NodeMetrics cache.
91-
NodeMetrics.Update(t.Name, freeMemoryMB, totalMemoryMb, nodeInfo.LastUpdateTime, freeCpu)
91+
NodeMetrics.Update(t.Name, availableMemoryMb, totalMemoryMb, nodeInfo.LastUpdateTime, freeCpu)
9292
}
9393

9494
b.hashRing.Add(t)
@@ -97,7 +97,7 @@ func (b *ArchitectureUNawareBalancer) AddTarget(t *middleware.ProxyTarget) bool
9797
}
9898

9999
// RemoveTarget Echo requires this method to remove a target by name
100-
func (b *ArchitectureUNawareBalancer) RemoveTarget(name string) bool {
100+
func (b *ArchitectureUnawareBalancer) RemoveTarget(name string) bool {
101101
b.mu.Lock()
102102
defer b.mu.Unlock()
103103

internal/lb/lb.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ func newBalancer(targets []*middleware.ProxyTarget) (middleware.ProxyBalancer, b
3131

3232
}
3333

34-
return NewArchitectureUNawareBalancer(targets), false
34+
return NewArchitectureUnawareBalancer(targets), false
3535
}
3636

3737
func StartReverseProxy(e *echo.Echo, region string) {
@@ -179,9 +179,9 @@ func updateTargets(balancer middleware.ProxyBalancer, region string) {
179179
nodeInfo := GetSingleTargetInfo(curr)
180180
if nodeInfo != nil {
181181
totalMemory := nodeInfo.TotalMemory
182-
freeMemoryMB := totalMemory - nodeInfo.UsedMemory
182+
availableMemoryMb := nodeInfo.AvailableMemory
183183
freeCpu := nodeInfo.TotalCPU - nodeInfo.UsedCPU
184-
NodeMetrics.Update(curr.Name, freeMemoryMB, totalMemory, nodeInfo.LastUpdateTime, freeCpu)
184+
NodeMetrics.Update(curr.Name, availableMemoryMb, totalMemory, nodeInfo.LastUpdateTime, freeCpu)
185185
}
186186

187187
}
@@ -202,9 +202,9 @@ func updateTargets(balancer middleware.ProxyBalancer, region string) {
202202
nodeInfo := GetSingleTargetInfo(curr)
203203
if nodeInfo != nil {
204204
totalMemory := nodeInfo.TotalMemory
205-
freeMemoryMB := totalMemory - nodeInfo.UsedMemory
205+
availableMemoryMb := nodeInfo.AvailableMemory
206206
freeCpu := nodeInfo.TotalCPU - nodeInfo.UsedCPU
207-
NodeMetrics.Update(curr.Name, freeMemoryMB, totalMemory, nodeInfo.LastUpdateTime, freeCpu)
207+
NodeMetrics.Update(curr.Name, availableMemoryMb, totalMemory, nodeInfo.LastUpdateTime, freeCpu)
208208
}
209209
}
210210
}

internal/scheduling/execution.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package scheduling
22

33
import (
44
"fmt"
5-
"github.com/serverledge-faas/serverledge/internal/node"
65
"log"
76
"time"
87

internal/scheduling/offloading.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,8 @@ func pickEdgeNodeForOffloading(r *scheduledRequest) (url string, err error) {
4747
if !ok {
4848
continue
4949
}
50-
availableMemory := status.TotalMemory - status.UsedMemory
51-
if r.Fun.SupportsArch(nodeReg.Arch) && availableMemory > maxMem {
52-
maxMem = availableMemory
50+
if r.Fun.SupportsArch(nodeReg.Arch) && status.AvailableMemory > maxMem {
51+
maxMem = status.AvailableMemory
5352
bestNode = &nodeReg
5453
}
5554
}

0 commit comments

Comments
 (0)