![UUID1 생성이 너무 느립니다.](https://linux55.com/image/38134/UUID1%20%EC%83%9D%EC%84%B1%EC%9D%B4%20%EB%84%88%EB%AC%B4%20%EB%8A%90%EB%A6%BD%EB%8B%88%EB%8B%A4..png)
며칠 전 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의 경우 -t(시간) uuid의 경우 시스템 시계(및 이더넷 MAC)입니다. 사용된 시계가 충분히 세분화되지 않은 경우 uuidgen은 고유성을 보장하기 위해 최소 시간이 경과할 때까지 차단될 수 있습니다. (제 추측은 정보입니다. 사실은 없습니다. 죄송합니다.)
내 시스템에서 동일한 libuuid1 라이브러리 v2.20-1을 사용하고 있으며 연속 루프를 실행하면 내 시스템이 각각 0.002초(2ms) 및 시간 기반 uuid에서 0.004초 내에 임의의 uuid(-r 모드)를 생성하는 것으로 표시됩니다. (4ms), 평균. 시스템에서 많은 작업을 수행합니까(많은!) 현재 다른 일이 있나요? (그 시간은 부하가 적은 2GHz 시스템에서였습니다.)
또한 두 개의 Raspberry Pi에서 테스트했는데 임의의 UUID를 기준으로 한 시간 또는 평균은 약 10ms(0.010초)였습니다... 시스템이 매우 바쁜 것 같습니다. (또는 Atari 2600에서 Linux를 실행하고 있습니다...)