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 channels)
|
||||
#:use-module (fibers conditions)
|
||||
#:use-module (prometheus)
|
||||
#:export (call-with-time-logging
|
||||
with-time-logging
|
||||
prevent-inlining-for-tests
|
||||
|
|
@ -37,7 +38,9 @@
|
|||
chunk!
|
||||
chunk-for-each!
|
||||
|
||||
delete-duplicates/sort!))
|
||||
delete-duplicates/sort!
|
||||
|
||||
get-gc-metrics-updater))
|
||||
|
||||
(define (call-with-time-logging action thunk)
|
||||
(simple-format #t "debug: Starting ~A\n" action)
|
||||
|
|
@ -243,3 +246,30 @@
|
|||
current-element
|
||||
(cons current-element
|
||||
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))))
|
||||
pg-stat-indexes-fields)))
|
||||
pg-stat-indexes-fields))
|
||||
|
||||
(gc-metrics-updater
|
||||
(get-gc-metrics-updater registry)))
|
||||
|
||||
(lambda ()
|
||||
(letpar& ((metric-values
|
||||
(with-thread-postgresql-connection
|
||||
|
|
@ -234,6 +238,8 @@
|
|||
(state . ,state)))))
|
||||
load-new-guix-revision-job-metrics)
|
||||
|
||||
(gc-metrics-updater)
|
||||
|
||||
(list (build-response
|
||||
#:code 200
|
||||
#:headers '((content-type . (text/plain))))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue