yabeda-gc 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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