prometheus-client-mmap 0.27.0-aarch64-linux → 0.28.1-aarch64-linux
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +10 -4
- data/ext/fast_mmaped_file/mmap.c +0 -10
- data/ext/fast_mmaped_file_rs/src/mmap/inner.rs +0 -10
- data/ext/fast_mmaped_file_rs/src/mmap.rs +0 -3
- data/lib/2.7/fast_mmaped_file.so +0 -0
- data/lib/2.7/fast_mmaped_file_rs.so +0 -0
- data/lib/3.0/fast_mmaped_file.so +0 -0
- data/lib/3.0/fast_mmaped_file_rs.so +0 -0
- data/lib/3.1/fast_mmaped_file.so +0 -0
- data/lib/3.1/fast_mmaped_file_rs.so +0 -0
- data/lib/3.2/fast_mmaped_file.so +0 -0
- data/lib/3.2/fast_mmaped_file_rs.so +0 -0
- data/lib/prometheus/client/support/puma.rb +44 -0
- data/lib/prometheus/client/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6f8acfe1a1fbb1facc3f534fc3d03bebb5f3344b633f8b1d791b36df330dabd6
|
4
|
+
data.tar.gz: 34163b5937f20b1a1e75bea75f1f6dd00a9abf892b32dec6a532cd73d34e9773
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: de8e967fcc703204863c8b9b0869c34d642ac0bed558c838d938482c04ace7359145c5ab1aaa0a24b94557b3ff149f4bcd8d8e21bccf1fc1a888a0d7efa68295
|
7
|
+
data.tar.gz: c5a7ba6ea168eb0c643897f9b68e7c1585444963a3599811ae6179a6b1466e52c069308f4235763c81e44658af2a8b1d7abd65af7fa21fdc8b42fc76fae62550
|
data/README.md
CHANGED
@@ -241,8 +241,8 @@ To use the C extension, set the environment variable
|
|
241
241
|
|
242
242
|
### PID cardinality
|
243
243
|
|
244
|
-
In multiprocess setup e.g. running under Unicorn, having worker process restart often
|
245
|
-
lead to performance problems when proccesing metric files. By default each process using
|
244
|
+
In multiprocess setup e.g. running under Unicorn or Puma, having worker process restart often
|
245
|
+
can lead to performance problems when proccesing metric files. By default each process using
|
246
246
|
Prometheus metrics will create a set of files based on that process PID. With high worker
|
247
247
|
churn this will lead to creation of thousands of files and in turn will cause very noticable
|
248
248
|
slowdown when displaying metrics
|
@@ -250,14 +250,20 @@ slowdown when displaying metrics
|
|
250
250
|
To reduce this problem, a surrogate process id can be used. Set of all such IDs needs
|
251
251
|
have low cardinality, and each process id must be unique among all running process.
|
252
252
|
|
253
|
-
For Unicorn a worker id/number can be used to greatly speedup the metrics rendering.
|
253
|
+
For Unicorn and Puma a worker id/number can be used to greatly speedup the metrics rendering.
|
254
254
|
|
255
|
-
|
255
|
+
If you are using Unicorn, add this line to your `configure` block:
|
256
256
|
|
257
257
|
```ruby
|
258
258
|
config.pid_provider = Prometheus::Client::Support::Unicorn.method(:worker_pid_provider)
|
259
259
|
```
|
260
260
|
|
261
|
+
If you are using Puma, add this line to your `configure` block:
|
262
|
+
|
263
|
+
```ruby
|
264
|
+
config.pid_provider = Prometheus::Client::Support::Puma.method(:worker_pid_provider)
|
265
|
+
```
|
266
|
+
|
261
267
|
## Tools
|
262
268
|
|
263
269
|
### `bin/parse`
|
data/ext/fast_mmaped_file/mmap.c
CHANGED
@@ -189,12 +189,6 @@ static void mm_free(mm_ipc *i_mm) {
|
|
189
189
|
}
|
190
190
|
|
191
191
|
if (i_mm->t->path != (char *)-1) {
|
192
|
-
if (i_mm->t->real < i_mm->t->len && i_mm->t->vscope != MAP_PRIVATE &&
|
193
|
-
truncate(i_mm->t->path, i_mm->t->real) == -1) {
|
194
|
-
free(i_mm->t->path);
|
195
|
-
free(i_mm);
|
196
|
-
rb_raise(rb_eTypeError, "truncate");
|
197
|
-
}
|
198
192
|
free(i_mm->t->path);
|
199
193
|
}
|
200
194
|
}
|
@@ -414,10 +408,6 @@ VALUE mm_unmap(VALUE obj) {
|
|
414
408
|
}
|
415
409
|
|
416
410
|
if (i_mm->t->path != (char *)-1) {
|
417
|
-
if (i_mm->t->real < i_mm->t->len && i_mm->t->vscope != MAP_PRIVATE &&
|
418
|
-
truncate(i_mm->t->path, i_mm->t->real) == -1) {
|
419
|
-
rb_raise(rb_eTypeError, "truncate");
|
420
|
-
}
|
421
411
|
free(i_mm->t->path);
|
422
412
|
}
|
423
413
|
|
@@ -224,16 +224,6 @@ impl InnerMmap {
|
|
224
224
|
}
|
225
225
|
}
|
226
226
|
|
227
|
-
/// Truncate the mmapped file to the end of the metrics data.
|
228
|
-
pub fn truncate_file(&mut self) -> Result<()> {
|
229
|
-
// CAST: no-op on 64-bit, widening on 32-bit.
|
230
|
-
let trunc_len = self.len as u64;
|
231
|
-
|
232
|
-
self.file
|
233
|
-
.set_len(trunc_len)
|
234
|
-
.map_err(|e| MmapError::legacy(format!("truncate: {e}"), RubyError::Type))
|
235
|
-
}
|
236
|
-
|
237
227
|
/// Load the `used` header containing the size of the metrics data written.
|
238
228
|
pub fn load_used(&self) -> Result<u32> {
|
239
229
|
match read_u32(self.map.as_ref(), 0) {
|
@@ -225,9 +225,6 @@ impl MmapedFile {
|
|
225
225
|
let rs_self = &*rb_self;
|
226
226
|
|
227
227
|
rs_self.inner_mut(|inner| {
|
228
|
-
// truncate file to actual used size
|
229
|
-
inner.truncate_file()?;
|
230
|
-
|
231
228
|
// We are about to release the backing mmap for Ruby's String
|
232
229
|
// objects. If Ruby attempts to read from them the program will
|
233
230
|
// segfault. We update the length of all Strings to zero so Ruby
|
data/lib/2.7/fast_mmaped_file.so
CHANGED
Binary file
|
Binary file
|
data/lib/3.0/fast_mmaped_file.so
CHANGED
Binary file
|
Binary file
|
data/lib/3.1/fast_mmaped_file.so
CHANGED
Binary file
|
Binary file
|
data/lib/3.2/fast_mmaped_file.so
CHANGED
Binary file
|
Binary file
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module Prometheus
|
2
|
+
module Client
|
3
|
+
module Support
|
4
|
+
module Puma
|
5
|
+
extend self
|
6
|
+
|
7
|
+
def worker_pid_provider
|
8
|
+
wid = worker_id
|
9
|
+
if wid = worker_id
|
10
|
+
wid
|
11
|
+
else
|
12
|
+
"process_id_#{Process.pid}"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def object_based_worker_id
|
19
|
+
return unless defined?(::Puma::Cluster::Worker)
|
20
|
+
|
21
|
+
workers = ObjectSpace.each_object(::Puma::Cluster::Worker)
|
22
|
+
return if workers.nil?
|
23
|
+
|
24
|
+
workers_first = workers.first
|
25
|
+
workers_first.index unless workers_first.nil?
|
26
|
+
end
|
27
|
+
|
28
|
+
def program_name
|
29
|
+
$PROGRAM_NAME
|
30
|
+
end
|
31
|
+
|
32
|
+
def worker_id
|
33
|
+
if matchdata = program_name.match(/puma.*cluster worker ([0-9]+):/)
|
34
|
+
"puma_#{matchdata[1]}"
|
35
|
+
elsif object_worker_id = object_based_worker_id
|
36
|
+
"puma_#{object_worker_id}"
|
37
|
+
elsif program_name.include?('puma')
|
38
|
+
'puma_master'
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: prometheus-client-mmap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.28.1
|
5
5
|
platform: aarch64-linux
|
6
6
|
authors:
|
7
7
|
- Tobias Schmidt
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2023-
|
14
|
+
date: 2023-10-05 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rb_sys
|
@@ -197,6 +197,7 @@ files:
|
|
197
197
|
- lib/prometheus/client/registry.rb
|
198
198
|
- lib/prometheus/client/simple_value.rb
|
199
199
|
- lib/prometheus/client/summary.rb
|
200
|
+
- lib/prometheus/client/support/puma.rb
|
200
201
|
- lib/prometheus/client/support/unicorn.rb
|
201
202
|
- lib/prometheus/client/uses_value_type.rb
|
202
203
|
- lib/prometheus/client/version.rb
|