Files
ds4/tests/test_linux_memory.c
T
Salvatore Sanfilippo 9d9e1296d2 Budget ROCm allocations against usable pinned memory
Exclude CMA pages from host availability, guard pinned and integrated-GPU allocations, and reserve space for the OS and required runtime buffers. Defer optional Q8 expansion and avoid wasting large model arenas.

Add memory parsing and allocation-admission tests. Focused Strix checks cover matched Flash/DSpark, resident GLM and automatic, oversized and one-expert SSD cache budgets.
2026-09-05 19:41:28 +02:00

28 lines
977 B
C

#include <assert.h>
#include <string.h>
#include "ds4_linux_memory.h"
static void memory_case(const char *text, bool valid, uint64_t expected) {
FILE *fp = tmpfile();
assert(fp);
assert(fwrite(text, 1, strlen(text), fp) == strlen(text));
rewind(fp);
uint64_t bytes = 123;
assert(ds4_linux_nonmovable_memory_parse(fp, &bytes) == valid);
if (valid) assert(bytes == expected);
fclose(fp);
}
int main(void) {
memory_case("MemAvailable: 100 kB\n", true, 100 * 1024);
memory_case("MemAvailable: 100 kB\nCmaFree: 30 kB\n", true, 70 * 1024);
memory_case("CmaTotal: 0 kB\nCmaFree: 30 kB\nMemAvailable: 100 kB\n",
true, 70 * 1024);
memory_case("MemAvailable: 10 kB\nCmaFree: 30 kB\n", true, 0);
memory_case("MemAvailable: 0 kB\n", true, 0);
memory_case("CmaFree: 30 kB\n", false, 0);
memory_case("MemAvailable: 18446744073709551615 kB\n", false, 0);
puts("Linux nonmovable memory: PASS");
return 0;
}