Skip to content

Commit 5c3b8e4

Browse files
Make memory fault capture optional.
1 parent 125be55 commit 5c3b8e4

2 files changed

Lines changed: 16 additions & 6 deletions

File tree

lib/process/metrics/memory/linux.rb

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,10 @@ def self.supported?
9090
end
9191

9292
# Capture memory usage for the given process IDs.
93-
def self.capture(pid, **options)
93+
# @parameter pid [Integer] The process ID.
94+
# @parameter faults [Boolean] Whether to capture fault counters (default: true).
95+
# @parameter options [Hash] Additional options.
96+
def self.capture(pid, faults: true, **options)
9497
File.open("/proc/#{pid}/smaps_rollup") do |file|
9598
usage = Memory.zero
9699

@@ -103,8 +106,10 @@ def self.capture(pid, **options)
103106
end
104107

105108
usage.map_count += File.readlines("/proc/#{pid}/maps").size
106-
# Also capture fault counters:
107-
self.capture_faults(pid, usage)
109+
# Also capture fault counters if requested:
110+
if faults
111+
self.capture_faults(pid, usage)
112+
end
108113

109114
return usage
110115
end
@@ -119,7 +124,10 @@ def self.supported?
119124
end
120125

121126
# Capture memory usage for the given process IDs.
122-
def self.capture(pid, **options)
127+
# @parameter pid [Integer] The process ID.
128+
# @parameter faults [Boolean] Whether to capture fault counters (default: true).
129+
# @parameter options [Hash] Additional options.
130+
def self.capture(pid, faults: true, **options)
123131
File.open("/proc/#{pid}/smaps") do |file|
124132
usage = Memory.zero
125133

@@ -137,8 +145,8 @@ def self.capture(pid, **options)
137145
end
138146
end
139147

140-
# Also capture fault counters:
141-
self.capture_faults(pid, usage)
148+
# Also capture fault counters if requested:
149+
self.capture_faults(pid, usage) if faults
142150

143151
return usage
144152
end
@@ -169,6 +177,7 @@ def total_size
169177

170178
# Capture memory metrics for a process.
171179
# @parameter pid [Integer] The process ID.
180+
# @parameter faults [Boolean] Whether to capture fault counters (default: true).
172181
# @parameter options [Hash] Additional options.
173182
# @returns [Memory] A Memory instance with captured metrics.
174183
def capture(...)

releases.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
## Unreleased
44

55
- `Process::Metrics::Memory.total_size` takes into account cgroup limits.
6+
- On Linux, capturing faults is optional, controlled by `capture(faults: true/false)`.
67

78
## v0.7.0
89

0 commit comments

Comments
 (0)