unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#53057] [PATCH] gnu: Add stress-ng.
@ 2022-01-06 18:06 Tobias Geerinckx-Rice via Guix-patches via
  2022-01-07  4:39 ` Maxim Cournoyer
  0 siblings, 1 reply; 3+ messages in thread
From: Tobias Geerinckx-Rice via Guix-patches via @ 2022-01-06 18:06 UTC (permalink / raw)
  To: 53057

* gnu/packages/admin.scm (stress-ng): New public variable.
---
 gnu/packages/admin.scm | 67 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 67 insertions(+)

diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index d45857150f..6e180ec80a 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -2260,6 +2260,73 @@ (define-public stress
 system is under heavy load.")
     (license license:gpl2+)))
 
+(define-public stress-ng
+  (package
+    (name "stress-ng")
+    (version "0.13.10")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ColinIanKing/stress-ng")
+             (commit (string-append "V" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1z9vjn2131iv3pwrh04z6r5ygi1qgad5bi3jhghcvc3v1b4k5ran"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list #:make-flags
+           #~(list (string-append "CC=" #$(cc-for-target))
+                   (string-append "BINDIR=" #$output "/bin")
+                   (string-append "MANDIR=" #$output "/share/man")
+                   (string-append "JOBDIR=" #$output
+                                  "/share/stress-ng/example-jobs")
+                   (string-append "BASHDIR=" #$output
+                                  "/share/bash-completion/completions"))
+           #:test-target "lite-test"
+           #:phases
+           #~(modify-phases %standard-phases
+               (delete 'configure)      ; no configure script
+               (add-after 'check 'check-a-little-harder
+                 ;; XXX Guix supports only one #:test-target.  Run more tests.
+                 (lambda* (#:key tests? #:allow-other-keys)
+                   (when tests?
+                     (substitute* "debian/tests/fast-test-all"
+                       (("EXCLUDE=\"" exclude=)
+                        (string-append exclude=
+                                       ;; Fails if host kernel denies ptracing.
+                                       "ptrace ")))
+                     (invoke "make" "fast-test-all"
+                             "-j" (number->string (parallel-job-count)))))))))
+    (inputs
+     (list keyutils
+           kmod
+           libaio
+           libbsd
+           libcap
+           libgcrypt
+           zlib))
+    (home-page "https://github.com/ColinIanKing/stress-ng")
+    (synopsis "Load and stress-test a computer system in various ways")
+    (description
+     "stress-ng stress-tests a computer system by exercising both physical
+subsystems as operating system kernel interfaces.  It can stress the CPU, cache,
+disk, memory, socket and pipe I/O, scheduling, and much more, in various
+selectable ways.  This can trip hardware issues such as thermal overruns as well
+as operating system bugs that occur only when a system is being thrashed hard.
+
+You can also measure test throughput rates, which can be useful to observe
+performance changes across different operating system releases or types of
+hardware.  However, stress-ng is not a benchmark.  Use it with caution: some of
+the tests can make poorly designed hardware run dangerously hot or make the
+whole system lock up.
+
+Compared to its inspiration, @command{stress}, @command{stress-ng} offers many
+additional options such as the number of bogo operations to run, execution
+metrics, verification of memory and computational operations, and considerably
+more stress mechanisms.")
+    (license license:gpl2+)))
+
 (define-public detox
   (package
     (name "detox")
-- 
2.34.0





^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [bug#53057] [PATCH] gnu: Add stress-ng.
  2022-01-06 18:06 [bug#53057] [PATCH] gnu: Add stress-ng Tobias Geerinckx-Rice via Guix-patches via
@ 2022-01-07  4:39 ` Maxim Cournoyer
  2022-01-07  4:48   ` bug#53057: " Tobias Geerinckx-Rice via Guix-patches via
  0 siblings, 1 reply; 3+ messages in thread
From: Maxim Cournoyer @ 2022-01-07  4:39 UTC (permalink / raw)
  To: Tobias Geerinckx-Rice; +Cc: 53057

Hi Tobias,

How timely! :-)

Tobias Geerinckx-Rice <me@tobias.gr> writes:

> * gnu/packages/admin.scm (stress-ng): New public variable.
> ---
>  gnu/packages/admin.scm | 67 ++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 67 insertions(+)
>
> diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
> index d45857150f..6e180ec80a 100644
> --- a/gnu/packages/admin.scm
> +++ b/gnu/packages/admin.scm
> @@ -2260,6 +2260,73 @@ (define-public stress
>  system is under heavy load.")
>      (license license:gpl2+)))
>
> +(define-public stress-ng
> +  (package
> +    (name "stress-ng")
> +    (version "0.13.10")
> +    (source
> +     (origin
> +       (method git-fetch)
> +       (uri (git-reference
> +             (url "https://github.com/ColinIanKing/stress-ng")
> +             (commit (string-append "V" version))))
> +       (file-name (git-file-name name version))
> +       (sha256
> +        (base32 "1z9vjn2131iv3pwrh04z6r5ygi1qgad5bi3jhghcvc3v1b4k5ran"))))
> +    (build-system gnu-build-system)
> +    (arguments
> +     (list #:make-flags
> +           #~(list (string-append "CC=" #$(cc-for-target))
> +                   (string-append "BINDIR=" #$output "/bin")
> +                   (string-append "MANDIR=" #$output "/share/man")
> +                   (string-append "JOBDIR=" #$output
> +                                  "/share/stress-ng/example-jobs")
> +                   (string-append "BASHDIR=" #$output
> +                                  "/share/bash-completion/completions"))
> +           #:test-target "lite-test"
> +           #:phases
> +           #~(modify-phases %standard-phases
> +               (delete 'configure)      ; no configure script
> +               (add-after 'check 'check-a-little-harder
> +                 ;; XXX Guix supports only one #:test-target.  Run more tests.
> +                 (lambda* (#:key tests? #:allow-other-keys)
> +                   (when tests?
> +                     (substitute* "debian/tests/fast-test-all"
> +                       (("EXCLUDE=\"" exclude=)
> +                        (string-append exclude=
> +                                       ;; Fails if host kernel denies ptracing.
> +                                       "ptrace ")))
> +                     (invoke "make" "fast-test-all"
> +                             "-j" (number->string (parallel-job-count)))))))))

This looks good and works good too!  My only comment is that this should
honor parallel-tests?.  Reusing the check phase but overriding the
test-target argument should do it:

modified   gnu/packages/admin.scm
@@ -2289,15 +2289,15 @@ (define-public stress-ng
                (delete 'configure)      ; no configure script
                (add-after 'check 'check-a-little-harder
                  ;; XXX Guix supports only one #:test-target.  Run more tests.
-                 (lambda* (#:key tests? #:allow-other-keys)
+                 (lambda* (#:key tests? #:allow-other-keys #:rest args)
                    (when tests?
                      (substitute* "debian/tests/fast-test-all"
                        (("EXCLUDE=\"" exclude=)
                         (string-append exclude=
                                        ;; Fails if host kernel denies ptracing.
-                                       "ptrace ")))
-                     (invoke "make" "fast-test-all"
-                             "-j" (number->string (parallel-job-count)))))))))
+                                       "ptrace "))))
+                   (apply (assoc-ref %standard-phases 'check)
+                          `(,@args #:test-target "fast-test-all")))))))
     (inputs
      (list keyutils
            kmod

Otherwise, LGTM!  Feel free to push with such adjustment.

Thank you!

Maxim




^ permalink raw reply	[flat|nested] 3+ messages in thread

* bug#53057: [PATCH] gnu: Add stress-ng.
  2022-01-07  4:39 ` Maxim Cournoyer
@ 2022-01-07  4:48   ` Tobias Geerinckx-Rice via Guix-patches via
  0 siblings, 0 replies; 3+ messages in thread
From: Tobias Geerinckx-Rice via Guix-patches via @ 2022-01-07  4:48 UTC (permalink / raw)
  To: Maxim Cournoyer; +Cc: 53057-done

[-- Attachment #1: Type: text/plain, Size: 250 bytes --]

Hi Maxim,

Maxim Cournoyer 写道:
> + (apply (assoc-ref %standard-phases 'check)

This is a trick I've forgotten before… sigh.  Thanks for pointing 
it out!

Pushed as 046322189b62981fca6baab4e758e6878eab0758.

Kind regards,

T G-R

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 247 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-01-07  5:01 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-01-06 18:06 [bug#53057] [PATCH] gnu: Add stress-ng Tobias Geerinckx-Rice via Guix-patches via
2022-01-07  4:39 ` Maxim Cournoyer
2022-01-07  4:48   ` bug#53057: " Tobias Geerinckx-Rice via Guix-patches via

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).