Как стать автором
Обновить

Linux: удаление пула блокировок /dev/random

Время на прочтение 7 мин
Количество просмотров 6.9K
Всего голосов 20: ↑15 и ↓5 +10
Комментарии 16

Комментарии 16

Всё очень просто. Интерфейс надо назвать /dev/badrandom. Тогда желающие найти лучшую случайность, но не умеющие читать документацию, сами будут обходить этот интерфейс 10-й дорогой. :)
Осталось это объяснить еще паре миллионов разработчиков, и золотой ключик у нас в кармане!
Поставил минус, и вот почему:

1. Тег «Tutorial» абсолютно неуместен для перевода новостной статьи.
2. Качество перевода оставляет желать лучшего, даже начиная с заголовка. Искажен смысл.

Например, фраза «blocking pool» несколько раз (в том числе в заголовке) переведена как «пул блокировок». Правильный перевод — блокирующий пул.
Правильный перевод с точки зрения кого? Microsoft использует понятие «пул блокировки» во множестве технических текстов, переведенных на русский язык. «Пул блокировки» имеется в курсе «Блокировки объектов» © Postgres Professional, 2019 год Рогова и Лузанова. ИМХО, формулировки «Пул блокировки» или «блокирующий пул» никоим образом не искажают смысл данного явления.
Термин «Пул блокировки» действительно существует, но в данном контексте неуместен (и, таким образом, является ошибочным переводом), поскольку относится совсем к другому объекту. А именно, в приведенном вами курсе он относится к теме блокировки одновременного доступа различных потоков или процессов к одному и тому же объекту. Из такого пула (в котором хранятся блокировки) процесс может взять блокировку, попользоваться и вернуть. Пул, таким образом, отслеживает, сколько блокировок осталось. См. habr.com/ru/company/postgrespro/blog/462877.

В данном же тексте «пул» относится не к блокировкам, а к энтропии, и пул ее накапливает. В пул энтропия примешивается извне, и из пула извлекаются биты. До недавнего времени таких пулов было два: блокирующий (который не дает извлекать биты, а зависает, т.е. блокирует исполнение, если их попытаться извлечь больше, чем поступило энтропии), и неблокирующий (который позволяет извлекать биты до бесконечности, перемешивая свое внутреннее состояние).
Согласен, относительно контекста Вы правы. Но переводчик вполне может не знать этих нюансов. По собственному опыту скажу — невозможно найти универсальных переводчиков, которые одинаково хорошо разбираются во всей IT-тематике.
Согласен насчет несуществования универсальных переводчиков. Считаю это частным случаем проблемы несуществования универсальных IT-специалистов. Но в контексте хабра никто не заставляет конкретного человека переводить конкретную статью. Пусть выбирает и переводит то, в чем на 100% разбирается, т.е. такую статью, где он мог бы (будь она академической) выступить в роли рецензента или оппонента. Тогда и перевод (а точнее — уже пересказ) будет близок к идеальному.
Недавно неожиданно столкнулся с этим «багом» на одном из своих ноутов с гентой. Загрузка залипала на инициализации RNG и не грузилась дальше, пока не покормишь её энтропией (поклацать рандомно клавиатурой, повозить мышкой), потом её попускало и всё работало дальше. Залип, видимо, был как раз на getrandom().

Один из туториалов по решению этой проблемы предложил установить HAVEGED который как-то там доливает недостающую энтропию алгоритмически. И, действительно, помогло. Жаль, что это не упомянуто в статье, как один из «бытовых» способов решения.
А не могли бы вы уточнить что за софт к этому привёл? Относительно давно пользуюсь гентой и такого что-то не наблюдал
Никакой софт не «привёл», я просто устанавливал Gentoo Linux на этот ноутбук (HP ProBook 6465b) и сразу при первой же загрузке вылез вот такой спецэффект. На других ноутах с гентой не наблюдал, так что это не её проблема, скорее всего, а самого ноута.
Вероятно, связано с возрастом подопытного ноутбука, т.к. он из всего моего парка самый старый.
Тыкните мейнтейнеров ядра в Gentoo вот в этот коммит, он реализует логику, подобную haveged, в самом ядре. Входит в ядро 5.4, по идее должен быть бекпортирован в более ранние ядра.

Та же фигня на Debian, чинил так же.

Он вносит «два основных семантических изменения в случайных API Linux».

Прямо какой-то chaotic monkey во всей красе: ищите, какие два API были изменены на этой неделе!

Еще бы регуляторы разрешили использовать /dev/random, не говоря уже об /dev/urandom вместо своего «оборудования», со своим супер-кривым софтом в качестве источника энтропии… грёбаные аттестации и грёбаные гсч мне всю малину скоро испортят.
Эта проблема очень сильно портила производительность на ранних android устройствах.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий