O que há de errado com a minha velocidade em 4K? Por que é tão lento? Ou deveria ser assim?
Essa velocidade está boa? Por que tenho velocidade tão baixa em 4K?
hard-drive
hardware-failure
storage
speed
benchmarking
Usuário6539
fonte
fonte
Respostas:
O que você está correndo em é típico de HDDs mecânicos, e um dos principais benefícios de SSDs: HDDs têm terrível desempenho de acesso aleatório.
No CrystalDiskMark, "Seq" significa acesso seqüencial enquanto "4K" significa acesso aleatório (em pedaços de 4kB por vez, porque bytes únicos seriam muito lentos e irreais 1 ).
Definições
De maneira geral, existem duas maneiras diferentes de acessar um arquivo.
Acesso sequencial
Acesso sequencial significa que você lê ou grava o arquivo mais ou menos um byte após o outro. Por exemplo, se você estiver assistindo a um vídeo, carregará o vídeo do começo ao fim. Se você estiver baixando um arquivo, ele será baixado e gravado no disco do começo ao fim.
Da perspectiva do disco, ele vê comandos como "leia o bloco nº 1, leia o bloco nº 2, leia o bloco nº 3, leia o bloco de bytes nº 4" 1 .
Acesso aleatório
Acesso aleatório significa que não há um padrão óbvio para as leituras ou gravações. Isso não precisa significar verdadeiramente aleatório; realmente significa "não sequencial". Por exemplo, se você estiver iniciando muitos programas ao mesmo tempo, eles precisarão ler muitos arquivos espalhados pela sua unidade.
Do ponto de vista da unidade, está vendo comandos como "leia o bloco nº 56, leia o bloco nº 5463, leia o bloco nº 14, leia o bloco nº 5" "
Blocos
Eu mencionei blocos algumas vezes. Como os computadores lidam com tamanhos tão grandes (1 MB ~ = 1000000 B), até o acesso seqüencial é ineficiente se você precisar solicitar à unidade cada byte individual - há muita conversa. Na prática, o sistema operacional solicita blocos de dados do disco de cada vez.
Um bloco é apenas um intervalo de bytes; por exemplo, o bloco 1 pode ser os bytes 1 a 512, o bloco 2 pode ser os bytes 513 a 1024, etc. Esses blocos têm 512 bytes ou 4096 bytes, dependendo da unidade. Porém, mesmo depois de lidar com blocos em vez de bytes individuais, o acesso seqüencial a blocos é mais rápido que o acesso aleatório a blocos.
atuação
Sequencial
O acesso seqüencial geralmente é mais rápido que o acesso aleatório. Isso ocorre porque o acesso seqüencial permite que o sistema operacional e a unidade prevejam o que será necessário a seguir e carreguem um grande pedaço com antecedência. Se você solicitou os blocos "1, 2, 3, 4", o sistema operacional pode adivinhar que você desejará "5, 6, 7, 8" a seguir; portanto, ele diz à unidade para ler "1, 2, 3, 4 , 5, 6, 7, 8 "de uma só vez. Da mesma forma, a unidade pode ler o armazenamento físico de uma só vez, em vez de "procurar 1, ler 1,2,3,4, procurar 5, ler 5,6,7,8".
Ah, eu mencionei procurar algo. Os HDDs mecânicos têm um tempo de busca muito lento por causa de sua disposição física: eles consistem em vários discos metalizados pesados girando ao redor, com os braços físicos se movendo para frente e para trás para ler o disco. Aqui está um vídeo de um disco rígido aberto, onde você pode ver os discos giratórios e os braços em movimento.
Imagem de http://www.realtechs.net/data%20recovery/process2.html
Isso significa que, a qualquer momento, apenas o bit de dados sob a cabeça no final do braço pode ser lido. A unidade precisa esperar por duas coisas: precisa esperar o braço se mover para o anel direito ("faixa") do disco e também precisa esperar que o disco gire para que os dados necessários estejam sob a leitura cabeça. Isso é conhecido como busca 2 . Tanto os braços giratórios quanto os em movimento levam um tempo físico para se mover, e não podem ser acelerados por muito sem arriscar danos.
Isso normalmente leva muito, muito tempo, muito mais tempo do que a leitura real. Estamos falando de> 5ms apenas para chegar ao local onde o byte solicitado mora, enquanto a leitura real do byte é em média de cerca de 0,00000625ms por byte seqüencial lido (ou 0,003125ms por bloco de 512 B).
Aleatória
O acesso aleatório, por outro lado, não tem esse benefício da previsibilidade. Portanto, se você quiser ler 8 bytes aleatórios, talvez dos blocos "8,34,76,996,112,644,888,341", a unidade precisará ir "procure 8, leia 8, procure34, leia 34, procure76, leia 76, ..." . Observe como ele precisa procurar novamente para cada bloco? Em vez de uma média de 0,003125ms por bloco sequencial de 512 B, agora é uma média de (busca de 5ms + leitura de 0,003125ms) = 5,003125ms por bloco. Isso é muitas, muitas vezes mais lento. Milhares de vezes mais devagar, de fato.
SSDs
Felizmente, agora temos uma solução: SSDs.
Um SSD, uma unidade de estado sólido , é, como o próprio nome indica, estado sólido . Isso significa que não possui partes móveis . Além disso, a maneira como um SSD é organizado significa que não há (efetivamente 3 ) a necessidade de procurar a localização de um byte; já sabe . É por isso que um SSD tem muito menos uma lacuna de desempenho entre acesso seqüencial e aleatório.
Ainda existe uma lacuna, mas isso pode ser atribuído em grande parte a não ser capaz de prever o que vem a seguir e pré - carregar esses dados antes de serem solicitados.
1 Com mais precisão, as unidades LBA são endereçadas em blocos de 512 bytes (512n / 512e) ou 4kB (4Kn) por motivos de eficiência. Além disso, programas reais quase nunca precisam de apenas um byte de cada vez.
2 Tecnicamente, procurar refere-se apenas ao deslocamento do braço. A espera pela rotação dos dados sob o cabeçote é a latência de rotação, além do tempo de busca.
3 Tecnicamente, eles têm tabelas de pesquisa e remapeamento por outros motivos, por exemplo, nivelamento de desgaste, mas são completamente insignificantes em comparação com um HDD ...
fonte
Notice how it needs to look for every single byte?
:: substituabyte
porblock
(e altere o exemplo de acordo). O drive procura a parte 4k (que pode ser ainda mais dispersa em partes de 512 bytes, mas não inferior a isso. Ela não procura entre todos os bytes! Ela procura entre todos os blocos, se o próximo bloco não estiver logo atrás (o que acontece muito em discos fragmentados.) E procurar (mover a cabeça ao redor do prato e esperar o bloco passar por baixo dele) é o que leva muito tempo (alguns milissegundos)Como já apontado por outras respostas, "4K" quase certamente se refere ao acesso aleatório em blocos de tamanho 4 KiB.
Toda vez que um disco rígido (não um SSD) é solicitado a ler ou gravar dados, há dois atrasos significativos envolvidos:
Ambos têm uma quantidade de tempo relativamente constante para qualquer unidade. A busca por latência é uma função da velocidade com que a cabeça pode ser movida e até que ponto ela precisa ser movida, e a latência rotacional é uma função da velocidade com que o prato está girando. Além do mais, eles não mudaram muito nas últimas décadas. Os fabricantes costumavam usar tempos médios de busca, por exemplo, em anúncios; eles praticamente pararam de fazer isso quando havia pouco ou nenhum desenvolvimento na área. Nenhum fabricante, especialmente em um ambiente de alta concorrência, deseja que seus produtos não sejam melhores do que os de seus concorrentes.
Um disco rígido de desktop típico gira a 7200 rpm, enquanto um laptop típico pode girar em torno de 5000 rpm. Isso significa que, a cada segundo, ele passa por um total de 120 rotações (unidade de desktop) ou cerca de 83 rotações (unidade de laptop). Como, em média, o disco precisará girar meia revolução antes que o setor desejado passe pela cabeça, isso significa que podemos esperar que o disco possa atender aproximadamente o dobro do número de solicitações de E / S por segundo, assumindo que
Portanto, devemos esperar poder executar na ordem de 200 E / S por segundo se os dados que estão sendo solicitados a acessar (para leitura ou gravação) estiverem relativamente localizados fisicamente, resultando em latência rotacional como fator limitante. No caso geral, esperamos que a unidade seja capaz de executar na ordem de 100 E / S por segundo se os dados estiverem espalhados pelo prato ou pratos, exigindo uma procura considerável e fazendo com que a latência da busca seja o fator limitante . Em termos de armazenamento, este é o " IOPSdesempenho "do disco rígido; esse, não o desempenho sequencial de E / S, é normalmente o fator limitante nos sistemas de armazenamento do mundo real. (Essa é uma grande razão pela qual os SSDs são muito mais rápidos de usar: eles eliminam a latência rotacional e reduz bastante a latência de busca, pois o movimento físico do cabeçote de leitura / gravação se torna uma pesquisa de tabela nas tabelas da camada de mapeamento flash, que são armazenadas eletronicamente.)
As gravações geralmente são mais lentas quando há uma descarga de cache envolvida. Normalmente, sistemas operacionais e discos rígidos tentam reordenar gravações aleatórias para transformar E / S aleatória em E / S sequencial sempre que possível, para melhorar o desempenho. Se houver uma barreira explícita de liberação ou gravação no cache , essa otimização será eliminada com o objetivo de garantir que o estado dos dados no armazenamento persistente seja consistente com o que o software espera. Basicamente, o mesmo raciocínio se aplica durante a leitura quando não há cache de disco envolvido, porque não existe (atualmente incomum nos sistemas de desktop) ou porque o software o ignora deliberadamente (o que geralmente é feito ao medir o desempenho de E / S). Ambos reduzem o desempenho potencial máximo de IOPS ao do caso mais pessimista, ou 120 IOPS para uma unidade de 7200 rpm.
Que coincide quase exatamente com seus números. A E / S aleatória com tamanhos de bloco pequenos é um fator de desempenho absoluto para discos rígidos rotacionais, e é também por isso que é uma métrica relevante.
Quanto às E / S puramente seqüenciais, a taxa de transferência na faixa de 150 MB / s não é de todo irracional para os discos rígidos rotacionais modernos. Mas muito pouca E / S do mundo real é estritamente seqüencial; portanto, na maioria das situações, o desempenho de E / S puramente seqüencial se torna mais um exercício acadêmico do que uma indicação do desempenho do mundo real.
fonte
4K refere-se a E / S aleatória . Isso significa que o disco está sendo solicitado a acessar pequenos blocos (4 KB de tamanho) em pontos aleatórios no arquivo de teste. Esta é uma fraqueza dos discos rígidos; a capacidade de acessar dados em diferentes regiões do disco é limitada pela velocidade na qual o disco está girando e a rapidez com que as cabeças de leitura e gravação podem se mover. A E / S sequencial , onde os blocos consecutivos estão sendo acessados, é muito mais fácil porque a unidade pode simplesmente ler ou gravar os blocos enquanto o disco está girando.
Uma unidade de estado sólido (SSD) não tem nenhum problema com E / S aleatória, pois tudo o que precisa fazer é procurar onde os dados estão armazenados na memória subjacente (normalmente flash NAND, pode ser 3D XPoint ou até DRAM) e ler ou escreva os dados no local apropriado. Os SSDs são totalmente eletrônicos e não precisam esperar em um disco rotativo ou em um cabeçote de leitura / gravação em movimento para acessar dados, o que os torna muito mais rápidos que os discos rígidos nesse sentido. É por esse motivo que a atualização para um SSD aumenta drasticamente o desempenho do sistema.
Nota lateral: o desempenho seqüencial de E / S em um SSD também costuma ser muito maior do que em um disco rígido. Um SSD típico possui vários chips NAND conectados em paralelo ao controlador de memória flash e pode acessá-los simultaneamente. Ao espalhar dados entre esses chips, é obtido um layout de unidade semelhante ao RAID 0, o que aumenta muito o desempenho. (Observe que muitas unidades mais recentes, especialmente as mais baratas, usam um tipo de NAND chamado TLC NAND, que tende a ser lento ao gravar dados. As unidades com TLC NAND geralmente usam um pequeno buffer de NAND mais rápido para fornecer maior desempenho para operações de gravação menores, mas podem desacelerar drasticamente quando o buffer estiver cheio.)
fonte