NVMe ssd: Por que 4k escreve mais rápido que a leitura?

49

Tenho um SSD Samsung 960 Pro de 512 GB em NVMe com PCIe Gen.3x4 em execução. Eu uso o Samsung NVMe Driver 2.0.0.1607. O SSD está funcionando bem. No entanto, eu não entendo porque a escrita de 4k é mais rápida que a leitura de 4k. Estou usando o AS Benchmark:

É um fator de 3! Há algo errado (com o meu sistema ou AS Benchmark) ou isso é normal?

    
por musbach 16.01.2017 / 19:04

4 respostas

71

As leituras de 4k serão a coisa mais difícil que a unidade pode fazer. Eles estão entre os menores tamanhos de bloco que o drive será capaz de manipular, e não há como a unidade pré-carregar grandes quantidades de dados. Na verdade, eles provavelmente são ineficientes se a lógica load-ahead estiver tentando ler qualquer coisa maior que 4kb.

Leituras de unidade "normais" têm mais probabilidade de serem maiores que 4kb, pois há muito poucos arquivos pequenos e até mesmo o arquivo de página pode ser lido em grandes blocos, já que seria estranho que um programa tivesse "apenas" 4KB de memória paginada. Isso significa que qualquer pré-carregamento que a unidade tente fazer realmente penalizará a taxa de transferência da unidade.

As leituras em 4K podem passar pelo buffer do drive, mas a parte "aleatória" do teste as torna totalmente imprevisíveis. O controlador não saberá quando a unidade precisará das leituras "grandes" mais comuns novamente.

As gravações em 4K, por outro lado, podem ser armazenadas em buffer, enfileiradas e escritas sequencialmente de maneira eficiente. O buffer de unidade pode fazer muito do trabalho de captura e gravação para o qual foi projetado e o nivelador de desgaste pode alocar todas as gravações 4K no mesmo bloco de limpeza de unidade, ocasionalmente transformando o que é uma gravação "aleatória" em 4K algo mais próximo de uma gravação seqüencial.

Na verdade eu suspeito que isso é o que está acontecendo nas gravações do "4K-64Thrd", o "64-Thrd" é aparentemente usando uma grande profundidade de fila , sinalizando para a unidade que tem uma grande quantidade de dados para ler ou gravar. Isso aciona muitos agrupamentos de gravações e assim se aproxima da velocidade de gravação seqüencial da unidade. Ainda existe uma sobrecarga para executar uma gravação 4K, mas agora você está expondo totalmente o potencial do buffer. Na versão Read do teste, o controlador do drive, agora reconhecendo que está sob carga pesada muito constante, para de pré-carregar dados, possivelmente evita o buffer e alterna para um modo de leitura "bruto", aproximando-se novamente da velocidade de leitura seqüencial. p>

Basicamente, o controlador de drive pode fazer alguma coisa para tornar uma gravação 4K mais eficiente, especialmente se um cluster deles chegar em um tempo similar, enquanto não pode fazer nada para fazer um single 4K leia mais eficiente, especialmente se estiver tentando otimizar o fluxo de dados pré-carregando os dados no cache.

    
por 16.01.2017 / 19:36
14

Outras respostas já explicaram porque é que a escrita é mais rápida que a leitura; Eu gostaria de acrescentar que para essa campanha isso é absolutamente normal, já que é confirmado pelos benchmarks que você pode encontrar nas resenhas.

Resenha de ArsTecnica

ArsTechnica analisou a unidade, tanto sua versão (512 GB) quanto a de 2 TB:

(Estegráficonãoéimediatamentevisívelnarevisão,éo5ºnaprimeiragaleria,vocêtemqueclicarnele)

Odesempenhodessesdoismodelosémuitosemelhanteeseusnúmerosparecemcomosseus:aunidadepodelera37MB/seescrevera151MB/s.

AnandTech'sreview

AnandTech também analisou a unidade: eles usaram os 2 TB modelo, calculando a média dos resultados dos testes com uma profundidade de fila de 1, 2 e 4. Estes são os gráficos:

O drive lê em 137 MB / se grava em 437 MB / s. O número é muito maior que o seu, mas provavelmente é devido às maiores profundidades de fila. De qualquer forma, a velocidade de gravação é 3 vezes a velocidade de leitura, como no seu caso.

Revisão da PC World

Mais uma revisão, por PC World : eles testaram a versão de 1 TB e os resultados de 4K são 30 MB / s para leitura e 155 MB / s para escrita: A velocidade de gravação está de acordo com a sua, mas aqui a unidade é ainda mais lenta na leitura. O resultado é que a proporção é de cinco para um, não três para um.

Conclusão

As análises confirmam que, para essa unidade, é normal que a velocidade de gravação para 4K aleatória seja muito mais rápida que a velocidade de leitura: dependendo do teste, ela pode ser até 5 vezes mais rápida.

Sua unidade está bem. Não há motivos para acreditar que esteja com defeito ou que seu sistema tenha um problema.

    
por 17.01.2017 / 14:11
8

Os caches do controlador SSD são gravados na NVRAM embutida e são liberados para a mídia flash nos momentos oportunos. A latência de gravação é, portanto, a latência de acesso do cache, normalmente 20us. As leituras, ao contrário, são veiculadas na mídia, com tempo de acesso de 120-150us na melhor das hipóteses.

    
por 17.01.2017 / 07:12
1

Expandindo a resposta de Andrey, você precisa examinar a sobrecarga envolvida antes que o SSD possa sinalizar ao computador que a operação está concluída.

Para uma gravação, os dados devem ser escritos apenas em um cache de RAM interno. Mais tarde, ele será gravado na memória flash, juntamente com outros 4k blocos e metadados necessários para verificar, corrigir erros e localizá-lo.

Para uma leitura, o SSD deve primeiro localizar os dados. O local que o computador deseja ler é chamado de endereço lógico e não tem um relacionamento direto com a localização física dos dados na memória flash. O SSD traduz o endereço lógico em um físico, baseado na geometria da memória flash (o modo como as células são organizadas), remapeamento de blocos defeituosos, nivelamento de desgaste e vários outros fatores. Ele então tem que esperar que qualquer outra operação termine antes de recuperar os dados do flash, então verifique-os e, se necessário, leia novamente e aplique correção de erros, possivelmente até mesmo reescreva o bloco inteiro em outro lugar.

Enquanto o tempo total gasto por uma operação de gravação pode ser maior que uma operação típica de leitura, o tempo que o SSD leva para reportar que a operação foi completada na medida em que pode processar comandos adicionais é menor. Com blocos grandes, o overhead não é o fator limitante, mas com muitos blocos pequenos, ele começa a limitar a velocidade de leitura / gravação.

    
por 17.01.2017 / 12:29