Merge pull request #618 from nobounce/aggregate-child-processes

Add option to accumulate a child's resources in parent in tree-view
This commit is contained in:
Jakob P. Liljenberg 2023-09-28 18:20:42 +02:00 committed by GitHub
commit d16adc9fd0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 26 additions and 1 deletions

View file

@ -107,6 +107,8 @@ namespace Config {
{"proc_filter_kernel", "#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop)."},
{"proc_aggregate", "#* In tree-view, always accumulate child process resources in the parent process."},
{"cpu_graph_upper", "#* Sets the CPU stat shown in upper half of the CPU graph, \"total\" is always available.\n"
"#* Select from a list of detected attributes from the options menu."},
@ -268,6 +270,7 @@ namespace Config {
{"lowcolor", false},
{"show_detailed", false},
{"proc_filtering", false},
{"proc_aggregate", false},
};
unordered_flat_map<std::string_view, bool> boolsTmp;

View file

@ -20,6 +20,7 @@ tab-size = 4
#include <algorithm>
#include <cmath>
#include <ranges>
#include <string>
#include "btop_draw.hpp"
#include "btop_config.hpp"
@ -1529,7 +1530,16 @@ namespace Proc {
else mem_str.resize((mem_p < 10 or mem_p >= 100 ? 3 : 4));
mem_str += '%';
}
out += (thread_size > 0 ? t_color + rjust(to_string(min(p.threads, (size_t)9999)), thread_size) + ' ' + end : "" )
// Shorten process thread representation when larger than 5 digits: 10000 -> 10K ...
std::string proc_threads_string;
if (p.threads > 9999) {
proc_threads_string = std::to_string(p.threads / 1000) + 'K';
} else {
proc_threads_string = std::to_string(p.threads);
}
out += (thread_size > 0 ? t_color + rjust(proc_threads_string, thread_size) + ' ' + end : "" )
+ g_color + ljust((cmp_greater(p.user.size(), user_size) ? p.user.substr(0, user_size - 1) + '+' : p.user), user_size) + ' '
+ m_color + rjust(mem_str, 5) + end + ' '
+ (is_selected ? "" : Theme::c("inactive_fg")) + (show_graphs ? graph_bg * 5: "")

View file

@ -589,6 +589,11 @@ namespace Menu {
"Set true to show processes grouped by",
"parents with lines drawn between parent",
"and child process."},
{"proc_aggregate",
"Aggregate child's resources in parent.",
"",
"In tree-view, include all child resources",
"with the parent even while expanded."},
{"proc_colors",
"Enable colors in process view.",
"",

View file

@ -18,6 +18,7 @@ tab-size = 4
#include <ranges>
#include "btop_config.hpp"
#include "btop_shared.hpp"
#include "btop_tools.hpp"
@ -156,6 +157,12 @@ namespace Proc {
filter_found++;
p.filtered = true;
}
else if (Config::getB("proc_aggregate")) {
cur_proc.cpu_p += p.cpu_p;
cur_proc.cpu_c += p.cpu_c;
cur_proc.mem += p.mem;
cur_proc.threads += p.threads;
}
}
if (collapsed or filtering) {
return;