[PATCH 0/1] MR2013: ntdll: Use MemAvailable field for free RAM estimation if available.
MemAvailable field in /proc/meminfo appeared in Linux kernel around 2015 and is recommended way to query free RAM. The way we currently estimate it consistently reports more free RAM available. The old way of estimating free RAM should still work if MemAvailable field is not there. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/2013
From: Paul Gofman <pgofman(a)codeweavers.com> --- dlls/ntdll/unix/system.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/dlls/ntdll/unix/system.c b/dlls/ntdll/unix/system.c index b9762fd278f..33e93bbdf32 100644 --- a/dlls/ntdll/unix/system.c +++ b/dlls/ntdll/unix/system.c @@ -1885,7 +1885,7 @@ static void get_performance_info( SYSTEM_PERFORMANCE_INFORMATION *info ) if ((fp = fopen("/proc/meminfo", "r"))) { - unsigned long long value; + unsigned long long value, mem_available = 0; char line[64]; while (fgets(line, sizeof(line), fp)) @@ -1902,8 +1902,11 @@ static void get_performance_info( SYSTEM_PERFORMANCE_INFORMATION *info ) freeram += value * 1024; else if (sscanf(line, "Cached: %llu", &value)) freeram += value * 1024; + else if (sscanf(line, "MemAvailable: %llu", &value)) + mem_available = value * 1024; } fclose(fp); + if (mem_available) freeram = mem_available; } } #elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || \ -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/2013
participants (2)
-
Paul Gofman -
Paul Gofman (@gofman)