параллельный :Пауза (замена )долгий -выполнение при превышении предела памяти

Поскольку это немного скрыто в @Gilles, ответьте на быстрый способ загрузки zsh без какой-либо конфигурации, например..zshrc.zshenv и т. д.

zsh -f

Это полезно, когда вы хотите проверить, не препятствует ли что-либо в вашей конфигурации работе некоторых функций zsh.

2
21.01.2021, 16:55
2 ответа

С июня ситуация изменилась.

Git-версия e81a0eba теперь имеет--memsuspend

--memsuspend size (alpha testing)

Suspend jobs when there is less than 2 * size memory free. The size can be
postfixed with K, M, G, T, P, k, m, g, t, or p which would multiply the size
with 1024, 1048576, 1073741824, 1099511627776, 1125899906842624, 1000,
1000000, 1000000000, 1000000000000, or 1000000000000000, respectively.

If the available memory falls below 2 * size, GNU parallel will suspend some
of the running jobs. If the available memory falls below size, only one job
will be running.

If a single job takes up at most size RAM, all jobs will complete without
running out of memory. If you have swap available, you can usually lower
size to around half the size of a single jobs - with the slight risk of
swapping a little.

Jobs will be resumed when more RAM is available - typically when the oldest
job completes.
3
18.03.2021, 23:25

Нет. Но вы можете убить их и повторить:

memeater() {
  # Simple example that eats 10 MB/second up to 1 GB
  perl -e '$|=1;
    print "start @ARGV\n";
    for(1..100) {
      `sleep 0.1`;
      push @a, "a"x10_000_000;
    }
    print "end @ARGV\n";' $@;
}
export -f memeater

# Only start a job if there is 20 GB RAM free.
# Kill the youngest job when there is 10 GB RAM free.
parallel --retries 100 -j0 --delay 0.1 --memfree 20G memeater ::: {1..100}

Если вы добавите --lb, вы увидите, что некоторые задания запускаются, но уничтожаются до того, как могут завершиться. Позже они будут запущены снова -до 100 раз, после чего GNU Parallel отказывается от этой работы.

0
18.03.2021, 23:25

Теги

Похожие вопросы