Параллельная приостановка и возобновление?

у "легкого веса" только есть значение при сравнении его с чем-то еще. Поток является более легким весом, чем процесс. Xfce является более легким весом, чем Gnome. Щенок Linux является более легким весом, чем Ubuntu.

Но нет никаких жестких правил для того, что делает что-то "легким". В целом что-то, что легко, использует меньше из чего-то, что это не так легко, но "что-то" могло быть многими вещами - могли быть ресурсы ЦП, память, дисковое пространство, и т.д.

3
13.09.2017, 13:46
4 ответа

GPG нужны некоторые случайные байты для шифрования. Если у Вас заканчивается энтропия в пуле, который заставит GPG приостанавливаться.

--quick-random будет использовать низкокачественные случайные числа, делая шифрование небезопасным (и поэтому бесполезный, так используйте его только, чтобы протестировать, является ли это проблемой, не в производстве), но не закончится. При использовании --quick-random не приостановится, затем это - причина Вашей проблемы.

3
27.01.2020, 21:13
  • 1
    Это могло бы быть проблемой. Я выполняю 8 из них параллельно, действительно могло случиться так, что это исчерпывает энтропию. Я испытаю это. –  Naftuli Kay 14.12.2013, 00:55
  • 2
    Это - хорошая гипотеза. Однако @NaftuliTzviKay не используют --quick-random: это для тестирования только, это не безопасно. (Я не делаю то, в зависимости от чего алгоритм gpg использует по умолчанию точно, что он делает плохой RNG, мог означать, что шифрованный текст тривиален для дешифрования.) Правильное решение состояло бы в том, чтобы использовать /dev/urandom вместо /dev/random (это безопасно за исключением недавно установленной системы). К сожалению, gpg не имеет опции использовать /dev/urandom. –  Gilles 'SO- stop being evil' 14.12.2013, 02:16
  • 3
    О, это интересно, я думал --quick-random использовал бы /dev/urandom. Угадайте, что я не использую его, затем :) –  Naftuli Kay 15.12.2013, 21:13

Как Ole Tange записал, gpg нужны случайные данные из /dev/random, который может замедлиться вполне быстро, если существует недостаточно энтропии.

Хорошее решение этой проблемы является haveged. При необходимости это предоставляет новую энтропию ядру (и поэтому/dev/random).

3
27.01.2020, 21:13

Гипотеза Ole Tange, что Gpg блокируется на чтении к /dev/random хороший. Можно подтвердить, что это путем рассмотрения одного из gpg обрабатывает, в то время как это заблокировано и проверяющий, на чем это заблокировано:

lsof -p1234
strace -s9999 -tt -p1234

(где 1234 является PID процесса gpg). Если Вы видите что-то вроде этого

…
gpg     1234 naftuli   4r   CHR    1,8      0t0       0 /dev/random
…
read(4, …

затем это - проблема.

Gpg не имеет никакой опции использовать /dev/urandom вместо /dev/random. Различие между теми двумя устройствами - это /dev/urandom никогда блоки (даже при редких обстоятельствах, когда это должно), тогда как /dev/random часто блоки (даже в общих падежах, где это не было должно). Для длинной истории читайте, рэнд от/dev/urandom, безопасного для ключа входа в систему?

Быстрое обходное решение должно было бы сделать копию gpg двоичного файла, замены /dev/random /tmp/random (или что-либо еще с той же длиной, которая, к сожалению, исключает /dev/urandom), и создайте символьную ссылку /tmp/random -> /dev/urandom.

1
27.01.2020, 21:13
  • 1
    По моему скромному мнению, лучшее решение состояло бы в том, чтобы использовать энтропийные фидеры как clrngd или rng-tools. Еще лучше должен был бы использовать аппаратный фидер энтропии. –  Elias Probst 14.12.2013, 02:35
  • 2
    @EliasProbst Это - излишество. Энтропия затухает далеко в геологическом темпе (или немного медленнее, на самом деле, с типичными значениями). После того как у Вас есть энтропия, это остается, имел, и /dev/urandom совершенно безопасно. –  Gilles 'SO- stop being evil' 14.12.2013, 02:40
  • 3
    я мог всегда просто покупать Счетчик Гейгера и идти полностью... Однако /dev/urandom должно быть достаточно безопасным для нормального использования. –  Naftuli Kay 15.12.2013, 21:23

Подкачка, ввод-вывод?

На что похож 1 из потоков? Мой первый инстинкт - то, что система ожидает некоторого ресурса для становления доступной, возможно, диски? подкачка?

Встроенная задержка?

Другая мысль - это gpg может иметь некоторые задержки, встроенные ни по какой другой причине, чем добавить к расходу создания ключей, и таким образом, задержки вызывают Ваше затишье в использовании ЦП.

Они были бы формой NOOP, где алгоритм генерации ключей ожидает неактивный в течение некоторого промежутка времени для передачи перед продолжением.

Также можно получить сведения о том, что продолжается путем выполнения 1 из gpg использование процессов strace видеть то, какие системные вызовы делаются.

Пример

$ strace gpg --encrypt --recipient "me@mail.com" "..."

Буфер?

Другая вещь, к которой я был бы подозрителен, буферизует. Возможно, существует буфер в Вашем конвейере, который исчерпывается быстрее, чем можно пополнить, таким образом, gpg процессы оголодали, чтобы работа сделала.

Вы могли использовать инструмент такой как pv выведать эту проблему путем помещения его после вывода от find.

Пример

$ find .... | sort | pv | ...

Я посмотрел бы на эти переключатели:

   -a, --average-rate
          Turn the average rate counter on.  This will display the average 
          rate of data transfer so far.

   -b, --bytes
          Turn the total byte counter on.  This will display the total 
          amount of data transferred so far.
0
27.01.2020, 21:13

Теги

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