Machine pouvant faire tourner 40 VM

Répondre
Partager Rechercher
Salut, j'y connais pas grand chose en hardware et j'ai un pb de config.

J'ai actuellement un PC avec un ryzen 5 2600 qui fait tourner 10 VM et le processeur atteint 90% d'utilisation.

J'ai besoin d'en faire tourner 40 du coup je me demandais si juste un upgrade vers un AMD Ryzen 9 3950X (3.5 GHz / 4.7 GHz) était suffisant ou il fallait plutôt aller vers une config serveur comme celle que je me suis fait rapidement

https://cdn.discordapp.com/attachmen...03/unknown.png

Merci pour votre aide
J'ai pas la réponse à ta question.
Cependant pour pouvoir répondre faudrait plus de précision.
car 10vm alpine linux ou 10 vm RedHat+Oracle par exemple ça consomme pas pareil et tu leur attribue pas les mêmes ressources

du coup 10Vm et 40Vm c'est pas des bonnes métriques !
Et multiplier les machines c'est pas possible ?
Mettre en place un cluster serait horriblement chiant et pas gratuit, mais si t'as pas besoin que toutes les VM soient physiquement sur le même serveur ou cluster de serveurs, je réfléchirai à ça.

Voir même à des Pi 4 si ce dernier est assez costaud pour ton usage.
Bienvenue dans le monde de la sur-allocation.
Tu peux en faire, mais ça dépend de ce que tu fais avec tes VM et des performances que tu en attends.
Les valeurs généralement admises sont les suivantes :
Plateforme de test sans niveau de service attendu : 1 pCPU pour 6 vCPU (au delà tu as de la contention en permanence et c'est difficilement utilisable).
Préproduction (tout ne tourne pas en même temps, tu tolères des pertes de perfs) : 1 pCPU pour 4 vCPU
Production (tout ne tourne pas à fond en même temps, tu tolères des pertes de perfs minimes) : 1 pCPU pour 2 vCPU
Production critique (tout doit pouvoir tourner à fond en même temps, sans perte de perfs) : 1 pCPU pour 1 vCPU, en conservant 1 pCPU pour le scheduler du host et si nécessaire 1 pCPU aussi pour les I/O threads
(pCPU = coeur sur le host, vCPU = coeur sur les guests)

Questions en vrac pour détourer un peu la situation :
Tu utilises quel hyperviseur ? Pour savoir comment vérifier les métriques importantes comme la contention CPU
A partir de combien de VM tu ressens un impact problématique sur les VM ? Parce que ton host peut être à 90% CPU sans que ce soit gênant, comme il peut être à 30% et avoir des machines quasi inutilisables
Tu fais tourner quel type de calcul sur tes VM ? Certains usecase n'aiment pas le SMT par exemple.
As tu vraiment besoin de 40 VM ? La performance ne scale que rarement linéairement en fonction du nombre de VM, tu peux avoir de moins bonnes performances finales avec 40 qu'avec 30 VM sur un host bien tuné.
As tu envisagé d'utiliser des conteneurs ?
Citation :
Publié par Metalovichinkov
Et multiplier les machines c'est pas possible ?
Mettre en place un cluster serait horriblement chiant et pas gratuit, mais si t'as pas besoin que toutes les VM soient physiquement sur le même serveur ou cluster de serveurs, je réfléchirai à ça.

Voir même à des Pi 4 si ce dernier est assez costaud pour ton usage.
C'est une réflexion que je m'étais faite, les vm ont pas besoin d'être sur la même machine mais elles doivent communiquer entre elle, je mettrais en place un switch pour ça. Sauf que niveau coût d'élec je sais pas si c'est opti d'avoir plusieurs PC plutôt qu'un seul qui coute certes plus chère mais avec une seule alim.

Citation :
Publié par Eyce Karmina
Bienvenue dans le monde de la sur-allocation.
Tu peux en faire, mais ça dépend de ce que tu fais avec tes VM et des performances que tu en attends.
Les valeurs généralement admises sont les suivantes :
Plateforme de test sans niveau de service attendu : 1 pCPU pour 6 vCPU (au delà tu as de la contention en permanence et c'est difficilement utilisable).
Préproduction (tout ne tourne pas en même temps, tu tolères des pertes de perfs) : 1 pCPU pour 4 vCPU
Production (tout ne tourne pas à fond en même temps, tu tolères des pertes de perfs minimes) : 1 pCPU pour 2 vCPU
Production critique (tout doit pouvoir tourner à fond en même temps, sans perte de perfs) : 1 pCPU pour 1 vCPU, en conservant 1 pCPU pour le scheduler du host et si nécessaire 1 pCPU aussi pour les I/O threads
(pCPU = coeur sur le host, vCPU = coeur sur les guests)

Questions en vrac pour détourer un peu la situation :
Tu utilises quel hyperviseur ? Pour savoir comment vérifier les métriques importantes comme la contention CPU
A partir de combien de VM tu ressens un impact problématique sur les VM ? Parce que ton host peut être à 90% CPU sans que ce soit gênant, comme il peut être à 30% et avoir des machines quasi inutilisables
Tu fais tourner quel type de calcul sur tes VM ? Certains usecase n'aiment pas le SMT par exemple.
As tu vraiment besoin de 40 VM ? La performance ne scale que rarement linéairement en fonction du nombre de VM, tu peux avoir de moins bonnes performances finales avec 40 qu'avec 30 VM sur un host bien tuné.
As tu envisagé d'utiliser des conteneurs ?
Intéressant pour le comparatif pcpu vcpu. Actuellement chaque vm dispose de 1vCPU et mon processeur de 6 coeurs / 12 threads. Du coup, je peux me permettre d'allouer 1,666 coeurs par machine sans que cela pose problème. A partir de 11VM ça commence à bugger. Pour les types de calcul, c'est des applis type Node.JS / Redis / MongoDB qui tourneront.

J'utilise VMWare Player aucun hyperviseur. Pour les VM, je vais essayer de réduire à 30 par contre, les conteneurs ne m'intéressent pas.
Citation :
Publié par Aërendil
Le sujet m'intéresse aussi.

Quid de la partie HDD?
Tu préconise quoi ?
Pour le coup, en utilisant un ssd basique de 1To j'ai aucun problème une fois toutes les VM lancées. C'est juste qu'il faut pas toutes les lancer en même temps.
Lu
Pour des questions de durabilité j'éviterais de mettre prêt de 2ke de composants dans un boitier à 50
Un gros ventirad à ~100e sera plus souhaitable aussi qu'un water mono-fan.
Citation :
Publié par Bfx
C'est une réflexion que je m'étais faite, les vm ont pas besoin d'être sur la même machine mais elles doivent communiquer entre elle, je mettrais en place un switch pour ça. Sauf que niveau coût d'élec je sais pas si c'est opti d'avoir plusieurs PC plutôt qu'un seul qui coute certes plus chère mais avec une seule alim.


Intéressant pour le comparatif pcpu vcpu. Actuellement chaque vm dispose de 1vCPU et mon processeur de 6 coeurs / 12 threads. Du coup, je peux me permettre d'allouer 1,666 coeurs par machine sans que cela pose problème. A partir de 11VM ça commence à bugger. Pour les types de calcul, c'est des applis type Node.JS / Redis / MongoDB qui tourneront.

J'utilise VMWare Player aucun hyperviseur. Pour les VM, je vais essayer de réduire à 30 par contre, les conteneurs ne m'intéressent pas.
define bugger.

Globalement je pense que tu peux te permettre un peu de contention si c'est sur une machine dédiée, avec un hyperviseur dédié, contrairement à ta situation actuelle où ça doit nuire à l'utilisation "normale" de ta machine.
Avec un ratio de 1:2, tu auras des ralentissements lors des pics de charge, mais ce ne sera pas la mort.
Il faudra évidemment faire un peu de tuning pour limiter les problèmes.
Pour éviter par exemple que des workers bourrins en CPU n'affament la BDD et fassent s'écrouler les perfs, tu peux jouer sur des mécanismes de réservations de ressources qui garantiront un niveau de perf suffisant pour la partie BDD. Tes workers seront certes un peu moins rapide mais globalement ça ira quand même plus vite.
Une solution pourrait aussi être de faire un host dédié pour tes workers, et mettre tes bdd sur une autre machine (via VMware Player sur ta machine par exemple, ou sur un raspi 4 si ce n'est pas un bottleneck)
Mais ce ne sont que des exemples au doigt mouillé, c'est à toi de faire l'analyse pour identifier là où tes applis ont besoin de perf. (les hyperviseurs dédié ont des outils pour t'aider à analyser).


En prenant en compte ce genre "d'astuces" tu dois pouvoir te contenter d'un 16c/32t en gardant un peu de place pour l'avenir (un 12c/24t doit suffire en optimisant correctement mais tu auras du mal avec le temps).
Le 3950X est assez incontournable dans ce domaine à cause de son prix, et le fait qu'il a moins de dies que ses concurrents ce qui permet de limiter un peu certaines problématiques (numa en particulier).
Par contre les cartes mères, à part la ASUS Pro WS X570-ACE c'est pas la joie. Et ça te "limite" à 128Go, mais au moins tu n'es pas obligé de prendre de la RDIMM contrairement aux Epyc.

Citation :
Publié par Aërendil
Le sujet m'intéresse aussi.

Quid de la partie HDD?
Tu préconise quoi ?
Ca dépend des usecase et des fonctionnalités qu'on veut (snapshots, host seul ou en cluster...)
De base un ssd SATA local est suffisant et tu fais évoluer au fur et à mesure que tu identifies des bottlenecks (genre passer sur un nvme si tu fais vraiment beaucoup d'i/o) ou que tu fais grossir ton infra (passage sur un nas avec un lun ou un volume nfs, ou faire un cluster de stockage entre tes hosts)
Après c'est un monde à part entière.
Ça peut paraitre con, mais plutôt qu'un gros ordi qui fait tourner 40 VM, faire tourner 40(+1) Raspberry Pi 4 ne serait pas préférable ?
Peut êtres moins chère, plus facile à gérer et moins consommateur en électricité.

https://www.element14.com/community/servlet/JiveServlet/showImage/38-14227-189522/32_way_raspberry_pi_cluster.jpg

Après, ce que je propose est con, ou inapplicable dans ton cas. J'arrive à 1650€ pour les 41 Raspberry Pi 4 Modèle B - 2GB, mais je ne sais pas si il y as tout ce qu'il faut d’inclus. (Source)

Dernière modification par thanatosX ; 13/06/2020 à 15h18.
Citation :
Publié par Bfx
EDIT : par rapport aux conteneurs, j'ai peut-être parlé trop vite, je vais y jeter un oeil.
Vu ce que tu fais tourner, clairement tu devrais t'y intéresser. Faire tourner 40 OS pour ça n'a clairement pas beaucoup d'intérêt, et génère un coût non-négligeable en RAM qui n'a pas lieu d'être. En plus de ça Docker te permet de scaler bien plus rapidement qu'avec des VM.

Citation :
Publié par thanatosX
Ça peut paraitre con, mais plutôt qu'un gros ordi qui fait tourner 40 VM, faire tourner 40(+1) Raspberry Pi 4 ne serait pas préférable ?
Peut êtres moins chère, plus facile à gérer et moins consommateur en électricité.

https://www.element14.com/community/servlet/JiveServlet/showImage/38-14227-189522/32_way_raspberry_pi_cluster.jpg

Après, ce que je propose est con, ou inapplicable dans ton cas. J'arrive à 1650€ pour les 41 Raspberry Pi 4 Modèle B - 2GB, mais je ne sais pas si il y as tout ce qu'il faut d’inclus. (Source)
Purée la prise de tête...


Sinon, par rapport à la sur-allocation, ça dépend vraiment du type de charge que génèrent tes VM. C'est quelque chose de génial pour des machines qui ne fournissent pas un service en continu h24, car tes VM ne vont jamais toutes fonctionner en même temps dans ce genre de cas. Si par contre tout fonctionne vraiment tout le temps, ça ne règle aucun problème, la sur-allocation ne te permet pas de faire apparaître des ressources de calcul du ciel.

Et si ton activité est (semi)commerciale, je ne peux que t'inciter à acheter directement un serveur auprès d'un fournisseur reconnu avec un bon SAV. Ça te coûtera plus cher, y'a pas de doute, mais proposer un service sur du matos monté à la main est rarement une bonne idée s'il y a des clients qui paient de l'autre côté du câble.
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés