go тест. / ... недостаточно памяти - PullRequest
0 голосов
/ 01 мая 2020

Я использую go test ./... в нашей системе сборки, и она занимает много памяти, иногда до 4 Гб в одной из наших систем. Есть ли способ, чтобы go test был менее ресурсоемким?

Редактировать: Чтобы получить больше контекста, мы запускаем тесты в образе docker. У нас есть 30 каталогов, и для каждого каталога мы создаем образ docker и запускаем в нем тесты. Мы бежим make -j4 test_each_all_directories. Наша машина имеет 15 ГБ оперативной памяти, и каждый каталог занимает <2 ГБ (кроме одного, который занимает 4 ГБ). </p>

Я искал способ «заставить» тест go использовать максимум 3 ГБ памяти или более подробное объяснение того, что идет не так (вещи не складываются, 15 Гб оперативной памяти - это больше, чем 4 + 2 + 2 + 2 максимум)

1 Ответ

1 голос
/ 01 мая 2020

Ваши тесты могут выполняться значительно дольше, но пробовали ли вы запускать их последовательно? С go help build

-p n
                the number of programs, such as build commands or
                test binaries, that can be run in parallel.
                The default is the number of CPUs available.

По умолчанию Go будет запускать несколько тестовых пакетов параллельно, если это возможно. Чтобы убедиться, что тесты, охватывающие несколько пакетов, выполняются последовательно, введите команду test с -p 1. Ваша тестовая команда станет:

go test ./... -p 1
...