Expose Guile GC metrics
As the guix-data-service process seems to be using excessive amounts of memory, and this will be useful to track it.
This commit is contained in:
parent
ff77bbea7e
commit
8dd164665a
2 changed files with 38 additions and 2 deletions
|
|
@ -24,6 +24,7 @@
|
||||||
#:use-module (fibers)
|
#:use-module (fibers)
|
||||||
#:use-module (fibers channels)
|
#:use-module (fibers channels)
|
||||||
#:use-module (fibers conditions)
|
#:use-module (fibers conditions)
|
||||||
|
#:use-module (prometheus)
|
||||||
#:export (call-with-time-logging
|
#:export (call-with-time-logging
|
||||||
with-time-logging
|
with-time-logging
|
||||||
prevent-inlining-for-tests
|
prevent-inlining-for-tests
|
||||||
|
|
@ -37,7 +38,9 @@
|
||||||
chunk!
|
chunk!
|
||||||
chunk-for-each!
|
chunk-for-each!
|
||||||
|
|
||||||
delete-duplicates/sort!))
|
delete-duplicates/sort!
|
||||||
|
|
||||||
|
get-gc-metrics-updater))
|
||||||
|
|
||||||
(define (call-with-time-logging action thunk)
|
(define (call-with-time-logging action thunk)
|
||||||
(simple-format #t "debug: Starting ~A\n" action)
|
(simple-format #t "debug: Starting ~A\n" action)
|
||||||
|
|
@ -243,3 +246,30 @@
|
||||||
current-element
|
current-element
|
||||||
(cons current-element
|
(cons current-element
|
||||||
result)))))))))
|
result)))))))))
|
||||||
|
|
||||||
|
(define (get-gc-metrics-updater registry)
|
||||||
|
(define metrics
|
||||||
|
`((gc-time-taken
|
||||||
|
. ,(make-gauge-metric registry "guile_gc_time_taken"))
|
||||||
|
(heap-size
|
||||||
|
. ,(make-gauge-metric registry "guile_heap_size"))
|
||||||
|
(heap-free-size
|
||||||
|
. ,(make-gauge-metric registry "guile_heap_free_size"))
|
||||||
|
(heap-total-allocated
|
||||||
|
. ,(make-gauge-metric registry "guile_heap_total_allocated"))
|
||||||
|
(heap-allocated-since-gc
|
||||||
|
. ,(make-gauge-metric registry "guile_allocated_since_gc"))
|
||||||
|
(protected-objects
|
||||||
|
. ,(make-gauge-metric registry "guile_gc_protected_objects"))
|
||||||
|
(gc-times
|
||||||
|
. ,(make-gauge-metric registry "guile_gc_times"))))
|
||||||
|
|
||||||
|
(lambda ()
|
||||||
|
(let ((stats (gc-stats)))
|
||||||
|
(for-each
|
||||||
|
(match-lambda
|
||||||
|
((name . metric)
|
||||||
|
(let ((value (assq-ref stats name)))
|
||||||
|
(metric-set metric value))))
|
||||||
|
metrics))))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -149,7 +149,11 @@
|
||||||
"-"
|
"-"
|
||||||
"_"))
|
"_"))
|
||||||
#:labels '(name))))
|
#:labels '(name))))
|
||||||
pg-stat-indexes-fields)))
|
pg-stat-indexes-fields))
|
||||||
|
|
||||||
|
(gc-metrics-updater
|
||||||
|
(get-gc-metrics-updater registry)))
|
||||||
|
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(letpar& ((metric-values
|
(letpar& ((metric-values
|
||||||
(with-thread-postgresql-connection
|
(with-thread-postgresql-connection
|
||||||
|
|
@ -234,6 +238,8 @@
|
||||||
(state . ,state)))))
|
(state . ,state)))))
|
||||||
load-new-guix-revision-job-metrics)
|
load-new-guix-revision-job-metrics)
|
||||||
|
|
||||||
|
(gc-metrics-updater)
|
||||||
|
|
||||||
(list (build-response
|
(list (build-response
|
||||||
#:code 200
|
#:code 200
|
||||||
#:headers '((content-type . (text/plain))))
|
#:headers '((content-type . (text/plain))))
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue