Предотвращение замедления машины из-за нехватки памяти

Как правило, заключайте аргумент в кавычки и экранируйте символы пробела в аргументе. В приведенном вами примере попробуйте:

rsync --size-only -avzPe ssh  "/mnt/xlses/split/v2/name\ with\ space/" "root@myserver.com:/mnt/xlses/split/v2/name\ with\ space"
1
16.02.2019, 00:24
2 ответа

Я думаю, что вы ищете --memfreeв GNU Parallel:

find... | parallel --memfree 1G dostuff

Это запустится dostuffтолько при наличии 1 ГБ ОЗУ.Он будет запускать еще один до тех пор, пока не будет свободно менее 1 ГБ ОЗУ или не будет выполняться 1 задание на каждый поток ЦП. Если 0,5 ГБ ОЗУ свободно (50% от 1 ГБ ОЗУ ), самая младшая работа будет уничтожена. Итак, в метакоде:

limit = 1G
while true:
  if freemem > limit:
    if count(running_jobs) < cpu.threads():
      another_job.start()
  if freemem < 0.5 * limit
    youngest_job.kill()

В сочетании с --retries 10вы можете сказать GNU Parallel повторить 10 раз остановленное задание.

Если dostuffзанимает некоторое время, чтобы сожрать память, используйте --delay 30s, чтобы подождать 30 секунд перед запуском следующего задания.

2
27.01.2020, 23:30
sysctl vm.overcommit_memory 2

Если вы хотите избежать контрольных групп

0
27.01.2020, 23:30

Теги

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