Subject: bug#48178: Out of memory error when generating a docker-image.

From: Roel Janssen <[email-masked]>
Date: Mon, 03 May 2021 19:47:49 +0200

On Mon, 2021-05-03 at 12:39 -0400, Leo Famulari wrote:
> On Mon, May 03, 2021 at 12:09:36AM +0200, Roel Janssen wrote:
> > Looking at 'guix/scripts/system.scm', it seems that we always pass
> > 256M
> > of memory to the VM.  After bumping that to 4096M, I was able to
> > produce a docker image.
> 
> Can you test somes values that are in between? Like, 512M, 1024M,
> etc,
> until we know how much is actually required? If 512M is enough, I
> don't
> see a problem with increasing the hard-coded value to that.
> 

I monitored the VM's memory usage and it peaked at 1.6G. But after
testing, it seems 1024 also works.

I tested with 2048 (worked), 1024 (worked), and 512 (didn't work).

> > I'd like to see what we can do here.  Assigning too little memory
> > leads
> > to problems generating the container, but assigning too much memory
> > wil
> > l cause problems for computing machines that don't have much memory
> > to
> > spare.
> 

In that case... The attached patch would only increase the size when
generating a Docker container image.  Would that be acceptable?

> There are some use cases for this code that we'd like to work on
> low-resource machines (`guix system vm`), and other use cases (like
> building Docker images) that shouldn't be expected to work on
> machines
> with limited RAM.
> 
> > Would it be a good idea to make it configurable at run-time?
> 
> Yeah, maybe.
> 

I think it'd be better to have it somehow dynamically increase, but I
don't see how I could determine the VM size needed for a given system
configuration.  So perhaps the attached patch is an acceptable
compromise.

Kind regards,
Roel Janssen

From 0dcaf5cfc529f0ce31af46d4f3039f4b7dbebb9b Mon Sep 17 00:00:00 2001
From: Roel Janssen <[email-masked]>
Date: Mon, 3 May 2021 18:54:08 +0200
Subject: [PATCH] guix: scripts system: Increase the size for generating Docker
 container images.

* guix/scripts/system.scm: Override the default of 256.
---
 guix/scripts/system.scm | 1 +
 1 file changed, 1 insertion(+)

diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm
index 0a051ee4e3..a25e0dac52 100644
--- a/guix/scripts/system.scm
+++ b/guix/scripts/system.scm
@@ -717,6 +717,7 @@ checking this by themselves in their 'check' procedure."
        (lower-object (system-image image)))
       ((docker-image)
        (system-docker-image os
+                            #:memory-size 1024
                             #:shared-network? container-shared-network?)))))
 
 (define (maybe-suggest-running-guix-pull)
-- 
2.31.1