使用 CPU 与任务集的亲和性来加速 Node.js 计算,长时间阻塞

使用 CPU 与任务集的亲和性来加速 Node.js 计算,长时间阻塞

我正在为基于物理的游戏运行在线服务器,后端采用 Node.js。目前,在需要执行下一个tick之前,服务器可以一次处理10个游戏/世界。

考虑到这一点,我使用了紧张的日程安排纳米计时器这样世界步骤就不会互相干扰,但排序也意味着我只能在一个处理器上运行,因此我的 AWS 实例的 CPU 利用率仅为 55% 左右。

我决定使用任务集将是在我的实例上使用两个处理器的好方法,但有时,我想象的是另一个外部进程正在运行,世界有时会被阻止处理几秒钟。

我怎样才能防止这种情况发生?如果我使用两个处理器(没有任务集),一组世界运行得很好,但我只使用了 55% 的处理器,这非常昂贵。

答案1

首先,我会检查服务器上运行的进程的优先级。

ps -eo pid,ppid,ni,comm

然后我会将 Node.js 进程上的 Nice 值更改为最高,看看是否有任何改进。

renice -n -12 -p (你的node.js的PID)

相关内容