guix-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug#39283] [PATCH] gnu: Add earlyoom.


From: Maxim Cournoyer
Subject: [bug#39283] [PATCH] gnu: Add earlyoom.
Date: Fri, 31 Jan 2020 02:43:44 -0500
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux)

Hello Pkill -9,

Pkill -9 <address@hidden> 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.

Attachment: 0001-gnu-Add-earlyoom.patch
Description: Text Data

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).

Attachment: 0002-gnu-Add-earlyoom-service-type.patch
Description: Text Data

And then enjoy your hang free system :-)

Thank you,

Maxim

reply via email to

[Prev in Thread] Current Thread [Next in Thread]