yabeda-gc 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a7f791f3e51087fa9a6ef485b8b0ed77ac5f36a44477b293c362565cf2934f90
4
- data.tar.gz: 2255d5e72d224021bd4eca3a29555ebdad593bc8bc49f9f8772f356b4581e6bd
3
+ metadata.gz: 843130a29cb0d6261906f9098739eee6deb188a7538b9e1737078b0cc830f62b
4
+ data.tar.gz: 5174052f1bd083581eb1572f4d341d29128d2d60a65a3b3a1d8c3af0b4ea2875
5
5
  SHA512:
6
- metadata.gz: 483b0255050ec289004d223ceeae5a1d4d11d7ad2941f58db16a796be92ab43d99f6b814fb9bf8264add0011f16fc3d5d8b0e44481c424699c556abe5a2ec4b5
7
- data.tar.gz: 14c7b474c2462fe2402a62bd35b34b9d283ca731d313f223e2fdab5d48e0d1c39890d973c613859e12c687ec42b4ebade9d467dfa269384bf09b09bb292f03fa
6
+ metadata.gz: 7a87fc2cdb220d0a35d0e5f8cba205e7ff171f5be2f5fa83e0d4643c02b3ef021bd73ef19f1690cf21a91f74e4680a1e39c72841e1d6eb38703b5d90a5c80fe1
7
+ data.tar.gz: 91d80b5fc6b25a34e5e9dafd9c915c5d4c40641cb2206b0cce7dcd891d1993eb489a065ba7996a3d98a92b001262eed413a3fb240aa81bd1e2bf32551988ecf4
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.4.0] - 2024-11-01
4
+
5
+ ### Added
6
+
7
+ - Automatic GC metric registration for future Ruby versions. [@jeremy] in [#6](https://github.com/ianks/yabeda-gc/pull/6)
8
+
3
9
  ## [0.3.0] - 2024-01-04
4
10
 
5
11
  ### Added
@@ -32,3 +38,4 @@
32
38
  [@tarapon]: https://github.com/tarapon "Ivan Tarapon"
33
39
  [@Envek]: https://github.com/Envek "Andrey Novikov"
34
40
  [@aroop]: https://github.com/aroop "Ajay Guthikonda"
41
+ [@jeremy]: https://github.com/jeremy "Jeremy Daer"
data/Gemfile.lock CHANGED
@@ -1,70 +1,70 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- yabeda-gc (0.3.0)
4
+ yabeda-gc (0.4.0)
5
5
  yabeda (~> 0.6)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- anyway_config (2.5.4)
11
- ruby-next-core (>= 0.14.0)
10
+ anyway_config (2.6.4)
11
+ ruby-next-core (~> 1.0)
12
12
  ast (2.4.2)
13
13
  coderay (1.1.3)
14
- concurrent-ruby (1.2.2)
15
- diff-lcs (1.5.0)
14
+ concurrent-ruby (1.3.4)
15
+ diff-lcs (1.5.1)
16
16
  dry-initializer (3.1.1)
17
- json (2.7.1)
17
+ json (2.7.5)
18
18
  language_server-protocol (3.17.0.3)
19
- method_source (1.0.0)
20
- parallel (1.24.0)
21
- parser (3.2.2.4)
19
+ method_source (1.1.0)
20
+ parallel (1.26.3)
21
+ parser (3.3.5.1)
22
22
  ast (~> 2.4.1)
23
23
  racc
24
24
  pry (0.14.2)
25
25
  coderay (~> 1.1)
26
26
  method_source (~> 1.0)
27
- racc (1.7.3)
27
+ racc (1.8.1)
28
28
  rainbow (3.1.1)
29
- rake (13.1.0)
30
- regexp_parser (2.8.3)
31
- rexml (3.2.6)
32
- rspec (3.12.0)
33
- rspec-core (~> 3.12.0)
34
- rspec-expectations (~> 3.12.0)
35
- rspec-mocks (~> 3.12.0)
36
- rspec-core (3.12.2)
37
- rspec-support (~> 3.12.0)
38
- rspec-expectations (3.12.3)
29
+ rake (13.2.1)
30
+ regexp_parser (2.9.2)
31
+ rspec (3.13.0)
32
+ rspec-core (~> 3.13.0)
33
+ rspec-expectations (~> 3.13.0)
34
+ rspec-mocks (~> 3.13.0)
35
+ rspec-core (3.13.2)
36
+ rspec-support (~> 3.13.0)
37
+ rspec-expectations (3.13.3)
39
38
  diff-lcs (>= 1.2.0, < 2.0)
40
- rspec-support (~> 3.12.0)
41
- rspec-mocks (3.12.6)
39
+ rspec-support (~> 3.13.0)
40
+ rspec-mocks (3.13.2)
42
41
  diff-lcs (>= 1.2.0, < 2.0)
43
- rspec-support (~> 3.12.0)
44
- rspec-support (3.12.1)
45
- rubocop (1.59.0)
42
+ rspec-support (~> 3.13.0)
43
+ rspec-support (3.13.1)
44
+ rubocop (1.68.0)
46
45
  json (~> 2.3)
47
46
  language_server-protocol (>= 3.17.0)
48
47
  parallel (~> 1.10)
49
- parser (>= 3.2.2.4)
48
+ parser (>= 3.3.0.2)
50
49
  rainbow (>= 2.2.2, < 4.0)
51
- regexp_parser (>= 1.8, < 3.0)
52
- rexml (>= 3.2.5, < 4.0)
53
- rubocop-ast (>= 1.30.0, < 2.0)
50
+ regexp_parser (>= 2.4, < 3.0)
51
+ rubocop-ast (>= 1.32.2, < 2.0)
54
52
  ruby-progressbar (~> 1.7)
55
53
  unicode-display_width (>= 2.4.0, < 3.0)
56
- rubocop-ast (1.30.0)
57
- parser (>= 3.2.1.0)
58
- ruby-next-core (1.0.0)
54
+ rubocop-ast (1.33.0)
55
+ parser (>= 3.3.1.0)
56
+ ruby-next-core (1.0.3)
59
57
  ruby-progressbar (1.13.0)
60
- unicode-display_width (2.5.0)
61
- yabeda (0.12.0)
58
+ unicode-display_width (2.6.0)
59
+ yabeda (0.13.1)
62
60
  anyway_config (>= 1.0, < 3)
63
61
  concurrent-ruby
64
62
  dry-initializer
65
63
 
66
64
  PLATFORMS
67
- arm64-darwin-21
65
+ aarch64-linux
66
+ arm64-darwin
67
+ x86_64-darwin
68
68
  x86_64-linux
69
69
 
70
70
  DEPENDENCIES
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Yabeda
4
4
  module GC
5
- VERSION = "0.3.0"
5
+ VERSION = "0.4.0"
6
6
  end
7
7
  end
data/lib/yabeda/gc.rb CHANGED
@@ -8,54 +8,51 @@ module Yabeda
8
8
  module GC
9
9
  EMPTY_HASH = {}.freeze
10
10
 
11
- Yabeda.configure do
12
- group :gc
11
+ # Don't use a constant. No need to retain this after registering gauges.
12
+ comments = {
13
+ count: "Count of all GCs",
14
+ compact_count: "Count of all GC compactions",
15
+ minor_gc_count: "Count of minor GCs",
16
+ major_gc_count: "Count of major GCs",
17
+ heap_allocated_pages: "Total number of pages allocated for the heap",
18
+ heap_sorted_length: "Length of the sorted heap",
19
+ heap_allocatable_pages: "Total number of allocatable heap pages",
20
+ heap_available_slots: "Total number of slots in heap pages",
21
+ heap_live_slots: "Number of live objects slots",
22
+ heap_free_slots: "Number of free object slots",
23
+ heap_final_slots: "Number of object slots with finalizers attached to them",
24
+ heap_marked_slots: "Count of old objects which survived more than 3 GC cycles and number of write-barrier unprotected objects",
25
+ heap_eden_pages: "Number of pages allocated for the eden heap",
26
+ heap_tomb_pages: "Number of pages allocated for the tomb heap",
27
+ total_allocated_pages: "Total number of allocated pages over the lifetime of this process",
28
+ total_freed_pages: "Total number of freed pages over the lifetime of this process",
29
+ total_allocated_objects: "Total number of allocated objects over the lifetime of this process",
30
+ total_freed_objects: "Total number of freed objects over the lifetime of this process",
31
+ malloc_increase_bytes: "Total bytes allocated to objects",
32
+ malloc_increase_bytes_limit: "Bytes limit that will trigger garbage collection of objects",
33
+ remembered_wb_unprotected_objects: "Number of write-barrier unprotected objects in the remembered set",
34
+ remembered_wb_unprotected_objects_limit: "Limit on write-barrier unprotected objects allowed in the remembered set",
35
+ old_objects: "Number of old objects",
36
+ old_objects_limit: "Limit of old objects",
37
+ oldmalloc_increase_bytes: "Total bytes allocated to old objects",
38
+ oldmalloc_increase_bytes_limit: "Bytes limit that will trigger garbage collection of old objects",
13
39
 
14
- gauge :count, tags: [], comment: "Count of all GCs"
15
- gauge :compact_count, tags: [], comment: "Count of all GC compactions"
16
- gauge :minor_gc_count, tags: [], comment: "Count of minor GCs"
17
- gauge :major_gc_count, tags: [], comment: "Count of major GCs"
18
- gauge :heap_allocated_pages, tags: [], comment: "Total number of pages allocated for the heap"
19
- gauge :heap_sorted_length, tags: [], comment: "Length of the sorted heap"
20
- gauge :heap_allocatable_pages, tags: [], comment: "Total number of allocatable heap pages"
21
- gauge :heap_available_slots, tags: [], comment: "Total number of slots in heap pages"
22
- gauge :heap_live_slots, tags: [], comment: "Number of live objects slots"
23
- gauge :heap_free_slots, tags: [], comment: "Number of free object slots"
24
- gauge :heap_final_slots, tags: [], comment: "Number of object slots with finalizers attached to them"
25
- gauge :heap_marked_slots, tags: [],
26
- comment: "Count of old objects which survived more than 3 GC cycles and number of write-barrier unprotected objects"
27
- gauge :heap_eden_pages, tags: [], comment: "Number of pages allocated for the eden heap"
28
- gauge :heap_tomb_pages, tags: [], comment: "Number of pages allocated for the tomb heap"
29
- gauge :total_allocated_pages, tags: [],
30
- comment: "Total number of allocated pages over the lifetime of this process"
31
- gauge :total_freed_pages, tags: [], comment: "Total number of freed pages over the lifetime of this process"
32
- gauge :total_allocated_objects, tags: [],
33
- comment: "Total number of allocated objects over the lifetime of this process"
34
- gauge :total_freed_objects, tags: [], comment: "Total number of freed objects over the lifetime of this process"
35
- gauge :malloc_increase_bytes, tags: [], comment: "Total bytes allocated to objects"
36
- gauge :malloc_increase_bytes_limit, tags: [],
37
- comment: "Bytes limit that will trigger garbage collection of objects"
38
- gauge :remembered_wb_unprotected_objects, tags: [],
39
- comment: "Number of write-barrier unprotected objects in the remembered set"
40
- gauge :remembered_wb_unprotected_objects_limit, tags: [],
41
- comment: "Limit on write-barrier unprotected objects allowed in the remembered set"
42
- gauge :old_objects, tags: [], comment: "Number of old objects"
43
- gauge :old_objects_limit, tags: [], comment: "Limit of old objects"
44
- gauge :oldmalloc_increase_bytes, tags: [], comment: "Total bytes allocated to old objects"
45
- gauge :oldmalloc_increase_bytes_limit, tags: [],
46
- comment: "Bytes limit that will trigger garbage collection of old objects"
40
+ # Ruby 3.0
41
+ time: "The total time spent in garbage collections",
42
+ read_barrier_faults: "The total number of times the read barrier was triggered during compaction",
43
+ total_moved_objects: "The total number of objects compaction has moved",
47
44
 
48
- if RUBY_VERSION >= "3.0"
49
- gauge :time, tags: [], comment: "The total time spent in garbage collections"
50
- gauge :read_barrier_faults, tags: [], comment: "The total number of times the read barrier was triggered during compaction"
51
- gauge :total_moved_objects, tags: [], comment: "The total number of objects compaction has moved"
52
- end
45
+ # Ruby 3.3
46
+ marking_time: "Time spent in the marking phase",
47
+ sweeping_time: "Time spent in the sweeping phase"
48
+ }.freeze
53
49
 
54
- gauge :time, tags: [], comment: "The total time spent in garbage collections" if RUBY_VERSION >= "3.1"
50
+ Yabeda.configure do
51
+ group :gc
55
52
 
56
- if RUBY_VERSION >= "3.3"
57
- gauge :marking_time, tags: [], comment: "Time spent in the marking phase"
58
- gauge :sweeping_time, tags: [], comment: "Time spent in the sweeping phase"
53
+ # Register gauges for all GC stats. Include our optional commentary.
54
+ ::GC.stat.each_key do |stat_name|
55
+ gauge stat_name, tags: [], comment: comments.fetch(stat_name, stat_name)
59
56
  end
60
57
 
61
58
  collect do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yabeda-gc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ian Ker-Seymer
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-01-04 00:00:00.000000000 Z
11
+ date: 2024-11-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: yabeda
@@ -69,7 +69,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
69
69
  - !ruby/object:Gem::Version
70
70
  version: '0'
71
71
  requirements: []
72
- rubygems_version: 3.4.10
72
+ rubygems_version: 3.4.19
73
73
  signing_key:
74
74
  specification_version: 4
75
75
  summary: Extensible Prometheus exporter for monitoring Ruby gargage collection