2017-02-28 6 views
1

SyntaxNet을 Docker Toolbox를 사용하여 Dockerfile에서 설치하려고하면 가상 메모리가 소모되었습니다. 나는에서 그것을 둘 것입니다 어디에하지만 잘 모르겠어요, 난이 Bazel의 기본 작업을 변경하여 해결 될 수있는 느낌이 --jobs=1 (예를 들어)로 제한가상 메모리가 부족합니다. Docker Toolbox를 사용하여 SyntaxNet 설치

ERROR: /root/.cache/bazel/_bazel_root/5b21cea144c0077ae150bf0330ff61a0/external/org_tensorflow/tensorflow/core/kernels/BUILD:1921:1: C++ compilation of rule '@org_tensorflow//tensorflow/core/kernels:svd_op' failed: gcc failed: error executing command /usr/bin/gcc -U_FORTIFY_SOURCE '-D_FORTIFY_SOURCE=1' -fstack-protector -Wall -Wl,-z,-relro,-z,now -B/usr/bin -B/usr/bin -Wunused-but-set-parameter -Wno-free-nonheap-object -fno-canonical-system-headers ... (remaining 115 argument(s) skipped): com.google.devtools.build.lib.shell.BadExitStatusException: Process exited with status 1. virtual memory exhausted: Cannot allocate memory ____Building complete. ____Elapsed time: 8548.364s, Critical Path: 8051.91s 

: 나는 Dockerfile 컴파일이 메시지를받은 Dockerfile.

답변

2

는 두 가지 가능성이 있습니다 : 그것은 다음과 같은 텍스트가 포함 된 ~/.bazelrc 생성되도록이 Dockerfile을 수정할 수 중 하나 이것은 Dockerfile가 실행되는 경우에도, 작동

build --jobs=1 

참고 bazel build에 반대 bazel test () .bazelrcbuild 플래그가 Bazel의 test 명령에도 적용되기 때문입니다.

다른 가능성은 --jobs=1 매개 변수를 포함하도록 Dockerfile의 RUN 명령을 수정하는 것입니다 (예 : RUN [...] && bazel test --jobs=1 --genrule_strategy=standalone [...].

Bazel은 빌드 중에 하나 이상의 하위 프로세스를 생성하지 않아야합니다. 호스트에서 "ps axuf"를 실행하고 컨테이너의 프로세스 트리를 보면이를 확인할 수 있습니다. RUN cmd를 수정 한 경우 Bazel의 명령 줄에 --jobs=1 매개 변수가 표시되어야합니다.