bug: Divide Windows process cpu usage by number of processors (#525)

Fixes a bug displaying the CPU usage of a process in Windows due to not dividing by the number of processors.
This commit is contained in:
Clement Tsang
2021-06-26 02:34:32 -04:00
committed by GitHub
parent 4569532fb1
commit 1598654bef
3 changed files with 15 additions and 5 deletions
+2
View File
@@ -15,6 +15,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- [#504](https://github.com/ClementTsang/bottom/pull/504): Fixes two bugs causing the battery widget colours and mouse events to be broken.
- [#525](https://github.com/ClementTsang/bottom/pull/525): Fixes Windows process CPU usage not being divided by the number of cores.
## [0.6.1] - 2021-05-11
## Bug Fixes
+4 -4
View File
@@ -40,7 +40,7 @@ pub fn get_process_data(
let mut process_vector: Vec<ProcessHarvest> = Vec::new();
let process_hashmap = sys.get_processes();
let cpu_usage = sys.get_global_processor_info().get_cpu_usage() as f64 / 100.0;
let num_cpus = sys.get_processors().len() as f64;
let num_processors = sys.get_processors().len() as f64;
for process_val in process_hashmap.values() {
let name = if process_val.name().is_empty() {
let process_cmd = process_val.cmd();
@@ -72,7 +72,7 @@ pub fn get_process_data(
};
let pcu = {
let p = process_val.cpu_usage() as f64 / num_cpus;
let p = process_val.cpu_usage() as f64 / num_processors;
if p.is_nan() {
process_val.cpu_usage() as f64
} else {
@@ -117,10 +117,10 @@ pub fn get_process_data(
let cpu_usages = get_macos_process_cpu_usage(&cpu_usage_unknown_pids)?;
for process in &mut process_vector {
if cpu_usages.contains_key(&process.pid) {
process.cpu_usage_percent = if num_cpus == 0.0 {
process.cpu_usage_percent = if num_processors == 0.0 {
*cpu_usages.get(&process.pid).unwrap()
} else {
*cpu_usages.get(&process.pid).unwrap() / num_cpus
*cpu_usages.get(&process.pid).unwrap() / num_processors
};
}
}
+9 -1
View File
@@ -9,6 +9,7 @@ pub fn get_process_data(
let mut process_vector: Vec<ProcessHarvest> = Vec::new();
let process_hashmap = sys.get_processes();
let cpu_usage = sys.get_global_processor_info().get_cpu_usage() as f64 / 100.0;
let num_processors = sys.get_processors().len() as f64;
for process_val in process_hashmap.values() {
let name = if process_val.name().is_empty() {
let process_cmd = process_val.cmd();
@@ -39,7 +40,14 @@ pub fn get_process_data(
}
};
let pcu = process_val.cpu_usage() as f64;
let pcu = {
let p = process_val.cpu_usage() as f64 / num_processors;
if p.is_nan() {
process_val.cpu_usage() as f64
} else {
p
}
};
let process_cpu_usage = if use_current_cpu_total && cpu_usage > 0.0 {
pcu / cpu_usage
} else {