[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#34060] [PATCH 01/10] profiling: Add a "gc" profiling component.
From: |
Ludovic Courtès |
Subject: |
[bug#34060] [PATCH 01/10] profiling: Add a "gc" profiling component. |
Date: |
Sun, 13 Jan 2019 16:47:24 +0100 |
* guix/profiling.scm (show-gc-stats): New procedure.
<top level>: Call 'register-profiling-hook!'.
---
guix/profiling.scm | 25 ++++++++++++++++++++++++-
1 file changed, 24 insertions(+), 1 deletion(-)
diff --git a/guix/profiling.scm b/guix/profiling.scm
index 753fc6c22e..e1c205a543 100644
--- a/guix/profiling.scm
+++ b/guix/profiling.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2017 Ludovic Courtès <address@hidden>
+;;; Copyright © 2017, 2019 Ludovic Courtès <address@hidden>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -18,6 +18,7 @@
(define-module (guix profiling)
#:use-module (ice-9 match)
+ #:autoload (ice-9 format) (format)
#:export (profiled?
register-profiling-hook!))
@@ -50,3 +51,25 @@
(for-each (lambda (hook)
(add-hook! hook thunk))
%profiling-hooks)))
+
+(define (show-gc-stats)
+ "Display garbage collection statistics."
+ (define MiB (* 1024 1024.))
+ (define stats (gc-stats))
+
+ (format (current-error-port) "Garbage collection statistics:
+ heap size: ~,2f MiB
+ allocated: ~,2f MiB
+ GC times: ~a
+ time spent in GC: ~,2f seconds (~d% of user time)~%"
+ (/ (assq-ref stats 'heap-size) MiB)
+ (/ (assq-ref stats 'heap-total-allocated) MiB)
+ (assq-ref stats 'gc-times)
+ (/ (assq-ref stats 'gc-time-taken)
+ internal-time-units-per-second 1.)
+ (inexact->exact
+ (round (* (/ (assq-ref stats 'gc-time-taken)
+ (tms:utime (times)) 1.)
+ 100)))))
+
+(register-profiling-hook! "gc" show-gc-stats)
--
2.20.1
- [bug#34060] [PATCH 00/10] Add a cache for package lookups, Ludovic Courtès, 2019/01/13
- [bug#34060] [PATCH 01/10] profiling: Add a "gc" profiling component.,
Ludovic Courtès <=
- [bug#34060] [PATCH 03/10] packages: Remove 'find-newest-available-packages'., Ludovic Courtès, 2019/01/13
- [bug#34060] [PATCH 04/10] inferior: Add 'gexp->derivation-in-inferior'., Ludovic Courtès, 2019/01/13
- [bug#34060] [PATCH 02/10] guix package: Avoid 'find-newest-available-packages'., Ludovic Courtès, 2019/01/13
- [bug#34060] [PATCH 10/10] status: Distinguish 'package-cache' profile hook., Ludovic Courtès, 2019/01/13
- [bug#34060] [PATCH 05/10] discovery: Add 'fold-module-public-variables*'., Ludovic Courtès, 2019/01/13
- [bug#34060] [PATCH 06/10] pull: Build profile with 'channel-instances->derivation'., Ludovic Courtès, 2019/01/13
- [bug#34060] [PATCH 08/10] edit: Use 'specification->location' to read information from the cache., Ludovic Courtès, 2019/01/13
- [bug#34060] [PATCH 09/10] guix package: '--list-available' can use data from the cache., Ludovic Courtès, 2019/01/13
- [bug#34060] [PATCH 07/10] channels: Compute a package cache and use it., Ludovic Courtès, 2019/01/13