Los requisitos de construcción de Deno parecen ser 16GB de RAM, pero quiero construirlo con 8GB de RAM a toda costa
Hola, soy un inútil.
Cuando intenté modificarlo y construirlo yo mismo,
error: linking with `cc` failed: exit status: 1
apareció y la compilación no se completó.
Pensándolo bien, parece ser un error que ocurre cuando el enlazador está haciendo algo, pero no encontré nada al buscarlo.
La respuesta está en syslog
Bueno, estaba construyendo conectándome por SSH a mi máquina Devuan de servidor doméstico, pero esto tampoco funcionó.
Y por casualidad, como tenía la pantalla de la máquina Devuan conectada a un monitor, la salida de error era, por alguna razón... ¿OOM Killer?
$ sudo cat /var/log/syslog | grep "Out of memory"
Oct 13 11:50:16 localhost kernel: [227399.170721] Out of memory: Killed process 8309 (ld) total-vm:2711000kB, anon-rss:2682476kB, file-rss:1608kB, shmem-rss:0kB, UID:1000 pgtables:5352kB oom_score_adj:0
Oct 13 12:38:52 localhost kernel: [230315.610776] Out of memory: Killed process 9472 (ld) total-vm:2883664kB, anon-rss:2872404kB, file-rss:1468kB, shmem-rss:0kB, UID:1000 pgtables:5704kB oom_score_adj:0
Oct 13 16:34:15 localhost kernel: [244437.896036] Out of memory: Killed process 9979 (ld) total-vm:2195452kB, anon-rss:2187944kB, file-rss:1604kB, shmem-rss:0kB, UID:1000 pgtables:4348kB oom_score_adj:0
$ date
2024年 10月 13日 日曜日 16:48:12 JST
Al parecer, no hay suficiente memoria y los procesos iniciados para la compilación son eliminados, impidiendo que se complete.
Ya había abierto un issue, pero
cargo test -vv faild on Arch/Artix Linux #26191
Aunque no estaba escrito en los requisitos para construir desde la fuente oficial, el requisito mínimo de RAM para la construcción parece ser de 16GB...
Para probar, cuando lo construí en mi PC de escritorio con casi 40GB de RAM, funcionó...
¡¡De cualquier manera, quiero compilar Deno en un entorno con 8GB de RAM!!
Al final, si solo quieres que el binario de deno funcione por ahora, como me indicaron en el issue,
cargo build -p deno --bin deno
parece ser suficiente, pero aún así no siempre funciona.
Así que, busqué formas de reducir el uso de memoria...
CARGO_BUILD_JOBS=1 cargo build -p deno --bin deno -j 1
Probablemente sea lento, pero si lo construyes una vez normalmente, y luego usas lo de arriba después de que ocurra el OOM Killer, utilizará la caché para construirlo, por lo que terminará relativamente rápido.
Al limitar los trabajos de construcción a uno y usar solo un hilo de CPU para la compilación, el impacto en otras cosas que se estén ejecutando mientras se compila es mínimo, así que creo que es una buena combinación de variable de entorno/opción, aunque sea una opinión humilde. Por otro lado, es lento...
Entonces, hasta la próxima.
Saludos.