Central processor
The information refer to the system's central processor (CPU)
Original source
The central processor information are retrieved from Hardware.CentralProcessor interface
KInfo's source
Properties
maxFreq
The maximum frequency of the processor in hertz
currentFreq
Array of current frequencies for each logical processor in hertz
val currentFreq: LongArray = centralProcessor.currentFreq
println(currentFreq) // e.g. [3793000000, 3793000000, 3793000000, etc ...]
logicalProcessors
List of logical processor, each representing a core or a thread
val logicalProcessors: List<LogicalProcessor> = centralProcessor.logicalProcessors
println(logicalProcessors)
physicalProcessors
List of physical processor, representing the physical cores in the system
val physicalProcessors: List<PhysicalProcessor> = centralProcessor.physicalProcessors
println(physicalProcessors)
processorCaches
List of processor caches, detailing cache levels, sizes, and types
val processorCaches: List<ProcessorCache> = centralProcessor.processorCaches
println(processorCaches)
featureFlags
The CPU's supported features, such as instruction sets and extensions
val featureFlags: List<String> = centralProcessor.featureFlags
println(featureFlags)
// e.g. [PF_COMPARE_EXCHANGE_DOUBLE, PF_MMX_INSTRUCTIONS_AVAILABLE, etc...]
systemCpuLoadTicks
Array of tick counters representing system-wide CPU load
val systemCpuLoadTicks: LongArray = centralProcessor.systemCpuLoadTicks
println(systemCpuLoadTicks) // e.g. [5529211, 3861243, 143527712, 0]
processorCpuLoadTicks
Array of tick counters for each logical processor, representing the CPU load distribution
val processorCpuLoadTicks: Array<LongArray> = centralProcessor.processorCpuLoadTicks
println(processorCpuLoadTicks) // e.g. [[167359, 101640], [9273421, 0]]
logicalProcessorCount
The number of logical processors in the system
val logicalProcessorCount: Int = centralProcessor.logicalProcessorCount
println(logicalProcessorCount) // e.g. 8
physicalProcessorCount
The number of physical processors (cores) in the system
val physicalProcessorCount: Int = centralProcessor.physicalProcessorCount
println(physicalProcessorCount) // e.g. 4
physicalPackageCount
The number of physical processor packages in the system
val physicalPackageCount: Int = centralProcessor.physicalPackageCount
println(physicalPackageCount) // e.g. 1
contextSwitches
The total number of context switches that have occurred
val contextSwitches: Long = centralProcessor.contextSwitches
println(contextSwitches) // e.g. 299982508
interrupts
The total number of interrupts that have occurred
Methods
The below methods and are useful to retrieve any available information about the central processor
getSystemCpuLoadBetweenTicks
Retrieves the system CPU load as a percentage between the current ticks and the specified oldTickets
Parameters
- oldTickets
:LongArray- The previous CPU ticks for comparison
val systemCpuLoadBetweenTicks: Double = centralProcessor.getSystemCpuLoadBetweenTicks(
oldTickets = longArrayOf(130000, 2000, 15000, 450000, 100, 0, 0, 0)
)
println(systemCpuLoadBetweenTicks) // e.g. 23.74
getSystemLoadAverage
Retrieves the system load average for the last nelem intervals
Parameters
- nelem
:Int- The number of intervals for which to retrieve the load average
val systemLoadAverage: DoubleArray = centralProcessor.getSystemLoadAverage(
nelem = 10
)
println(systemLoadAverage) // e.g. [0.75, 0.60, 0.55]
getSystemCpuLoad
Calculates the system CPU load over a specified delay period
Parameters
- delay
:Long- The delay period in milliseconds
val systemCpuLoad: Double = centralProcessor.getSystemCpuLoad(
delay = 1000
)
println(systemCpuLoad) // e.g. 0.42
getProcessorCpuLoadBetweenTicks
Retrieves the processor CPU load as a percentage between the current ticks and the specified oldTickets
Parameters
- oldTickets
:Array<LongArray>- The previous CPU ticks for comparison
val processorCpuLoadBetweenTicks: DoubleArray = centralProcessor.getProcessorCpuLoadBetweenTicks(
oldTickets = arrayOf(
longArrayOf(130000, 2000, 15000, 450000, 100, 0, 0, 0), // Core 0
longArrayOf(125000, 1800, 14000, 460000, 80, 0, 0, 0), // Core 1
longArrayOf(120000, 1600, 13000, 470000, 60, 0, 0, 0), // Core 2
longArrayOf(128000, 1900, 14500, 455000, 90, 0, 0, 0) // Core 3
)
)
println(processorCpuLoadBetweenTicks) // e.g. [0.18, 0.23, 0.14, 0.27]