Por que meu desempenho do RAMDisk não corresponde ao desempenho do meu HDD?

2

Eu estive pensando em usar repositórios temporários do GIT em RAMDisks (usando o ramdisk do DataRAM) como um tipo de armazenamento de objetos. Eu estava interessado em ver se valia a pena, então eu corri um benchmark simples de escrever arquivos de 1000 x 30K para a unidade e, em seguida, comparei os tempos médios de gravação. Fiquei surpreso quando o desempenho saiu consistentemente em favor do HDD.

Para o disco rígido, recebi:

average: 0.47ms/write

Para o disco RAM, obtive:

average: 0.76ms/write

Alguém pode explicar por que isso é o oposto do que se espera?

    
por Andrew Matthews 23.06.2010 / 07:59

4 respostas

3

Ao usar DMA, a CPU copia os dados para a memória e informa ao disco rígido para obtê-lo e gravá-lo no disco. Enquanto o disco rígido faz isso, a CPU pode fazer outra coisa. Com 30 mil arquivos, o disco rígido pode acompanhar a leitura e a gravação. Esses arquivos cabem no cache e não precisam ser gravados no disco para que a gravação seja concluída. O giro do disco e a busca com o braço é o fator realmente limitante.

Eu não sei como o ramdisk é implementado, mas a CPU pode fazer a cópia duas vezes.

    
por 23.06.2010 / 08:04
3

Talvez as operações do HDD tenham sido armazenadas em cache pelo seu sistema operacional amigável e o RAMDisk estivesse (parcialmente) em espaço virtual de RAM / troca?

    
por 23.06.2010 / 08:04
2

Esta é uma pergunta difícil de responder, mas em geral você deve entender que benchmarks artificiais raramente são confiáveis. Você deve tentar testar repositórios git reais.

Meu palpite é que gravar arquivos em disco é "rápido" porque a CPU apenas emite um comando para a unidade "pegue este bloco de memória e grave-o nesta seção da unidade" e a unidade o processa de forma assíncrona o comando é emitido, a operação é "completa"). Mas, copiando para um disco RAM, você realmente espera até que os dados sejam copiados fisicamente e, como você está basicamente fazendo uma cópia de RAM para RAM, você tem contenção.

Mais uma vez, sugiro que você experimente operações reais em repositórios Git reais, se for para isso que você está planejando usá-lo.

    
por 23.06.2010 / 08:10
1

eu acho que o problema aqui não está na velocidade do kernel, mas na realização do software dataram. para unixes, há tmpfs para idades adequadas para tais propósitos (e não há necessidade de uma segunda camada adicional de sistema de arquivos), porém dataram um software antigo e não modificado com (possíveis) bugs ou usando arquitetura de programas não otimizada.

Eu também tenho acerto de performance quando tento rodar o client do jogo a partir do dat ramdisk, na verdade a velocidade era pior do que rodar a partir do drive IDE ... até mesmo BSOD em alguns instantes (12gb RAM total 2.5gb ramdisk). com 4gb ramdisk performace pior (???).

Com o mesmo sistema FreeBSD sem problemas ao manipular tmpfs preenchidos com 4gb

no entanto, também foi observado pelo autor do ImDisk em fóruns que o Windows fazendo algo estranho no gerenciamento de memória em relação a todos os ramdisks, portanto, possivelmente também há desvantagens de subsistemas do Windows

    
por 03.04.2011 / 18:01