public synchronized SystemInfo execute() {
		SystemInfo systemInfo = new SystemInfo();
		systemInfo.setCollectTime(System.currentTimeMillis());
		try {
			BandWidth networkUsage = getNetworkUsage();
			BandWidth bandWidth = networkUsage.adjust(prev.getBandWidth());
			systemInfo.setBandWidth(bandWidth);
			systemInfo.setCpuUsedPercentage(getCpuUsedPercentage());
			systemInfo.setTotalMemory(getTotalMemory() / 1024L);
			systemInfo.setFreeMemory(getAvailableMemory() / 1024L);
			systemInfo.setSystem(isWindows() ? SystemInfo.System.WINDOW : SystemInfo.System.LINUX);
			systemInfo.setCustomValues(getCustomMonitorData());
		} catch (Throwable e) {
			LOGGER.error("Error while getting system perf data: {}", e.getMessage());
			LOGGER.debug("Error trace is ", e);
		}
		prev = systemInfo;
		return systemInfo;
	}
Execute the collector to get the system info model.

@return SystemInfo in current time
ngrinder-core/src/main/java/org/ngrinder/monitor/collector/SystemDataCollector.java