mirror of
https://github.com/ClementTsang/bottom.git
synced 2025-07-21 04:34:51 +02:00
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:
parent
4569532fb1
commit
1598654bef
@ -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.
|
- [#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
|
## [0.6.1] - 2021-05-11
|
||||||
|
|
||||||
## Bug Fixes
|
## Bug Fixes
|
||||||
|
@ -40,7 +40,7 @@ pub fn get_process_data(
|
|||||||
let mut process_vector: Vec<ProcessHarvest> = Vec::new();
|
let mut process_vector: Vec<ProcessHarvest> = Vec::new();
|
||||||
let process_hashmap = sys.get_processes();
|
let process_hashmap = sys.get_processes();
|
||||||
let cpu_usage = sys.get_global_processor_info().get_cpu_usage() as f64 / 100.0;
|
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() {
|
for process_val in process_hashmap.values() {
|
||||||
let name = if process_val.name().is_empty() {
|
let name = if process_val.name().is_empty() {
|
||||||
let process_cmd = process_val.cmd();
|
let process_cmd = process_val.cmd();
|
||||||
@ -72,7 +72,7 @@ pub fn get_process_data(
|
|||||||
};
|
};
|
||||||
|
|
||||||
let pcu = {
|
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() {
|
if p.is_nan() {
|
||||||
process_val.cpu_usage() as f64
|
process_val.cpu_usage() as f64
|
||||||
} else {
|
} else {
|
||||||
@ -117,10 +117,10 @@ pub fn get_process_data(
|
|||||||
let cpu_usages = get_macos_process_cpu_usage(&cpu_usage_unknown_pids)?;
|
let cpu_usages = get_macos_process_cpu_usage(&cpu_usage_unknown_pids)?;
|
||||||
for process in &mut process_vector {
|
for process in &mut process_vector {
|
||||||
if cpu_usages.contains_key(&process.pid) {
|
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()
|
*cpu_usages.get(&process.pid).unwrap()
|
||||||
} else {
|
} else {
|
||||||
*cpu_usages.get(&process.pid).unwrap() / num_cpus
|
*cpu_usages.get(&process.pid).unwrap() / num_processors
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,7 @@ pub fn get_process_data(
|
|||||||
let mut process_vector: Vec<ProcessHarvest> = Vec::new();
|
let mut process_vector: Vec<ProcessHarvest> = Vec::new();
|
||||||
let process_hashmap = sys.get_processes();
|
let process_hashmap = sys.get_processes();
|
||||||
let cpu_usage = sys.get_global_processor_info().get_cpu_usage() as f64 / 100.0;
|
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() {
|
for process_val in process_hashmap.values() {
|
||||||
let name = if process_val.name().is_empty() {
|
let name = if process_val.name().is_empty() {
|
||||||
let process_cmd = process_val.cmd();
|
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 {
|
let process_cpu_usage = if use_current_cpu_total && cpu_usage > 0.0 {
|
||||||
pcu / cpu_usage
|
pcu / cpu_usage
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user