This is an automated email from the ASF dual-hosted git repository. bmahler pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mesos.git
commit c966e89e967a5c55a79646037614521a1c1c8557 Author: James Wright <[email protected]> AuthorDate: Wed May 20 19:20:39 2020 -0400 Fixed FreeBSD memory detection. See MESOS-10104. This closes #365 --- 3rdparty/stout/include/stout/os/freebsd.hpp | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/3rdparty/stout/include/stout/os/freebsd.hpp b/3rdparty/stout/include/stout/os/freebsd.hpp index f807848..bd8da53 100644 --- a/3rdparty/stout/include/stout/os/freebsd.hpp +++ b/3rdparty/stout/include/stout/os/freebsd.hpp @@ -88,17 +88,28 @@ inline Try<Memory> memory() const size_t pageSize = os::pagesize(); unsigned int freeCount; - size_t length = sizeof(freeCount); - + size_t freeCountLength = sizeof(freeCount); if (sysctlbyname( - "vm.stats.v_free_count", + "vm.stats.vm.v_free_count", &freeCount, - &length, + &freeCountLength, nullptr, 0) != 0) { return ErrnoError(); } - memory.free = Bytes(freeCount * pageSize); + + unsigned int inactiveCount; + size_t inactiveCountLength = sizeof(inactiveCount); + if (sysctlbyname( + "vm.stats.vm.v_inactive_count", + &inactiveCount, + &inactiveCountLength, + nullptr, + 0) != 0) { + return ErrnoError(); + } + + memory.free = Bytes((freeCount + inactiveCount) * pageSize); int totalBlocks = 0; int usedBlocks = 0; @@ -112,8 +123,9 @@ inline Try<Memory> memory() // FreeBSD supports multiple swap devices. Here we sum across all of them. struct xswdev xswd; size_t xswdSize = sizeof(xswd); - int* mibDevice = &(mib[mibSize + 1]); - for (*mibDevice = 0; ; (*mibDevice)++) { + for (int ndev = 0; ; ndev++) { + mib[mibSize] = ndev; + if (::sysctl(mib, 3, &xswd, &xswdSize, nullptr, 0) != 0) { if (errno == ENOENT) { break;
