
며칠 전에 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
결과는 다음과 같습니다.
$ 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.02s w
답변1
아마도 무작위성을 끌어낼 것입니다./dev/무작위, (그렇습니다, 제가 봤습니다) 어느할 것이다무작위성을 제공하기에 충분한 엔트로피가 축적될 때까지 차단합니다. 엔트로피는 키보드 사용, 마우스, USB, 하드 드라이브 활동 등을 통해 얻습니다.무작위의것들.
/dev/urandom은 차단하지 않지만 /dev/random에서 제공하는 임의성 수준을 제공할 수는 없습니다. 이상하게 들리겠지만 누군가는 극도로 무작위적인 무작위성을 요구하는 것이 분명합니다. 반면 저는 항상 평범한 무작위성에만 만족했습니다.
uuidgen 사용/dev/무작위-r(임의) uuid의 경우 시스템 시계(및 이더넷 MAC) -t(시간) uuid의 경우. 사용된 시계가 충분히 세분화되지 않은 경우 고유성을 보장하기 위해 특정 최소 시간이 지날 때까지 uuidgen이 차단될 수 있습니다. (내 입장에서는 추측이었으며 사실이 아니며 사과드립니다.)
나는 내 시스템에서 동일한 libuuid1 라이브러리인 v2.20-1을 사용하고 있으며 연속 루프를 실행하면 내 시스템이 각각 0.002초(2ms)에 임의의 uuid(-r 모드)를 생성하고 시간 기반 uuid가 0.004초에 생성되는 것을 보여줍니다. (4ms) 각각, 평균. 시스템에서 많은 작업을 수행합니까(많은!) 현재 다른 것들은요? (저부하 2GHz 시스템에서의 시간입니다.)
또한 두 개의 Raspberry Pi에서 테스트한 결과 시간 기반 또는 임의 기반 UUID 모두에서 평균 약 10ms(0.010초)가 나타났습니다. 시스템이 꽤 바쁜 것 같습니다. (또는 Atari 2600에서 Linux를 실행하고 있습니다...)