Zabbix2.2.9 are normally acquired.
Zabbix2.4.1 the calculation has been changed.
?Zabbix2.2.9
if (NULL != zbx_GlobalMemoryStatusEx)
{
ms_ex.dwLength = sizeof(MEMORYSTATUSEX);
zbx_GlobalMemoryStatusEx(&ms_ex);
if (NULL == mode || '\0' == *mode || 0 == strcmp(mode, "total"))
SET_UI64_RESULT(result, ms_ex.ullTotalPageFile);
else if (0 == strcmp(mode, "free"))
SET_UI64_RESULT(result, ms_ex.ullAvailPageFile);
else if (0 == strcmp(mode, "used"))
SET_UI64_RESULT(result, ms_ex.ullTotalPageFile - ms_ex.ullAvailPageFile);
else
return SYSINFO_RET_FAIL;
}
else
{
GlobalMemoryStatus(&ms);
if (NULL == mode || '\0' == *mode || 0 == strcmp(mode, "total"))
SET_UI64_RESULT(result, ms.dwTotalPageFile);
else if (0 == strcmp(mode, "free"))
SET_UI64_RESULT(result, ms.dwAvailPageFile);
else if (0 == strcmp(mode, "used"))
SET_UI64_RESULT(result, ms.dwTotalPageFile - ms.dwAvailPageFile);
else
return SYSINFO_RET_FAIL;
}
?Zabbix2.4.1
if (NULL != zbx_GlobalMemoryStatusEx)
{
ms_ex.dwLength = sizeof(MEMORYSTATUSEX);
zbx_GlobalMemoryStatusEx(&ms_ex);
real_swap_total = ms_ex.ullTotalPageFile > ms_ex.ullTotalPhys ?
ms_ex.ullTotalPageFile - ms_ex.ullTotalPhys : 0;
real_swap_avail = ms_ex.ullAvailPageFile > ms_ex.ullAvailPhys ?
ms_ex.ullAvailPageFile - ms_ex.ullAvailPhys : 0;
}
else
{
GlobalMemoryStatus(&ms);
real_swap_total = ms.dwTotalPageFile > ms.dwTotalPhys ?
ms.dwTotalPageFile - ms.dwTotalPhys : 0;
real_swap_avail = ms.dwAvailPageFile > ms.dwAvailPhys ?
ms.dwAvailPageFile - ms.dwAvailPhys : 0;
}
if (real_swap_avail > real_swap_total)
real_swap_avail = real_swap_total;
if (NULL == mode || '\0' == *mode || 0 == strcmp(mode, "total"))
SET_UI64_RESULT(result, real_swap_total);
else if (0 == strcmp(mode, "free"))
SET_UI64_RESULT(result, real_swap_avail);
else if (0 == strcmp(mode, "pfree"))
SET_DBL_RESULT(result, (real_swap_avail / (double)real_swap_total) * 100.0);
else if (0 == strcmp(mode, "used"))
SET_UI64_RESULT(result, real_swap_total - real_swap_avail);
else
{
SET_MSG_RESULT(result, zbx_strdup(NULL, "Invalid second parameter."));
return SYSINFO_RET_FAIL;
}