Como posso fazer essa configuração mais rápida?

3

Comunidade do Hey StackOverlow,

Atualmente, estou usando alguns softwares que armazenam vários arquivos XML. Todos os arquivos estão abaixo de 25k bytes. Os criadores do software afirmam que o desempenho é baseado em várias pequenas leituras simultâneas. Quanto mais rápido você puder ler a partir das unidades, melhor será o seu desempenho.

Depois, muitos testes de desempenho parecem estar dizendo a verdade. No entanto, antes de jogar dinheiro nisso, quero testar o máximo possível. O servidor parece nunca ter passado de 35% do uso da CPU ou da memória de pico.

A configuração do servidor é a seguinte

  • Windows Server 2003 Standard
  • Quad Core 2,6 Ghz
  • Ram de 4 GB
  • 2 Cartões de raid de hardware
  • 8 drives SCSI de 15k em RAID10 (ataque ao hardware)

Eu estou pensando que se eu mudar a configuração para usar 2 Intel X-25 M em RAID0, eu teria um desempenho melhor. Backups não são um problema. Temos uma replicação ao vivo para outro servidor e um backup noturno externo que também vai para a fita. Eu atualmente tentei um único Intel X-25 em um servidor diferente e parece promissor.

Então as perguntas que eu tenho são as seguintes -

  1. Devo esperar um melhor desempenho da configuração de 2 unidades SSD do que o desempenho de 8 unidades SCSI?
  2. Quaisquer etapas especiais de configuração do SSD que eu deveria seguir? (Tamanho do bloco, etc?)
  3. Atualmente está testando no Windows Server 2003? Isso atrapalha de qualquer maneira? Devo mudar para o Windows Server 2008? (Linux, etc. não são opções válidas)
  4. Algum ajuste no SO que devo fazer?
  5. Software de benchmark diferente / melhor?

Qualquer pessoa experimente ou teste algo semelhante, por favor, avise-me.

Algumas informações de referência usam ( CrystalDiskMark ) 5 passagens 50Mb

Caixa SSD

Type - Read Mb/s - Write Mb/s  
Seq  - 225       - 50.84  
512K - 152.7     - 53.73  
4K   - 18.85     - 35.35  

Caixa SCSI

Type - Read Mb/s - Write Mb/s  
Seq  - 549.8     - 352.2  
512K - 538.3     - 342.2  
4K   - 89.30     - 65.19

TL; DR - São 2 drives SSD em RAID0 ou RAID10 mais rápidos que 8 drives SCSI de 15k em RAID10?

Obrigado pela leitura.

    
por Demetri 04.11.2009 / 20:54

4 respostas

3

Dados os níveis de desempenho que você está tentando atingir, você deve ter algumas coisas em mente.

A sugestão anterior para formatar a unidade que mantém seu conjunto de dados com um tamanho de cluster NTFS > 25k é um bom, 32k parece ser uma boa escolha para o seu caso de uso. A finalidade de fazer isso é garantir que você esteja evitando ter que lidar com a fragmentação, se possível, e reduzindo a sobrecarga do sistema de arquivos associada à leitura em um único arquivo.

Também sugiro dar uma olhada no tamanho da faixa RAID. Se a natureza do conjunto de dados resultar em IO sequencial (principalmente), um tamanho de faixa maior será mais vantajoso. Se for aleatório, um tamanho de faixa menor será mais inteligente, mas não menor do que o tamanho do cluster do sistema de arquivos. Dada a descrição do que você está tentando fazer, eu diria que seu perfil de E / S é aleatório, então um tamanho de faixa de 64k seria bom, mas pode valer a pena experimentar.

O que é muito importante é garantir que a partição esteja alinhada - você desejará usar o Diskpart.exe em seus sistemas, geralmente definir um deslocamento de alinhamento de 64k faz o truque com tamanhos de stripe padrão de cluster e RAID, mas um deslocamento de 1024k é usado no Vista \ Windows7 \ W2K8, uma vez que irá garantir o alinhamento mesmo com stripe & tamanhos de cluster. Há um artigo muito bom sobre desempenho do servidor SQL da Microsoft aqui que explica as razões pelas quais isso é importante fazer para drives \ arrays de alto desempenho. A versão curta disso é que uma partição mal alinhada pode degradar o desempenho de E / S de 15 a 30%.

