Como calcular os threads máximos de gravação em um disco rígido se a velocidade X é desejada?


0

Estou tentando estabelecer os threads máximos de gravação que um disco rígido pode manipular, por exemplo, se a velocidade desejada for de 20KB / s por thread, como posso testar o máximo de gravações simultâneas antes que o disco seja mais lento, e vamos supor SO, sistema de arquivos ou o aplicativo não está à parte do gargalo.

Cada arquivo que está sendo escrito é diferente por usuário.

Eu li Alcance Velocidade máxima de gravação no disco rígido postado por outro usuário, mas onde esta questão é diferente é a outra questão focada em quantos arquivos um segundo enquanto o meu é quantos com base em X KB / seg.

Fiz um teste usando o HD Tune e o CrystalDiskMark, mas infelizmente acho que isso abrange apenas transferências de thread único ou não sei ler os resultados e calcular a partir deles.

Aqui está o resultado do CrystalDiskMark, não tenho certeza se isso é útil ou não.

insira a descrição da imagem aqui

Questões)

  • Como posso testar um disco rígido e descobrir quantos discos simultâneos gravam o disco pode manipular com base na configuração de uma velocidade mínima de 100 KB / s

1
Por que não jogar em um SSD e contornar o problema - SSDs não sofrem significativamente de diferenças em leituras aleatórias sequenciais e são muito mais rápidas em todos os sentidos. (Significa que a resposta se torna muito mais próxima da velocidade / usuários)
— davidgo

Respostas:


1

Depende inteiramente se você está fazendo E / S seqüencial ou aleatória, e com que freqüência você quer / precisa descarregar para o disco ...

Tanto 20 KB / se 100 KB / s são insignificantes com o hardware atual. No screenshot do CrystalDiskMark, e sua preocupação eu suspeito que você esteja lidando com um disco giratório ... por que não usar um SSD?


max escritas simultâneas antes que a unidade acelere e se torne mais lenta

Não é uma questão de afogar o disco, mas sim que o movimento físico da cabeça leva tempo para ser concluído. Com E / S aleatória isso é exacerbado à medida que o tamanho de cada bloco escrito diminui, e o tempo de busca entre gravações aumenta.

vamos supor que o sistema operacional, o sistema de arquivos ou o aplicativo não façam parte do gargalo

Sem conhecer o estado do sistema de arquivos em termos de fragmentação e espaço livre, você não pode presumir isso, e certamente não pode assumir isso ao longo da vida de um produto ou instalação.


Se você está sofrendo de problemas de desempenho, então você vai querer fazer uso da E / S armazenada em buffer - isto é, gravar em um arquivo realmente coleta dados em um buffer, antes de gravar um bloco maior no disco de uma só vez.

Escrever 100 KB / s por um período de 10 segundos pode ser apresentado ao armazenamento como qualquer um dos seguintes (ou mais):

  • um bloco de 1 KB a cada 10ms
  • um bloco de 10 KB a cada 100ms
  • um bloco de 100 KB a cada 1 segundo
  • um bloco de 1.000 KB a cada 10 segundos

Estamos discutindo o regular (vermelho) ou infreqüente (verde)? Cada uma das cores " gravará " a mesma quantidade de dados no mesmo período de tempo.

gravar taxa de transferência em diferentes tamanhos de bloco

Escrever blocos maiores de uma só vez ajudará na taxa de transferência e na fragmentação do sistema de arquivos, embora haja uma desvantagem a ser considerada.

  • Escrevendo blocos maiores, com menos frequência - melhorará o rendimento, mas exigirá mais RAM e, em caso de perda de energia ou falha, uma parte maior dos dados será perdida
  • Escrever blocos menores, com mais freqüência - degradará o rendimento, mas exigirá menos RAM e menos dados serão mantidos na memória volátil.

O sistema de arquivos ou sistema operacional pode impor regras sobre a frequência com que o cache de arquivos é gravado no disco, portanto, talvez seja necessário gerenciar esse armazenamento em cache no aplicativo ... Comece usando E / S armazenada em buffer e, se isso não for possível, revise a situação.


vamos fingir que 1.000 usuários estão enviando arquivos de 1 GB a 20 KB / s

Você está satisfeito com o upload de um arquivo de 1 GB por mais de 14,5 horas? Com todos os problemas que as falhas ocorrem (ou seja, reenviá-lo desde o início).


Desculpe, IO aleatório, novos arquivos por usuário.
— Simon Hayter

Basicamente, os usuários farão o upload de arquivos, eles variam em tamanho, mas seria considerado aceitável que eles fiquem em torno de 20 KB / s, obviamente, uma unidade mecânica com 20 KB / s por usuário com milhares de usuários causaria atraso devido ao salto da cabeça do disco Para trás e para frente, é essa parte que eu quero medir. Então, Idealmente, eu quero estimar este disco rígido pode manipular, 250 usuários, mas eu sei que não é tão fácil como isso, porque então você tem tempo de resposta entre o usuário eo disco, mas eu quero calcular isso na estimativa também.
— Simon Hayter

Não há um utilitário no Powershell ou aplicativo que eu possa executar, que dispara 1000 threads de gravação, por exemplo?
— Simon Hayter

A menos que você esteja lidando com um fluxo de dados que precisa ser capturado em tempo real a 20 KB / s, isso é realmente um problema? Mesmo assim, eu esperaria que seu aplicativo / sistema operacional armazenasse em cache uma parte do upload e escrevesse um bloco grande de uma só vez (como o verde no gráfico). Pode levar muitos segundos para preencher o cache e acionar uma gravação em disco, dependendo da configuração.
— Attie

Sim, provavelmente há um aplicativo que pode comparar isso, mas não estou convencido de que seja de qualquer maneira informações úteis para o seu caso de uso ...
— Attie
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.