Serveurs ARM - plus efficaces et moins chers

Apple a choqué le marché des processeurs de bureau cette année avec la puce Apple M1 et les appareils basés sur celle-ci. Un événement similaire a eu lieu dans le monde du cloud computing l'année dernière. AWS a publié un nouveau type de serveur basé sur ses propres processeurs ARM Graviton2. Selon Amazon, les nouveaux processeurs ont un rapport performances / prix 40% plus élevé que leurs homologues x86. Une autre mise à jour récente concerne les serveurs Amazon RDS (un service cloud fournissant des serveurs de base de données) sur Graviton2. J'ai exécuté quelques tests de performance et un test de charge sur une vraie application backend pour voir si les serveurs ARM sont aussi bons et pour voir quels problèmes de compatibilité pourraient survenir.





Performance

Je comparais les types de serveurs t4g.small (ARM) et t3.small (x86) sur AWS. Au moment d'écrire ces lignes, le prix de l'heure pour un serveur x86 est de 0,0208 USD et pour un serveur ARM de 0,0168 USD. Un serveur ARM est 20% moins cher.





Tout d'abord, j'ai fait un test de charge en utilisant wrk, en exécutant une nouvelle installation de recap.dev sur les serveurs





Il s'agit d'un modèle docker-compose avec 4 processus. Un serveur Web qui accepte les demandes et les stocke dans RabbitMQ et un processus d'arrière-plan distinct qui stocke les demandes par groupes de 1000 dans PostgreSQL.





J'ai exécuté wrk sur un serveur t3.2xlarge situé dans la même région à l'aide de la commande suivante:





wrk -t24 -c1000 -d300s -s ./post.lua <hostname>
      
      



Il envoie des requêtes en continu pendant 5 minutes en utilisant 24 flux et 1000 connexions HTTP.





Résultat pour le serveur t4g.small (ARM):





  24 threads and 1000 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   473.53ms   53.06ms   1.96s    81.33%
    Req/Sec   115.83     96.65   494.00     71.32%
  620751 requests in 5.00m, 85.84MB read
  Socket errors: connect 0, read 0, write 0, timeout 225
Requests/sec:   2068.48
Transfer/sec:    292.90KB
      
      



Pour le serveur t3.small (x86):





 24 threads and 1000 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   600.28ms   70.23ms   2.00s    72.53%
    Req/Sec    92.77     82.25   404.00     70.26%
  488218 requests in 5.00m, 67.51MB read
  Socket errors: connect 0, read 0, write 0, timeout 348
Requests/sec:   1626.87
Transfer/sec:    230.37KB
      
      



Le serveur ARM a servi 27% de requêtes en plus par seconde en moyenne 26% plus rapidement.









Phoronix.





pts/compress-7zip-1.7.1 t4g.small (ARM) 6833 MIPS, t3.small (x86) - 5029 MIPS. ARM 35%.





ARM pts/c-ray 2 . 958 x86 458 ARM .









pts/ramspeed, .









t4g.small (ARM)





t3.small (x86)





Add/Integer





50000 /c





13008 /c





Copy/Integer





58650 /c





11772 /c





Scale/Integer





31753 /c





11989 /c





Triad/Integer





36869 /c





12818 /c





Average/Integer





44280 /c





12314 /c





Add/Floating Point





49775 /c





12750 /c





Copy/Floating Point





58749 /c





11694 /c





Scale/Floating Point





58721 /c





11765 /c





Triad/Floating Point





49667 /c





12809 /c





Average/Floating Point





54716 /c





12260 /c





, t4g.small Graviton2 3 5 .





, ARM . .





, .





ARM . , Docker .rpm .deb, (, Docker ). , docker-compose ARM , . , , ARM . , , , ARM , .





Amazon RDS Graviton2 ARM .





ARM Docker recap.dev arm/v7 arm64.








All Articles