On Sun, Dec 01, 2019 at 03:22:01AM +1100, Jonathan Gray wrote: > On Sun, Dec 01, 2019 at 02:21:49AM +1100, Jonathan Gray wrote: > > map linux /proc/meminfo "MemAvailable" to uvm free pages > > On second thought HW_USERMEM64 may be a better fit here. > > "The amount of available non-kernel memory in bytes" > > Which ends up being physmem - uvmexp.wired (memory that can't be paged > out) instead of the current amount of free memory.
Along the lines of this: commit e9d96571d3670de169595c2009e7a49febd7cd2d Author: Jonathan Gray <j...@jsg.id.au> Date: Wed Nov 27 01:01:44 2019 +1100 anv: implement OpenBSD get_available_system_memory() Determine a value for how much memory a process can allocate without failing not exceeding amount of physical memory available to userspace. v2: use the smallest value of available non-kernel physical memory and per process data size limit. Signed-off-by: Jonathan Gray <j...@jsg.id.au> diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c index 2a2041535c5..eddcf727f8a 100644 --- a/src/intel/vulkan/anv_device.c +++ b/src/intel/vulkan/anv_device.c @@ -28,6 +28,7 @@ #ifdef __OpenBSD__ #include <sys/types.h> #include <sys/sysctl.h> +#include <sys/resource.h> #else #include <sys/sysinfo.h> #endif @@ -369,6 +370,22 @@ anv_physical_device_free_disk_cache(struct anv_physical_device *device) static uint64_t get_available_system_memory() { +#ifdef __OpenBSD__ + struct rlimit rl; + int mib[] = { CTL_HW, HW_USERMEM64 }; + int64_t mem_available; + size_t size = sizeof(mem_available); + + /* physmem - wired */ + if (sysctl(mib, 2, &mem_available, &size, NULL, 0) == -1) + return 0; + + /* fixed login.conf limit */ + if (getrlimit(RLIMIT_DATA, &rl) == -1) + return 0; + + return MIN2(mem_available, rl.rlim_cur); +#else char *meminfo = os_read_file("/proc/meminfo"); if (!meminfo) return 0; @@ -387,6 +404,7 @@ get_available_system_memory() free(meminfo); return 0; +#endif } static VkResult _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev