Javascript Node.js进程在AWS Fargate中的行为如何?

Javascript Node.js进程在AWS Fargate中的行为如何?,javascript,node.js,cpu,autoscaling,aws-fargate,Javascript,Node.js,Cpu,Autoscaling,Aws Fargate,我在AWS Fargate的1 vCPU/2GB内存任务配置上部署了一个节点应用程序。我一直想知道Node.js在这个设置上运行时,与可用的vCPU有什么关系 根据AWS文档,vCPU只是intel Xeon CPU内核上的超线程:。那么,如果整个程序只在一个本身已经是超线程的vCPU上运行,那么libuv如何运行线程池(默认情况下运行4个线程)?此外,节点程序在配置上的行为如何,该配置在具有0.256 vCPU的较低配置上运行 此外,Fargate通过运行配置中指定的任务数量自动处理缩放;但是

我在AWS Fargate的1 vCPU/2GB内存任务配置上部署了一个节点应用程序。我一直想知道Node.js在这个设置上运行时,与可用的vCPU有什么关系

根据AWS文档,vCPU只是intel Xeon CPU内核上的超线程:。那么,如果整个程序只在一个本身已经是超线程的vCPU上运行,那么libuv如何运行线程池(默认情况下运行4个线程)?此外,节点程序在配置上的行为如何,该配置在具有0.256 vCPU的较低配置上运行


此外,Fargate通过运行配置中指定的任务数量自动处理缩放;但是,如果我决定使用PM2之类的东西在每个任务中运行多个节点进程,会发生什么呢?由于我在1个vCPU上运行,这真的不起作用吗?

与线程一直运行的情况相同:在单个CPU上运行

线程(软件)是在多核机器流行之前发明的。所有最初的多线程Unix机器,如Sun、HP9000、Digital VAX、Alphas和Silicon Graphics IRIS,都是单cpu机器,只有一个内核,没有超线程

线程(软件)的工作方式与现在一样:线程轮流在CPU上执行。这是由操作系统使用CPU的硬件功能进行调度的:定时器中断

操作系统将设置一个定时器来触发中断,然后将CPU传递给线程。当计时器过期时,它将中断CPU,导致CPU停止执行线程中的代码,转而执行操作系统中的代码。在此中断期间,操作系统决定下一步执行哪个线程,并再次设置计时器中断。与多核CPU的唯一区别是操作系统有更多的CPU核来调度线程。与超线程的唯一区别是,操作系统可以为每个CPU核心安排两个线程


这就是为什么在一台典型的家庭用户桌面Linux机器(甚至不是服务器)上通常有大约300个线程运行的原因尽管它实际上只有4个内核,同时只能运行8个线程。

您可能会注意到,我对操作系统如何在单个内核上运行线程的描述听起来与javascript事件循环的工作原理非常相似。实际上,它们是非常密切相关的,事实上,在单核机器上,多线程软件和事件驱动软件在理论上没有区别。实际上,除非在单个内核上使用固定(非增长)线程池,否则事件驱动软件通常更快。多核多线程软件可以并行运行更多的东西。