Devo escolher CPU mais alta/largura de banda baixa ou CPU um pouco mais lenta/largura de banda mais alta?

Devo escolher CPU mais alta/largura de banda baixa ou CPU um pouco mais lenta/largura de banda mais alta?

Tenho alguns servidores que realizam muitas operações de compactação de arquivos. Isso também significa que todos os arquivos devem ser baixados remotamente primeiro, antes de serem compactados e carregados remotamente ou transmitidos remotamente para os clientes.
Tenho a opção de atualizar servidores antigos ou adquirir novos.

As especificações antigas do servidor são sobre 3.1 GHza média da largura de banda 100 Mbps. As novas especificações do servidor estão disponíveis 2.4 GHze a largura de banda garantida é 1000 Mbps up to 2000 Mbps. O uso de memória deve permanecer o mesmo ou ser reduzido na nova iteração.

Neste ponto, descobri meu uso de RAM e disco. Isso não é um problema. A questão gira em torno de como as velocidades da CPU e a largura de banda afetam os downloads transmitidos.

Essas são minhas opções.
Qual opção é melhor para meu caso de uso?

Responder1

Você deve monitorar o uso de CPU e largura de banda em seus servidores atuais quando eles estiverem executando essas "operações de compactação".

Se eles usam 100% da CPU, opte por CPUs mais rápidas; se eles usarem 100% de largura de banda, opte por uma largura de banda maior.


Além disso, observe que as CPUs mais recentes podem ser muito mais rápidas que as mais antigas, independentemente dos valores nominais de GHz; o número de núcleos da CPU também é relevante (assumindo que essas "operações de compactação" sejam multithread e/ou executadas em paralelo).

Responder2

Se você quiser encontrar alguma solução "ideal", precisará descobrir quantos dados podem passar pelos seus barramentos de dados, o ideal seria que os dados chegassem a alguma placa de rede, fossem lidos na CPU e compactados diretamente na memória em uma placa de rede.

Vamos supor que você tenha

  • 2 (para que eles não se confundam ao enviar e receber) placas Ethernet de 10 GB com 8 pistas PCI Express 4 cada (15 GB/s para cada), presumindo que você consiga um MB que suporte isso.
  • você investe em alguma CPU + MB que possa realmente suportar isso, RyZen 5950X + x570

Depois, há o rendimento da memória

  • oacimao sistema oferece cerca de 54 GB/s de leitura/gravação ou 48 GB/s de cópia
  • as unidades Ethernet podem copiar os dados recebidos para a memória RAM (via cache ou não)
  • muito provavelmente você ainda não teve o benefício deenvio de cópia zeromasmais provávelo envio causará 3-6 cópias.
  • provavelmente é o mesmo para receber, mas aí a CPU tem que lê-lo pelo menos uma vez para compactá-lo, se tiver sorte diretamente no cache, se não da memória, e o mesmo quando estiver compactado no cache, a NIC poderá copiá-lo diretamente para seu buffer de envio interno.

Então, na melhor das hipóteses, com a melhor NIC, drivers de nível de usuário, sempre acesse o cache

  • copiar da NIC para o cache sem write-back na RAM
  • zip de cache para cache
  • copiar do cache para NIC
  • assumindo que 32 threads podem alimentá-lo, você pode obter uma taxa de transferência de 10 GB/s

Se você não tiver acesso a este cenário de sorte, é mais provável que a largura de banda da memória seja limitada, pois

  • assumiu 3 cópias para mover dados para o aplicativo
  • 2 cópias para carregar no zip e salvar o resultado
  • 3 cópias para enviar
  • e muitos write-backs de cache para deixar tudo escuro

Supondo 7 leituras e 7 gravações, o limite deve ser em torno de 54 GB/s/14 = 3,85 GB/s na melhor das hipóteses. Com menos leituras/gravações, você atinge rapidamente a velocidade máxima da NIC.

Portanto, a partir daqui você pode reduzir as especificações até que seu orçamento ou necessidades sejam atendidos.

Não consegui localizar nenhum dado para compactação multithread na memória.

informação relacionada