Skip to content

Commit

Permalink
Merge pull request #618 from nobounce/aggregate-child-processes
Browse files Browse the repository at this point in the history
Add option to accumulate a child's resources in parent in tree-view
  • Loading branch information
aristocratos committed Sep 28, 2023
2 parents 2c3ac48 + f34b408 commit d16adc9
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 1 deletion.
3 changes: 3 additions & 0 deletions src/btop_config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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."},

Expand Down Expand Up @@ -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;

Expand Down
12 changes: 11 additions & 1 deletion src/btop_draw.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ tab-size = 4
#include <algorithm>
#include <cmath>
#include <ranges>
#include <string>

#include "btop_draw.hpp"
#include "btop_config.hpp"
Expand Down Expand Up @@ -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: "")
Expand Down
5 changes: 5 additions & 0 deletions src/btop_menu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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.",
"",
Expand Down
7 changes: 7 additions & 0 deletions src/btop_shared.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ tab-size = 4

#include <ranges>

#include "btop_config.hpp"
#include "btop_shared.hpp"
#include "btop_tools.hpp"

Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit d16adc9

Please sign in to comment.