Para SSD, as mesmas regras gerais se aplicam, mas o comportamento subjacente das leituras \ gravações é muito diferente. Em vez de lidar com setores de disco de 512 bytes no nível mais fundamental, o IO em SSDs usa blocos muito maiores. As leituras tendem a estar em tamanhos de página fixos entre 4k e 128k, as gravações envolvem armazenamento em buffer e grandes tamanhos de bloco de apagamento (no intervalo de megabytes). A principal coisa para você (onde leitura IO é importante) é que você deseja definir o tamanho da faixa RAID para ser um múltiplo do tamanho da página de leitura para o tipo de disco que você selecionar (acho que todos os Intel X-25 usam uma leitura de 128k bloco) e você deseja definir o seu deslocamento de alinhamento para um número que garanta que é maior do que isso. A recomendação padrão de um deslocamento de partição de 64k seria uma má escolha se o SSD tiver um tamanho de página de leitura de 128k, por exemplo. Por causa da natureza assimétrica das gravações de SSD, não é fácil otimizar as matrizes RAID SSD para desempenho de gravação, mas isso é uma história completa e envolve muito cache.

Há um bom artigo sobre como otimizar o SSD RAID aqui no OCZForum , é voltado para entusiastas configurações, mas eles recebem a mensagem geral certa para qualquer um tentando rolar seu próprio SSD RAID de fora do kit de prateleira, tanto quanto eu posso dizer.

Finalmente, se o seu padrão de leitura de IO for predominantemente sequencial, as 8 unidades de 15k podem (em teoria) chegar a algum ponto no limiar de 800Meg / seg, se não mais. Dois SSDs, até mesmo os Intel X-25E, só atingirão cerca de metade disso. Eu acho que o seu padrão de leitura de IO é tendencioso o suficiente para IO aleatório para negar isso, mas sob as circunstâncias corretas seus 8 discos SCSI de 15k podem ser muito mais rápidos do que os dois SSDs. Isto é confirmado pelo seu teste. Olhando para esses números, eu diria que algum trabalho com alinhamento de partições e tamanhos de faixas ajudará bastante.

    
por 04.11.2009 / 22:47
2

Se os arquivos XML forem menores que 25k, considere formatar sua unidade com um tamanho de bloco > 25k . A lógica é que um arquivo inteiro se encaixará em um único bloco e, portanto, você não terá fragmentação em arquivos individuais. Uma única operação de leitura / gravação cobriria um arquivo inteiro.

Isso provavelmente seria muito ruim e um desperdício de espaço para sua unidade O / S, portanto, eu me certificaria de que você não esteja fazendo isso na mesma partição em que seu sistema operacional está instalado. Deixe isso no tamanho de bloco padrão (provavelmente 4k NTFS enquanto você estiver usando o Windows)

Isso é mais uma melhoria de desempenho a longo prazo, pois eu duvido que você tenha muita fragmentação em uma nova instalação, portanto, talvez você não tenha notado uma pequena degradação do desempenho com a idade - depende da configuração.

    
por 04.11.2009 / 21:21
0

Acho que você deveria analisar seriamente o carregamento desses arquivos XML na RAM. Já que você está no Windows, existem muitas ferramentas que podem criar uma unidade de RAM a partir da sua RAM real, apenas tenha em mente que tudo vai poof quando você reinicia, então você também precisa ter essas arquivos no disco. Comprar mais memória RAM vai ser bem barato, embora dependendo do seu uso atual eu acho que você vai ficar bem usando apenas os 4GB que você tem.

    
por 04.11.2009 / 21:05
0

Primeiramente, recomendamos que desative a atualização do último acesso arquivos / diretórios com sua configuração. Com tantos arquivos, ele terá um impacto perceptível.

Se apenas leituras simultâneas forem um problema, você pode tentar definir esses 8 discos somente para RAID-1 (em vez de RAID-10), pois isso permitiria a leitura de qualquer arquivo de qualquer unidade, o que seria inativo no momento de ler. Você perderá capacidade (apenas 1 unidade estará disponível, não um problema para menos de 100 GB de dados) e as gravações serão mais lentas (qualquer gravação teria que ser feita em todas as unidades).

Adicionar a quantidade máxima possível de RAM a um servidor e migrar o SO para 64 bits (para evitar PAE ) também seja legal, por causa de um cache de arquivos maior.

    
por 05.11.2009 / 18:56