Skip to content
Snippets Groups Projects
Commit 23fecf8f authored by Ludovic Courtès's avatar Ludovic Courtès
Browse files

cuirass: Log resource usage statistics regularly.

* src/cuirass/logging.scm (log-monitoring-stats): New procedure.
* bin/cuirass.in (main): Add a fiber that calls it regularly.
parent fcd1bc13
No related branches found
No related tags found
No related merge requests found
......@@ -142,6 +142,14 @@ exec ${GUILE:-@GUILE@} --no-auto-compile -e main -s "$0" "$@"
(run-cuirass-server db #:host host #:port port))))
#:parallel? #t)
(spawn-fiber
(essential-task
'monitor exit-channel
(lambda ()
(while #t
(log-monitoring-stats)
(sleep 600)))))
(primitive-exit (get-message exit-channel))))))
;; Most of our code is I/O so preemption doesn't matter much (it
......
......@@ -19,10 +19,13 @@
(define-module (cuirass logging)
#:use-module (srfi srfi-19)
#:use-module (ice-9 format)
#:use-module (ice-9 threads)
#:use-module (ice-9 ftw)
#:export (current-logging-port
current-logging-procedure
log-message
with-time-logging))
with-time-logging
log-monitoring-stats))
(define current-logging-port
(make-parameter (current-error-port)))
......@@ -61,3 +64,13 @@
(define-syntax-rule (with-time-logging name exp ...)
"Log under NAME the time taken to evaluate EXP."
(call-with-time-logging name (lambda () exp ...)))
(define (log-monitoring-stats)
"Log info about useful metrics: heap size, number of threads, etc."
(log-message "heap: ~,2f MiB; threads: ~a; file descriptors: ~a"
(/ (assoc-ref (gc-stats) 'heap-size) (expt 2. 20))
(length (all-threads))
(length
(scandir "/proc/self/fd"
(lambda (file)
(not (member file '("." ".."))))))))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment