2 votes

Comment se comporte un processus Node.js dans AWS Fargate ?

J'ai une application Node déployée sur AWS Fargate avec la configuration de tâche 1 vCPU/2GB de mémoire. Je me suis demandé quel est le comportement de Node.js lorsqu'il est exécuté sur cette configuration en fonction des vCPU disponibles.

Selon les documents d'AWS, le vCPU est juste un hyperthread sur un cœur de CPU Intel Xeon : Que signifient réellement les vCPU dans Fargate ? . Alors, comment libuv fait-il fonctionner le threadpool (qui par défaut fait tourner 4 threads) si l'ensemble du programme ne tourne que sur un vCPU qui est déjà lui-même un hyperthread ? De plus, comment le programme Node se comporte-t-il sur une configuration fonctionnant sur une configuration inférieure avec un vCPU 0.256 ?

En outre, Fargate gère automatiquement la mise à l'échelle en exécutant le nombre de tâches spécifié dans la configuration ; mais que se passerait-il si je décidais d'utiliser quelque chose comme PM2 pour exécuter plusieurs processus Node dans chaque tâche ? Cela ne fonctionnerait-il pas vraiment puisque je fonctionne sur 1 vCPU ?

0voto

slebetman Points 28276

Comme les threads ont toujours fonctionné : sur une seule unité centrale.

Les threads (logiciels) ont été inventés avant que les machines multi-cœurs ne soient populaires. Toutes les premières machines Unix multithreadées, comme les Sun, HP9000, Digital VAX et Alphas et Silicon Graphics IRIS, étaient toutes des machines à processeur unique qui n'avaient qu'un seul cœur, sans hyperthreading.

Le fonctionnement des threads (logiciels) était le même à l'époque qu'aujourd'hui : le thread s'exécute à tour de rôle sur le CPU. Ce tour est programmé par le système d'exploitation à l'aide d'une fonctionnalité matérielle du CPU : les interruptions de temporisation.

Le système d'exploitation définit une minuterie pour déclencher une interruption, puis passe le CPU au thread. Lorsque la minuterie expire, elle interrompt l'unité centrale, ce qui a pour effet d'arrêter l'exécution du code du thread et d'exécuter le code de l'OS à la place. C'est au cours de cette interruption que le système d'exploitation décide du prochain thread à exécuter et déclenche à nouveau l'interruption de la minuterie. La seule différence avec les processeurs multicœurs est que le système d'exploitation dispose de plus de cœurs de processeur pour programmer les threads. Et la seule différence avec l'hyperthreading est que le système d'exploitation peut programmer deux threads par cœur de processeur.

C'est pourquoi vous avez normalement environ 300 threads en cours d'exécution sur une machine Linux de bureau typique d'un utilisateur domestique (même pas un serveur), même si elle ne possède physiquement que 4 cœurs capables d'exécuter seulement 8 threads en même temps.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X