Class OsProbe

java.lang.Object
org.elasticsearch.monitor.os.OsProbe

public class OsProbe extends Object
The OsProbe class retrieves information about the physical and swap size of the machine memory, as well as the system load average and cpu load.

In some exceptional cases, it's possible the underlying native methods used by getFreePhysicalMemorySize(), getTotalPhysicalMemorySize(), getFreeSwapSpaceSize(), and getTotalSwapSpaceSize() can return a negative value. Because of this, we prevent those methods from returning negative values, returning 0 instead.

The OS can report a negative number in a number of cases:

  • Non-supported OSes (HP-UX, or AIX)
  • A failure of macOS to initialize host statistics
  • An OS that does not support the _SC_PHYS_PAGES or _SC_PAGE_SIZE flags for the sysconf() linux kernel call
  • An overflow of the product of _SC_PHYS_PAGES and _SC_PAGE_SIZE
  • An error case retrieving these values from a linux kernel
  • A non-standard libc implementation not implementing the required values

For a more exhaustive explanation, see https://github.com/elastic/elasticsearch/pull/42725

  • Method Details

    • getFreePhysicalMemorySize

      public long getFreePhysicalMemorySize()
      Returns the amount of free physical memory in bytes.
    • getTotalPhysicalMemorySize

      public long getTotalPhysicalMemorySize()
      Returns the total amount of physical memory in bytes.
    • getFreeSwapSpaceSize

      public long getFreeSwapSpaceSize()
      Returns the amount of free swap space in bytes.
    • getTotalSwapSpaceSize

      public long getTotalSwapSpaceSize()
      Returns the total amount of swap space in bytes.
    • getSystemCpuPercent

      public short getSystemCpuPercent()
    • getInstance

      public static OsProbe getInstance()
    • osStats

      public OsStats osStats()