@@ -45,27 +45,22 @@ internal class LoadReader: Reader<CPU_Load> {
4545 self . CPUUsageLock. lock ( )
4646 self . usagePerCore = [ ]
4747
48- for i in 0 ..< Int32 ( numCPUs) {
49- var inUse : Int32
50- var total : Int32
51- if let prevCpuInfo = self . prevCpuInfo {
52- inUse = self . cpuInfo [ Int ( CPU_STATE_MAX * i + CPU_STATE_USER) ]
53- &- prevCpuInfo [ Int ( CPU_STATE_MAX * i + CPU_STATE_USER) ]
54- &+ self . cpuInfo [ Int ( CPU_STATE_MAX * i + CPU_STATE_SYSTEM) ]
55- &- prevCpuInfo [ Int ( CPU_STATE_MAX * i + CPU_STATE_SYSTEM) ]
56- &+ self . cpuInfo [ Int ( CPU_STATE_MAX * i + CPU_STATE_NICE) ]
57- &- prevCpuInfo [ Int ( CPU_STATE_MAX * i + CPU_STATE_NICE) ]
58- total = inUse &+ ( self . cpuInfo [ Int ( CPU_STATE_MAX * i + CPU_STATE_IDLE) ]
59- &- prevCpuInfo [ Int ( CPU_STATE_MAX * i + CPU_STATE_IDLE) ] )
60- } else {
61- inUse = self . cpuInfo [ Int ( CPU_STATE_MAX * i + CPU_STATE_USER) ]
62- &+ self . cpuInfo [ Int ( CPU_STATE_MAX * i + CPU_STATE_SYSTEM) ]
63- &+ self . cpuInfo [ Int ( CPU_STATE_MAX * i + CPU_STATE_NICE) ]
64- total = inUse &+ self . cpuInfo [ Int ( CPU_STATE_MAX * i + CPU_STATE_IDLE) ]
65- }
66-
67- if total != 0 {
68- self . usagePerCore. append ( Double ( inUse) / Double( total) )
48+ if let prevCpuInfo = self . prevCpuInfo {
49+ for i in 0 ..< Int32 ( self . numCPUs) {
50+ let user = UInt32 ( bitPattern: self . cpuInfo [ Int ( CPU_STATE_MAX * i + CPU_STATE_USER) ] )
51+ &- UInt32 ( bitPattern: prevCpuInfo [ Int ( CPU_STATE_MAX * i + CPU_STATE_USER) ] )
52+ let system = UInt32 ( bitPattern: self . cpuInfo [ Int ( CPU_STATE_MAX * i + CPU_STATE_SYSTEM) ] )
53+ &- UInt32 ( bitPattern: prevCpuInfo [ Int ( CPU_STATE_MAX * i + CPU_STATE_SYSTEM) ] )
54+ let nice = UInt32 ( bitPattern: self . cpuInfo [ Int ( CPU_STATE_MAX * i + CPU_STATE_NICE) ] )
55+ &- UInt32 ( bitPattern: prevCpuInfo [ Int ( CPU_STATE_MAX * i + CPU_STATE_NICE) ] )
56+ let idle = UInt32 ( bitPattern: self . cpuInfo [ Int ( CPU_STATE_MAX * i + CPU_STATE_IDLE) ] )
57+ &- UInt32 ( bitPattern: prevCpuInfo [ Int ( CPU_STATE_MAX * i + CPU_STATE_IDLE) ] )
58+
59+ let inUse = UInt64 ( user) + UInt64( system) + UInt64( nice)
60+ let total = inUse + UInt64( idle)
61+ if total != 0 {
62+ self . usagePerCore. append ( min ( 1 , Double ( inUse) / Double( total) ) )
63+ }
6964 }
7065 }
7166 self . CPUUsageLock. unlock ( )
0 commit comments