Skip to content

Commit f83ee02

Browse files
committed
mantle/kola/harness: switch strategy for warning about memory starvation
Let's pass in a boolean and also warn on the first wait and then periodically after that.
1 parent b1bf83c commit f83ee02

1 file changed

Lines changed: 11 additions & 7 deletions

File tree

mantle/kola/harness.go

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1747,7 +1747,7 @@ func makeNonExclusiveTest(bucket int, tests []*register.Test, flight platform.Fl
17471747
return nonExclusiveWrapper
17481748
}
17491749

1750-
func reserveMemoryCountForTest(t *register.Test, needed int, logger func(format string, args ...interface{})) bool {
1750+
func reserveMemoryCountForTest(t *register.Test, needed int, warnOnWait bool) bool {
17511751
reservedMemoryCountMutex.Lock()
17521752
defer reservedMemoryCountMutex.Unlock()
17531753
avail, err := system.GetCurrentMemAvailableMiB()
@@ -1762,10 +1762,14 @@ func reserveMemoryCountForTest(t *register.Test, needed int, logger func(format
17621762
reservedMemoryCountMiB += needed
17631763
reserved := reservedMemoryCountMiB
17641764
t.ReservedMemoryCountMiB = needed
1765-
logger("Reserved %d MiB for %s (available: %d MiB, reserved total: %d MiB)",
1765+
plog.Debugf("Reserved %d MiB for %s (available: %d MiB, reserved total: %d MiB)",
17661766
needed, t.Name, avail, reserved)
17671767
return true
17681768
}
1769+
logger := plog.Debugf
1770+
if warnOnWait {
1771+
logger = plog.Warningf
1772+
}
17691773
logger("Waiting on memory to run %s: need %d MiB, effective available %d MiB (system: %d MiB, reserved: %d MiB)",
17701774
t.Name, needed, effective, avail, reservedMemoryCountMiB)
17711775
return false
@@ -1785,15 +1789,15 @@ func waitForMemory(h *harness.H, flight platform.Flight, t *register.Test) {
17851789
if flight.Platform() == "qemu" {
17861790
needed := getNeededMemoryMiB(t)
17871791
start := time.Now()
1788-
logger := plog.Debugf
1789-
for !reserveMemoryCountForTest(t, needed, logger) {
1790-
// After a period of time switch the logger so we get some
1792+
warnOnWait := true // warn on first wait
1793+
for !reserveMemoryCountForTest(t, needed, warnOnWait) {
1794+
// After a period of time switch to log a warning so we get some
17911795
// info even if debug isn't turned on.
17921796
if time.Since(start) > 5*time.Minute {
1793-
logger = plog.Warningf
1797+
warnOnWait = true
17941798
start = time.Now() // reset counter
17951799
} else {
1796-
logger = plog.Debugf
1800+
warnOnWait = false
17971801
}
17981802
// sleep between 0 and 20 seconds and try again
17991803
time.Sleep(time.Duration(rand.Intn(20)) * time.Second)

0 commit comments

Comments
 (0)