FreeBSD Bugzilla – Attachment 186154 Details for
Bug 211432
emulators/virtualbox-ose: wrong free memory calculation
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
without PagesMemInactive
virtualbox-ose.patch (text/plain), 5.11 KB, created by
Ivan Rozhuk
on 2017-09-08 01:28:59 UTC
(
hide
)
Description:
without PagesMemInactive
Filename:
MIME Type:
Creator:
Ivan Rozhuk
Created:
2017-09-08 01:28:59 UTC
Size:
5.11 KB
patch
obsolete
>Index: emulators/virtualbox-ose/files/patch-src_VBox_Main_src-server_freebsd_PerformanceFreeBSD.cpp >=================================================================== >--- emulators/virtualbox-ose/files/patch-src_VBox_Main_src-server_freebsd_PerformanceFreeBSD.cpp (nonexistent) >+++ emulators/virtualbox-ose/files/patch-src_VBox_Main_src-server_freebsd_PerformanceFreeBSD.cpp (working copy) >@@ -0,0 +1,66 @@ >+--- src/VBox/Main/src-server/freebsd/PerformanceFreeBSD.cpp.orig 2017-07-27 13:18:27 UTC >++++ src/VBox/Main/src-server/freebsd/PerformanceFreeBSD.cpp >+@@ -58,45 +58,36 @@ >+ >+ int CollectorFreeBSD::getHostMemoryUsage(ULONG *total, ULONG *used, ULONG *available) >+ { >+- int rc = VINF_SUCCESS; >+ u_long cbMemPhys = 0; >+ u_int cPagesMemFree = 0; >+- u_int cPagesMemInactive = 0; >+ u_int cPagesMemCached = 0; >+ u_int cPagesMemUsed = 0; >+ int cbPage = 0; >+- size_t cbParameter = sizeof(cbMemPhys); >+- int cProcessed = 0; >+- >+- if (!sysctlbyname("hw.physmem", &cbMemPhys, &cbParameter, NULL, 0)) >+- cProcessed++; >++ size_t cbParameter; >+ >++ cbParameter = sizeof(cbMemPhys); >++ if (sysctlbyname("hw.physmem", &cbMemPhys, &cbParameter, NULL, 0)) >++ return VERR_NOT_SUPPORTED; >+ cbParameter = sizeof(cPagesMemFree); >+- if (!sysctlbyname("vm.stats.vm.v_free_count", &cPagesMemFree, &cbParameter, NULL, 0)) >+- cProcessed++; >++ if (sysctlbyname("vm.stats.vm.v_free_count", &cPagesMemFree, &cbParameter, NULL, 0)) >++ return VERR_NOT_SUPPORTED; >+ cbParameter = sizeof(cPagesMemUsed); >+- if (!sysctlbyname("vm.stats.vm.v_active_count", &cPagesMemUsed, &cbParameter, NULL, 0)) >+- cProcessed++; >+- cbParameter = sizeof(cPagesMemInactive); >+- if (!sysctlbyname("vm.stats.vm.v_inactive_count", &cPagesMemInactive, &cbParameter, NULL, 0)) >+- cProcessed++; >++ if (sysctlbyname("vm.stats.vm.v_active_count", &cPagesMemUsed, &cbParameter, NULL, 0)) >++ return VERR_NOT_SUPPORTED; >++#if __FreeBSD_version < 1200016 >+ cbParameter = sizeof(cPagesMemCached); >+- if (!sysctlbyname("vm.stats.vm.v_cache_count", &cPagesMemCached, &cbParameter, NULL, 0)) >+- cProcessed++; >++ if (sysctlbyname("vm.stats.vm.v_cache_count", &cPagesMemCached, &cbParameter, NULL, 0)) >++ return VERR_NOT_SUPPORTED; >++#endif >+ cbParameter = sizeof(cbPage); >+- if (!sysctlbyname("hw.pagesize", &cbPage, &cbParameter, NULL, 0)) >+- cProcessed++; >++ if (sysctlbyname("hw.pagesize", &cbPage, &cbParameter, NULL, 0)) >++ return VERR_NOT_SUPPORTED; >+ >+- if (cProcessed == 6) >+- { >+- *total = cbMemPhys / _1K; >+- *used = cPagesMemUsed * (cbPage / _1K); >+- *available = (cPagesMemFree + cPagesMemInactive + cPagesMemCached ) * (cbPage / _1K); >+- } >+- else >+- rc = VERR_NOT_SUPPORTED; >++ *total = cbMemPhys / _1K; >++ *used = (ULONG64)cPagesMemUsed * (cbPage / _1K); >++ *available = ((ULONG64)cPagesMemFree + cPagesMemCached) * (cbPage / _1K); >+ >+- return rc; >++ return VINF_SUCCESS; >+ } >+ >+ int CollectorFreeBSD::getProcessCpuLoad(RTPROCESS process, ULONG *user, ULONG *kernel) >Index: emulators/virtualbox-ose/files/patch-src_VBox_Runtime_r3_freebsd_systemmem-freebsd.cpp >=================================================================== >--- emulators/virtualbox-ose/files/patch-src_VBox_Runtime_r3_freebsd_systemmem-freebsd.cpp (nonexistent) >+++ emulators/virtualbox-ose/files/patch-src_VBox_Runtime_r3_freebsd_systemmem-freebsd.cpp (working copy) >@@ -0,0 +1,41 @@ >+--- src/VBox/Runtime/r3/freebsd/systemmem-freebsd.cpp.orig 2017-07-27 13:18:46 UTC >++++ src/VBox/Runtime/r3/freebsd/systemmem-freebsd.cpp >+@@ -63,9 +63,7 @@ >+ >+ int rc = VINF_SUCCESS; >+ u_int cPagesMemFree = 0; >+- u_int cPagesMemInactive = 0; >+ u_int cPagesMemCached = 0; >+- u_int cPagesMemUsed = 0; >+ int cbPage = 0; >+ size_t cbParameter; >+ int cProcessed = 0; >+@@ -73,25 +71,19 @@ >+ cbParameter = sizeof(cPagesMemFree); >+ if (sysctlbyname("vm.stats.vm.v_free_count", &cPagesMemFree, &cbParameter, NULL, 0)) >+ rc = RTErrConvertFromErrno(errno); >+- cbParameter = sizeof(cPagesMemUsed); >+- if ( RT_SUCCESS(rc) >+- && sysctlbyname("vm.stats.vm.v_active_count", &cPagesMemUsed, &cbParameter, NULL, 0)) >+- rc = RTErrConvertFromErrno(errno); >+- cbParameter = sizeof(cPagesMemInactive); >+- if ( RT_SUCCESS(rc) >+- && sysctlbyname("vm.stats.vm.v_inactive_count", &cPagesMemInactive, &cbParameter, NULL, 0)) >+- rc = RTErrConvertFromErrno(errno); >++#if __FreeBSD_version < 1200016 >+ cbParameter = sizeof(cPagesMemCached); >+ if ( RT_SUCCESS(rc) >+ && sysctlbyname("vm.stats.vm.v_cache_count", &cPagesMemCached, &cbParameter, NULL, 0)) >+ rc = RTErrConvertFromErrno(errno); >++#endif >+ cbParameter = sizeof(cbPage); >+ if ( RT_SUCCESS(rc) >+ && sysctlbyname("hw.pagesize", &cbPage, &cbParameter, NULL, 0)) >+ rc = RTErrConvertFromErrno(errno); >+ >+ if (RT_SUCCESS(rc)) >+- *pcb = (cPagesMemFree + cPagesMemInactive + cPagesMemCached ) * cbPage; >++ *pcb = ((uint64_t)cPagesMemFree + cPagesMemCached) * cbPage; >+ >+ return rc; >+ }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 211432
:
186120
|
186123
|
186140
|
186142
|
186149
| 186154