UUID1 생성이 너무 느립니다.

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결과는 다음과 같습니다.

$ 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를 실행하고 있습니다...)

관련 정보