/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.monitoring.system.api; import java.util.List; import java.util.Map; import org.hyperic.sigar.ProcState; import de.rcenvironment.core.monitoring.system.api.model.ProcessInformation; /** * A service for fetching system monitoring data for the local instance's host system. The available methods allow to get system resource * information, kill processes and their children. * * @author David Scholz * @author Robert Mischke */ public interface SystemMonitoringDataService { /** * Get total system CPU usage in percent. Guaranteed to be either 0%..100%, or NaN in case of failure. * * @throws OperatingSystemException if getting total cpu usage fails. * @return total system cpu usage. */ double getTotalCPUUsage() throws OperatingSystemException; /** * Get CPU usage of a specific process in percent. * * @param pid process id. * @throws OperatingSystemException if getting cpu usage fails. * @return cpu usage of specific process. */ double getProcessCPUUsage(Long pid) throws OperatingSystemException; /** * Get CPU Idle. * * @throws OperatingSystemException if getting cpu idle fails. * @return cpu idle. */ double getReportedCPUIdle() throws OperatingSystemException; /** * Get the total available system RAM in MB. * * @throws OperatingSystemException if getting system ram fails. * @return total system available system RAM. */ long getTotalSystemRAM() throws OperatingSystemException; /** * Get used RAM of a specific process in MB. * * @param pid process id of specific process. * @throws OperatingSystemException if getting used ram of specific process fails. * @return ram usage of a specific process. */ long getProcessRAMUsage(Long pid) throws OperatingSystemException; /** * Get used RAM as an absolute value. Note that this value may be calculated from a percentage, so accuracy may be limited. * * @throws OperatingSystemException if getting total ram usage fails. * @return used ram in percent. */ long getTotalUsedRAM() throws OperatingSystemException; /** * The amount of available/free RAM in MiB. Note that this value may be calculated from a percentage, so accuracy may be limited. * * @throws OperatingSystemException on failure to read system data * @return available/free physical RAM in MiB */ long getFreeRAM() throws OperatingSystemException; /** * Get used RAM in percent, represented as 0..1. * * @throws OperatingSystemException if getting total ram usage fails. * @return used ram in percent. */ double getTotalUsedRAMPercentage() throws OperatingSystemException; /** * Get used RAM of a specific process in percent, represented as 0..1. * * @param pid process id of a specific process. * @throws OperatingSystemException if getting ram usage of specific process fails. * @return used ram of a specific process in percent. */ double getProcessRAMPercentage(Long pid) throws OperatingSystemException; /** * Get local disk usage in kiB. * * @return local disk usage. * @throws OperatingSystemException if getting local disk usage fails. */ long getUsedLocalDiskSpace() throws OperatingSystemException; /** * Get free local disk space in kiB. * * @throws OperatingSystemException if getting local free disk space fails. * @return free local disk space. */ long getFreeLocalDiskSpace() throws OperatingSystemException; /** * Get a map of all running processes. PID is mapped to the process name. * * @throws OperatingSystemException if getting process list fails. * @return a list of pids. */ Map<Long, String> getProcesses() throws OperatingSystemException; /** * Get a map of all children of a specific process. PID is mapped to the process name. * * @param ppid process id of a parent process. * @throws OperatingSystemException if fetching the child processes fails * @return a list of pids. Returns null if there are no children. */ Map<Long, String> getChildProcessesAndIds(Long ppid) throws OperatingSystemException; /** * Kills a specific process. * * @param pid process id of process which should be killed. * @param force Force the process to be killed with signum -9. * @throws OperatingSystemException if killing a specific process fails. */ void kill(Long pid, Boolean force) throws OperatingSystemException; /** * Get detail information about the given process' child processes. * * @param pid the ID of the parent process * @return a list of information wrappers for each child process * @throws OperatingSystemException if fetching the child processes fails */ List<ProcessInformation> getFullChildProcessInformation(long pid) throws OperatingSystemException; /** * Internal method: Get the {@link ProcState} object for a given process ID. * * @param pid the PID of the target process * @return the state object * @throws OperatingSystemException on failure */ ProcState fetchProcessState(long pid) throws OperatingSystemException; }