Interface CentralProcessor
- All Known Implementing Classes:
AbstractCentralProcessor
@ThreadSafe public interface CentralProcessor
-
Nested Class Summary
Nested Classes Modifier and Type Interface Description static class
CentralProcessor.LogicalProcessor
A class representing a Logical Processor and its replationship to physical processors, physical packages, and logical groupings such as NUMA Nodes and Processor groups, useful for identifying processor topology.static class
CentralProcessor.ProcessorIdentifier
A class encapsulating ghe CPU's identifier strings ,including name, vendor, stepping, model, and family information (also called the signature of a CPU)static class
CentralProcessor.TickType
Index of CPU tick counters in thegetSystemCpuLoadTicks()
andgetProcessorCpuLoadTicks()
arrays. -
Method Summary
Modifier and Type Method Description long
getContextSwitches()
Get the number of context switches which have occurredlong[]
getCurrentFreq()
Attempts to return the current frequency (in Hz), of the logical processors on this CPU.java.lang.String
getFamily()
Deprecated.As of 4.1.0, replaced bygetProcessorIdentifier()
.CentralProcessor.ProcessorIdentifier.getFamily()
java.lang.String
getIdentifier()
Deprecated.As of 4.1.0, replaced bygetProcessorIdentifier()
.CentralProcessor.ProcessorIdentifier.getIdentifier()
long
getInterrupts()
Get the number of interrupts which have occurredint
getLogicalProcessorCount()
Get the number of logical CPUs available for processing.CentralProcessor.LogicalProcessor[]
getLogicalProcessors()
Returns an array of the CPU's logical processors.long
getMaxFreq()
Maximum frequeny (in Hz), of the logical processors on this CPU.java.lang.String
getModel()
Deprecated.As of 4.1.0, replaced bygetProcessorIdentifier()
.CentralProcessor.ProcessorIdentifier.getModel()
java.lang.String
getName()
Deprecated.As of 4.1.0, replaced bygetProcessorIdentifier()
.CentralProcessor.ProcessorIdentifier.getName()
int
getPhysicalPackageCount()
Get the number of packages/sockets in the system.int
getPhysicalProcessorCount()
Get the number of physical CPUs/cores available for processing.double[]
getProcessorCpuLoadBetweenTicks(long[][] oldTicks)
Returns the "recent cpu usage" for all logical processors by counting ticks fromgetProcessorCpuLoadTicks()
between the user-provided value from a previous call.long[][]
getProcessorCpuLoadTicks()
Get Processor CPU Load tick counters.java.lang.String
getProcessorID()
Deprecated.As of 4.1.0, replaced bygetProcessorIdentifier()
.CentralProcessor.ProcessorIdentifier.getProcessorID()
CentralProcessor.ProcessorIdentifier
getProcessorIdentifier()
The CPU's identifier strings ,including name, vendor, stepping, model, and family information (also called the signature of a CPU)java.lang.String
getStepping()
Deprecated.As of 4.1.0, replaced bygetProcessorIdentifier()
.CentralProcessor.ProcessorIdentifier.getStepping()
double
getSystemCpuLoadBetweenTicks(long[] oldTicks)
Returns the "recent cpu usage" for the whole system by counting ticks fromgetSystemCpuLoadTicks()
between the user-provided value from a previous call.long[]
getSystemCpuLoadTicks()
Get System-wide CPU Load tick counters.double[]
getSystemLoadAverage(int nelem)
Returns the system load average for the number of elements specified, up to 3, representing 1, 5, and 15 minutes.java.lang.String
getVendor()
Deprecated.As of 4.1.0, replaced bygetProcessorIdentifier()
.CentralProcessor.ProcessorIdentifier.getVendor()
long
getVendorFreq()
Deprecated.As of 4.1.0, replaced bygetProcessorIdentifier()
.CentralProcessor.ProcessorIdentifier.getVendorFreq()
boolean
isCpu64bit()
Deprecated.As of 4.1.0, replaced bygetProcessorIdentifier()
.CentralProcessor.ProcessorIdentifier.isCpu64bit()
-
Method Details
-
getProcessorIdentifier
CentralProcessor.ProcessorIdentifier getProcessorIdentifier()The CPU's identifier strings ,including name, vendor, stepping, model, and family information (also called the signature of a CPU)- Returns:
- a
CentralProcessor.ProcessorIdentifier
object encapsulating CPU identifier information.
-
getVendor
@Deprecated java.lang.String getVendor()Deprecated.As of 4.1.0, replaced bygetProcessorIdentifier()
.CentralProcessor.ProcessorIdentifier.getVendor()
Processor vendor.- Returns:
- vendor string.
-
getName
@Deprecated java.lang.String getName()Deprecated.As of 4.1.0, replaced bygetProcessorIdentifier()
.CentralProcessor.ProcessorIdentifier.getName()
Name, eg. Intel(R) Core(TM)2 Duo CPU T7300 @ 2.00GHz- Returns:
- Processor name.
-
getFamily
@Deprecated java.lang.String getFamily()Deprecated.As of 4.1.0, replaced bygetProcessorIdentifier()
.CentralProcessor.ProcessorIdentifier.getFamily()
Gets the family. For non-Intel/AMD processors, returns the comparable value, such as the Architecture.- Returns:
- the family
-
getModel
@Deprecated java.lang.String getModel()Deprecated.As of 4.1.0, replaced bygetProcessorIdentifier()
.CentralProcessor.ProcessorIdentifier.getModel()
Gets the model. For non-Intel/AMD processors, returns the comparable value, such as the Partnum.- Returns:
- the model
-
getStepping
@Deprecated java.lang.String getStepping()Deprecated.As of 4.1.0, replaced bygetProcessorIdentifier()
.CentralProcessor.ProcessorIdentifier.getStepping()
Gets the stepping. For non-Intel/AMD processors, returns the comparable value, such as the rnpn composite of Variant and Revision.- Returns:
- the stepping
-
getProcessorID
@Deprecated java.lang.String getProcessorID()Deprecated.As of 4.1.0, replaced bygetProcessorIdentifier()
.CentralProcessor.ProcessorIdentifier.getProcessorID()
Gets the Processor ID. This is a hexidecimal string representing an 8-byte value, normally obtained using the CPUID opcode with the EAX register set to 1. The first four bytes are the resulting contents of the EAX register, which is the Processor signature, represented in human-readable form bygetIdentifier()
. The remaining four bytes are the contents of the EDX register, containing feature flags.For processors that do not support the CPUID opcode this field is populated with a comparable hex string. For example, ARM Processors will fill the first 32 bytes with the MIDR.
NOTE: The order of returned bytes is platform and software dependent. Values may be in either Big Endian or Little Endian order.
NOTE: If OSHI is unable to determine the ProcessorID from native sources, it will attempt to reconstruct one from available information in the processor identifier.
- Returns:
- A string representing the Processor ID
-
getIdentifier
@Deprecated java.lang.String getIdentifier()Deprecated.As of 4.1.0, replaced bygetProcessorIdentifier()
.CentralProcessor.ProcessorIdentifier.getIdentifier()
Identifier, eg. x86 Family 6 Model 15 Stepping 10. For non-Intel/AMD processors, this string is populated with comparable values.- Returns:
- Processor identifier.
-
isCpu64bit
@Deprecated boolean isCpu64bit()Deprecated.As of 4.1.0, replaced bygetProcessorIdentifier()
.CentralProcessor.ProcessorIdentifier.isCpu64bit()
Is CPU 64bit?- Returns:
- True if cpu is 64bit.
-
getVendorFreq
@Deprecated long getVendorFreq()Deprecated.As of 4.1.0, replaced bygetProcessorIdentifier()
.CentralProcessor.ProcessorIdentifier.getVendorFreq()
Vendor frequency (in Hz), eg. for processor named Intel(R) Core(TM)2 Duo CPU T7300 @ 2.00GHz the vendor frequency is 2000000000.- Returns:
- Processor frequency or -1 if unknown.
-
getMaxFreq
long getMaxFreq()Maximum frequeny (in Hz), of the logical processors on this CPU.- Returns:
- The max frequency or -1 if unknown.
-
getCurrentFreq
long[] getCurrentFreq()Attempts to return the current frequency (in Hz), of the logical processors on this CPU.May not be implemented on all Operating Systems.
On Windows, returns an estimate based on the percent of maximum frequency. On Windows systems with more than 64 logical processors, may only return frequencies for the current processor group in the first portion of the array.
- Returns:
- An array of processor frequencies for each logical processor on the
system. Use the
getLogicalProcessors()
to correlate these frequencies with physical packages and processors.
-
getLogicalProcessors
CentralProcessor.LogicalProcessor[] getLogicalProcessors()Returns an array of the CPU's logical processors. The array will be sorted in order of increasing NUMA node number, and then processor number. This order is consistent with other methods providing per-processor results.- Returns:
- The logical processor array.
-
getSystemCpuLoadBetweenTicks
double getSystemCpuLoadBetweenTicks(long[] oldTicks)Returns the "recent cpu usage" for the whole system by counting ticks fromgetSystemCpuLoadTicks()
between the user-provided value from a previous call.- Parameters:
oldTicks
- A tick array from a previous call togetSystemCpuLoadTicks()
- Returns:
- CPU load between 0 and 1 (100%)
-
getSystemCpuLoadTicks
long[] getSystemCpuLoadTicks()Get System-wide CPU Load tick counters. Returns an array with seven elements representing milliseconds spent in User (0), Nice (1), System (2), Idle (3), IOwait (4), Hardware interrupts (IRQ) (5), Software interrupts/DPC (SoftIRQ) (6), or Steal (7) states. UseCentralProcessor.TickType.getIndex()
to retrieve the appropriate index. By measuring the difference between ticks across a time interval, CPU load over that interval may be calculated.Note that while tick counters are in units of milliseconds, they may advance in larger increments along with (platform dependent) clock ticks. For example, by default Windows clock ticks are 1/64 of a second (about 15 or 16 milliseconds) and Linux ticks are distribution and configuration dependent but usually 1/100 of a second (10 milliseconds).
Nice and IOWait information is not available on Windows, and IOwait and IRQ information is not available on macOS, so these ticks will always be zero.
To calculate overall Idle time using this method, include both Idle and IOWait ticks. Similarly, IRQ, SoftIRQ, and Steal ticks should be added to the System value to get the total. System ticks also include time executing other virtual hosts (steal).
- Returns:
- An array of 7 long values representing time spent in User, Nice, System, Idle, IOwait, IRQ, SoftIRQ, and Steal states.
-
getSystemLoadAverage
double[] getSystemLoadAverage(int nelem)Returns the system load average for the number of elements specified, up to 3, representing 1, 5, and 15 minutes. The system load average is the sum of the number of runnable entities queued to the available processors and the number of runnable entities running on the available processors averaged over a period of time. The way in which the load average is calculated is operating system specific but is typically a damped time-dependent average. If the load average is not available, a negative value is returned. This method is designed to provide a hint about the system load and may be queried frequently.The load average may be unavailable on some platforms (e.g., Windows) where it is expensive to implement this method.
- Parameters:
nelem
- Number of elements to return.- Returns:
- an array of the system load averages for 1, 5, and 15 minutes with the size of the array specified by nelem; or negative values if not available.
-
getProcessorCpuLoadBetweenTicks
double[] getProcessorCpuLoadBetweenTicks(long[][] oldTicks)Returns the "recent cpu usage" for all logical processors by counting ticks fromgetProcessorCpuLoadTicks()
between the user-provided value from a previous call.- Parameters:
oldTicks
- A tick array from a previous call togetProcessorCpuLoadTicks()
- Returns:
- array of CPU load between 0 and 1 (100%) for each logical processor
-
getProcessorCpuLoadTicks
long[][] getProcessorCpuLoadTicks()Get Processor CPU Load tick counters. Returns a two dimensional array, withgetLogicalProcessorCount()
arrays, each containing seven elements representing milliseconds spent in User (0), Nice (1), System (2), Idle (3), IOwait (4), Hardware interrupts (IRQ) (5), Software interrupts/DPC (SoftIRQ) (6), or Steal (7) states. UseCentralProcessor.TickType.getIndex()
to retrieve the appropriate index. By measuring the difference between ticks across a time interval, CPU load over that interval may be calculated.Note that while tick counters are in units of milliseconds, they may advance in larger increments along with (platform dependent) clock ticks. For example, by default Windows clock ticks are 1/64 of a second (about 15 or 16 milliseconds) and Linux ticks are distribution and configuration dependent but usually 1/100 of a second (10 milliseconds).
Nice and IOwait per processor information is not available on Windows, and IOwait and IRQ information is not available on macOS, so these ticks will always be zero.
To calculate overall Idle time using this method, include both Idle and IOWait ticks. Similarly, IRQ, SoftIRQ and Steal ticks should be added to the System value to get the total. System ticks also include time executing other virtual hosts (steal).
- Returns:
- A 2D array of logicalProcessorCount x 7 long values representing time spent in User, Nice, System, Idle, IOwait, IRQ, SoftIRQ, and Steal states.
-
getLogicalProcessorCount
int getLogicalProcessorCount()Get the number of logical CPUs available for processing. This value may be higher than physical CPUs if hyperthreading is enabled.- Returns:
- The number of logical CPUs available.
-
getPhysicalProcessorCount
int getPhysicalProcessorCount()Get the number of physical CPUs/cores available for processing.- Returns:
- The number of physical CPUs available.
-
getPhysicalPackageCount
int getPhysicalPackageCount()Get the number of packages/sockets in the system. A single package may contain multiple cores.- Returns:
- The number of physical packages available.
-
getContextSwitches
long getContextSwitches()Get the number of context switches which have occurred- Returns:
- The number of context switches
-
getInterrupts
long getInterrupts()Get the number of interrupts which have occurred- Returns:
- The number of interrupts
-