Skip to content

Commit

Permalink
gpu: change memory usage percentage to be scaled to total memory inst…
Browse files Browse the repository at this point in the history
…ead of current memory usage

gpu: requested syntax changes

Co-authored-by: lvxnull2 <[email protected]>
  • Loading branch information
yretenai and lvxnull2 committed Dec 7, 2024
1 parent 0828efd commit e2cd20d
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 39 deletions.
20 changes: 3 additions & 17 deletions src/data_collection.rs
Original file line number Diff line number Diff line change
Expand Up @@ -399,23 +399,9 @@ impl DataCollector {
}
}

self.data.gpu = if !local_gpu.is_empty() {
Some(local_gpu)
} else {
None
};

self.gpu_pids = if !local_gpu_pids.is_empty() {
Some(local_gpu_pids)
} else {
None
};

self.gpus_total_mem = if local_gpu_total_mem > 0 {
Some(local_gpu_total_mem)
} else {
None
};
self.data.gpu = (!local_gpu.is_empty()).then_some(local_gpu);
self.gpu_pids = (!local_gpu_pids.is_empty()).then_some(local_gpu_pids);
self.gpus_total_mem = (local_gpu_total_mem > 0).then_some(local_gpu_total_mem);
}
}

Expand Down
32 changes: 10 additions & 22 deletions src/data_collection/amd.rs
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ static PROC_DATA: LazyLock<Mutex<HashMap<PathBuf, HashMap<u32, AMDGPUProc>>>> =
pub fn get_amd_devs() -> Option<Vec<PathBuf>> {
let mut devices = Vec::new();

// read all PCI devices controlled b y the AMDGPU module
// read all PCI devices controlled by the AMDGPU module
let Ok(paths) = fs::read_dir("/sys/module/amdgpu/drivers/pci:amdgpu") else {
return None;
};
Expand Down Expand Up @@ -387,7 +387,7 @@ pub fn get_amd_fdinfo(device_path: &Path) -> Option<HashMap<u32, AMDGPUProc>> {
"drm-engine-jpeg" => usage.vcn_usage += fdinfo_value_num,
"drm-engine-vpe" => usage.vpe_usage += fdinfo_value_num,
"drm-engine-compute" => usage.compute_usage += fdinfo_value_num,
"drm-memory-vram" => usage.vram_usage += fdinfo_value_num << 10,
"drm-memory-vram" => usage.vram_usage += fdinfo_value_num << 10, // KiB -> B
_ => {}
};
}
Expand Down Expand Up @@ -418,8 +418,8 @@ pub fn get_amd_vecs(
let device_name =
get_amd_name(&device_path).unwrap_or(amdgpu_marketing::AMDGPU_DEFAULT_NAME.to_string());

if widgets_to_harvest.use_mem {
if let Some(mem) = get_amd_vram(&device_path) {
if let Some(mem) = get_amd_vram(&device_path) {
if widgets_to_harvest.use_mem {
mem_vec.push((
device_name.clone(),
MemHarvest {
Expand All @@ -433,6 +433,8 @@ pub fn get_amd_vecs(
},
));
}

total_mem += mem.total
}

if widgets_to_harvest.use_temp && Filter::optional_should_keep(filter, &device_name) {
Expand All @@ -456,8 +458,6 @@ pub fn get_amd_vecs(

let mut procs_map = HashMap::new();
for (proc_pid, proc_usage) in procs {
total_mem += proc_usage.vram_usage;

if let Some(prev_usage) = prev_fdinfo.get_mut(&proc_pid) {
// calculate deltas
let gfx_usage =
Expand Down Expand Up @@ -486,7 +486,7 @@ pub fn get_amd_vecs(

let gpu_util: u32 = gpu_util_wide.try_into().unwrap_or(0);

if gpu_util > 0 {
if gpu_util > 0 || proc_usage.vram_usage > 0 {
procs_map.insert(proc_pid, (proc_usage.vram_usage, gpu_util));
}

Expand All @@ -504,20 +504,8 @@ pub fn get_amd_vecs(
}

Some(AMDGPUData {
memory: if !mem_vec.is_empty() {
Some(mem_vec)
} else {
None
},
temperature: if !temp_vec.is_empty() {
Some(temp_vec)
} else {
None
},
procs: if !proc_vec.is_empty() {
Some((total_mem, proc_vec))
} else {
None
},
memory: (!mem_vec.is_empty()).then_some(mem_vec),
temperature: (!temp_vec.is_empty()).then_some(temp_vec),
procs: (!proc_vec.is_empty()).then_some((total_mem, proc_vec)),
})
}

0 comments on commit e2cd20d

Please sign in to comment.