Skip to content

Commit 041a738

Browse files
committed
Add --total-memory option for scaling memory usage graphs.
1 parent f95e6df commit 041a738

File tree

1 file changed

+27
-17
lines changed

1 file changed

+27
-17
lines changed

lib/process/metrics/command/summary.rb

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ class Summary < Samovar::Command
4444
options do
4545
option "--pid <integer>", "Report on a single process id.", type: Integer, required: true
4646
option "-p/--ppid <integer>", "Report on all children of this process id.", type: Integer, required: true
47+
48+
option "--total-memory <integer>", "Set the total memory relative to the usage (MiB).", type: Integer
4749
end
4850

4951
def terminal
@@ -87,7 +89,7 @@ def format_size(value, units: UNITS)
8789
return "#{value.round(unit)}#{units[unit]}"
8890
end
8991

90-
def format_memory_usage(value, total, terminal)
92+
def format_memory(value, total, terminal)
9193
if value > (total * 0.8)
9294
intensity = :high
9395
elsif value > (total * 0.5)
@@ -101,15 +103,23 @@ def format_memory_usage(value, total, terminal)
101103
terminal.print(formatted, intensity, "[", Bar.format(value / total.to_f, 60), "]", :reset)
102104
end
103105

106+
def total_memory
107+
if total_memory = @options[:total_memory]
108+
return total_memory * 1024
109+
else
110+
return Process::Metrics::Memory.total_size
111+
end
112+
end
113+
104114
def call
105115
terminal = self.terminal
106116

107117
summary = Process::Metrics::General.capture(pid: @options[:pid], ppid: @options[:ppid])
108118

109-
format_memory_usage = self.method(:format_memory_usage).curry
110-
shared_memory_usage = 0
111-
private_memory_usage = 0
112-
total_memory_usage = Process::Metrics::Memory.total_size
119+
format_memory = self.method(:format_memory).curry
120+
shared_memory = 0
121+
private_memory = 0
122+
total_memory = self.total_memory
113123

114124
proportional = true
115125

@@ -121,25 +131,25 @@ def call
121131
terminal.print_line
122132

123133
if memory = general.memory
124-
shared_memory_usage += memory.proportional_size
125-
private_memory_usage += memory.unique_size
134+
shared_memory += memory.proportional_size
135+
private_memory += memory.unique_size
126136

127137
terminal.print_line(
128-
:key, "Shared Memory: ".rjust(20), :reset,
129-
format_memory_usage[memory.proportional_size, total_memory_usage]
138+
:key, "Memory: ".rjust(20), :reset,
139+
format_memory[memory.proportional_size, total_memory]
130140
)
131141

132142
terminal.print_line(
133143
:key, "Private Memory: ".rjust(20), :reset,
134-
format_memory_usage[memory.unique_size, total_memory_usage]
144+
format_memory[memory.unique_size, total_memory]
135145
)
136146
else
137-
shared_memory_usage += general.resident_size
147+
shared_memory += general.resident_size
138148
proportional = false
139149

140150
terminal.print_line(
141151
:key, "Memory: ".rjust(20), :reset,
142-
format_memory_usage[general.resident_size, total_memory_usage]
152+
format_memory[general.resident_size, total_memory]
143153
)
144154
end
145155
end
@@ -148,24 +158,24 @@ def call
148158

149159
if proportional
150160
terminal.print_line(
151-
:key, "Shared Memory: ".rjust(20), :reset,
152-
format_memory_usage[shared_memory_usage, total_memory_usage]
161+
:key, "Memory: ".rjust(20), :reset,
162+
format_memory[shared_memory, total_memory]
153163
)
154164

155165
terminal.print_line(
156166
:key, "Private Memory: ".rjust(20), :reset,
157-
format_memory_usage[private_memory_usage, total_memory_usage]
167+
format_memory[private_memory, total_memory]
158168
)
159169
else
160170
terminal.print_line(
161171
:key, "Memory: ".rjust(20), :reset,
162-
format_memory_usage[memory_usage, total_memory_usage]
172+
format_memory[memory, total_memory]
163173
)
164174
end
165175

166176
terminal.print_line(
167177
:key, "Memory (Total): ".rjust(20), :reset,
168-
format_memory_usage[shared_memory_usage + private_memory_usage, total_memory_usage]
178+
format_memory[shared_memory + private_memory, total_memory]
169179
)
170180
end
171181
end

0 commit comments

Comments
 (0)