A geração do UUID1 é muito lenta

2

Eu atualizei minha caixa do Ubuntu de 13.04 para 14.04 LTS alguns dias atrás. Agora estou usando o libuuid-2.20.1. De qualquer forma, após a atualização, meu UUID1 ficou muito lento.

$ 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 segundos decorridos em uuidgen -t . O que pode tornar isso lento?

- atualizado -

Aqui está o meu resultado 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
    
por Heungsub Lee 16.06.2014 / 06:59

1 resposta

1

Provavelmente, ele extrai aleatoriedade de / dev / random , (parece), que WILL bloqueia até que a entropia suficiente seja acumulada para fornecer aleatoriedade. A entropia é obtida a partir do uso do teclado, mouse, usb, atividade do disco rígido, sabe ... coisas aleatórias .

/ dev / urandom não bloqueia, mas não pode fornecer o nível de aleatoriedade fornecido por / dev / random. Eu sei, parece estranho, evidentemente alguém requer uma aleatoriedade extremamente aleatória, enquanto eu sempre fiquei satisfeito com a simples aleatoriedade aleatória.

uuidgen usa / dev / random para os uuid -r (aleatórios), e o clock do sistema (e o MAC ethernet) para os uuids -t (time). Se o relógio utilizado não for granular o suficiente, o uuidgen poderá ser bloqueado até que um certo tempo mínimo tenha passado para garantir a exclusividade. (especulação educada da minha parte, sem fatos, desculpas).

Estou usando a mesma biblioteca libuuid1, v2.20-1 no meu sistema, e executando um loop contínuo mostra meu sistema gerando uuids aleatórios (modo -r) a 0,002s (2ms) cada e uuids baseados em tempo a 0,004s (4ms) cada, média. Seu sistema está fazendo muitas ( muitas! ) outras coisas atualmente? (Aqueles tempos em uma máquina de 2 GHz levemente carregada.)

Também testado em meus dois Raspberry Pi's, eles têm uma média de 10ms (0,010s) para o tempo ou para uuid's aleatórios ... parece que seu sistema está bem ocupado. (Ou você está rodando linux em um Atari 2600 ...)

    
por 16.06.2014 / 10:47

Tags