GNU bug report logs - #39283
[PATCH] gnu: Add earlyoom.

Previous Next

Package: guix-patches;

Reported by: Pkill -9 <pkill9 <at> runbox.com>

Date: Sat, 25 Jan 2020 21:25:01 UTC

Severity: normal

Tags: patch

Done: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>

Bug is archived. No further changes may be made.

Full log


Message #10 received at 39283 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: Pkill -9 <pkill9 <at> runbox.com>
Cc: 39283 <at> debbugs.gnu.org
Subject: Re: bug#39283: [PATCH] gnu: Add earlyoom.
Date: Fri, 31 Jan 2020 02:43:44 -0500
[Message part 1 (text/plain, inline)]
Hello Pkill -9,

Pkill -9 <pkill9 <at> runbox.com> writes:

> * gnu/packages/linux.scm (earlyoom): New variable.
> ---
>  gnu/packages/linux.scm | 37 +++++++++++++++++++++++++++++++++++++
>  1 file changed, 37 insertions(+)
>
> diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
> index e5cc773ecc..892906cc70 100644
> --- a/gnu/packages/linux.scm
> +++ b/gnu/packages/linux.scm
> @@ -6215,3 +6215,40 @@ the Linux kernel, C standard library, and libdl (for dynamic linking).  While
>  ELL is designed to be efficient and compact enough for use on embedded Linux
>  platforms, it is not limited to resource-constrained systems.")
>      (license license:lgpl2.1+)))
> +
> +(define-public earlyoom
> +  (package
> +   (name "earlyoom")
> +   (version "1.3")
> +   (source (origin
> +            (method git-fetch)
> +            (uri (git-reference
> +                  (url "https://github.com/rfjakob/earlyoom.git")
> +                  (commit (string-append "v" version))))
> +            (file-name (git-file-name name version))
> +            (sha256
> +             (base32
> +              "0fwbx0y80nqgkxrc9kf9j3iwa0wbps2jmqir3pgqbc2cj0wjh0lr"))))
> +   (build-system gnu-build-system)
> +   (arguments
> +    `(#:make-flags `("CC=gcc"
> +                     ,(string-append "DESTDIR="
> +                                     (assoc-ref %outputs "out"))
> +                     "PREFIX=")
> +      #:tests? #f ;; no tests
> +      #:phases (modify-phases
> +                %standard-phases
> +                (delete 'configure)
> +                (add-after 'install 'remove-systemd-service
> +                           (lambda* (#:key outputs #:allow-other-keys)
> +                             (let ((out (assoc-ref outputs "out")))
> +                               (delete-file-recursively
> +                                (string-append out "/etc/systemd")))
> +                             #t)))))
> +   (home-page "https://github.com/rfjakob/earlyoom")
> +   (synopsis "Automatically kill processes in low-memory situations")
> +   (description "Earlyoom checks the amount of available memory and free swap
> +up to 10 times a second (less often if there is a lot of free memory).  By
> +default if both are below 10%, it will kill the largest process (highest
> +oom_score).  The percentage value is configurable via command line arguments.")
> +   (license license:expat)))


I happened to have prepared earlyoom recently, but delayed its inclusion
due to finishing a service for it (only the doc remains).

I'm attaching it.  My version seems slightly more complete (I generate
the doc and run the tests).  If you don't have an objection I could push
it to master.

[0001-gnu-Add-earlyoom.patch (text/x-patch, attachment)]
[Message part 3 (text/plain, inline)]
Then there is a Shepherd service for convenience.  I haven't tried all
the switches, but I presume it'd work, given that they seem to be
translated correctly into earyloom's command line options (there's a
unit test for it).

[0002-gnu-Add-earlyoom-service-type.patch (text/x-patch, attachment)]
[Message part 5 (text/plain, inline)]
And then enjoy your hang free system :-)

Thank you,

Maxim

This bug report was last modified 5 years and 169 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.