Intereting Posts
Убивание сценария оболочки, работающего в фоновом режиме Можно ли использовать общий доступ к подключению Интернета к DHCP? Какая программа использует какой пакет? Соединения без Virtualhost Определите, когда скрипт python ожидает ввода вручную Контекстно-зависимое заполнение bash изменяет поведение подстановочных знаков Как обновить приглашение на изменение каталога «Автозапуск» из screenrc Удаленный файл заголовка /bits/types.h Как получить (только) http-статус сайта в сценарии оболочки? сервис запущен при загрузке, ведь все остальное? Копировать файлы из одного каталога в другой, игнорируя файлы, в которых файл назначения был изменен за последний час? Ограничить ssh с помощью отпечатка ключа хоста Есть ли разница между запуском программы в качестве демона и использованием nohup с & для запуска программы? Применить рекурсивный chmod только к файлам или папкам

Генерация UUID1 слишком медленная

Я обновил свой Ubuntu с 13.04 до 14.04 LTS несколько дней назад. Теперь я использую libuuid-2.20.1. Во всяком случае, после обновления мой UUID1 стал очень медленным.

$ time uuidgen -t f22c36aa-f511-11e3-9437-080027e59ea0 uuidgen -t 0.71s user 0.67s system 99% cpu 1.387 total $ time uuidgen -t fea4537c-f511-11e3-a6d5-080027e59ea0 uuidgen -t 0.72s user 0.67s system 99% cpu 1.394 total 

0,7 секунды прошло в uuidgen -t . Что может замедлить работу?

– обновлено –

Вот мой результат:

 $ w 09:48:55 up 5 days, 22:56, 3 users, load average: 0.37, 0.43, 0.43 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT sub :0 :0 Wed10 ?xdm? 2days 22.69s init --user --state-fd 41 --re sub pts/26 sub.local Wed18 16:47 17.00s 10.07s vim -b -b test/test_item.py sub pts/27 sub.local Wed18 7.00s 8.63s 0.02sw 

Вероятно, он набирает случайность из / dev / random (он делает, я смотрел), который блокируется до тех пор, пока не будет накоплена достаточная энтропия для обеспечения случайности. Энтропия достигается за счет использования клавиатуры, мыши, USB-устройств, активности жесткого диска, что-то … случайные вещи.

/ dev / urandom не блокирует, но не может обеспечить уровень случайности, предоставляемый / dev / random. Я знаю, звучит странно, очевидно, что кто-то требует чрезвычайно случайной случайности, тогда как я всегда был доволен простой случайной случайностью.

uuidgen использует / dev / random для -r (random) uuid, а системные часы (и MAC-адрес Ethernet) для -t (time) uuid's. Если используемые часы не достаточно гранулированы, uuidgen может блокироваться до тех пор, пока не будет достигнуто определенное минимальное время, чтобы обеспечить уникальность. (просвещенные спекуляции с моей стороны, никаких фактов, извинений).

Я использую одну и ту же библиотеку libuuid1, v2.20-1 в своей системе, и запуск непрерывного цикла показывает, что моя система генерирует случайные uuids (-r mode) на 0.002s (2ms) каждый, а временные uuid на 0.004s (4 мс) каждый, средний. Ваша система делает много ( много! ) Других вещей в настоящее время? (В те времена на слегка загруженной машине 2 ГГц).

Также тестировался на моих двух малиновых пинах, они составляют в среднем около 10 мс (0,010 с) как для времени, так и для случайных uuid … звучит так, как будто ваша система довольно занята. (Или вы используете linux на Atari 2600 …)