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.
28 lines
977 B
C
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;
|
|
}
|