Задать вопрос
msa6886
@msa6886

Как распределить дочерние процессы по всем ядрам?

В начале скрипта создается кол-во дочерних процессов соответствующее, кол-ву адресов, как их равномерно запустить на всех ядрах процессора?
const cp = require('child_process');
    let result = ["192.168.1.10", "192.168.1.11", "192.168.1.12"];
    let children = [];
    for(let i = 0; i<result.length; i++) {  
        children[i] = cp.fork(`server.js`);
    }
  • Вопрос задан
  • 81 просмотр
Подписаться 2 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
bingo347
@bingo347 Куратор тега Node.js
Crazy on performance...
Если linux, то taskset
На других ядрах (BSD, Darwin, WinNT), нужно погуглить аналоги

А вообще, большого смысла привязываться к конкретным ядрам нет, Ваш процесс не единственный в системе, почему бы не доверить распределение по ядрам самой ОС? switch-context все равно будет, ибо помимо ваших 3х процессов будет еще несколько сотен других, не говоря уже о том, что многие из них многопоточные.

А еще вот о чем подумайте, нода не такая уж и однопоточная. Помимо 1 потока v8 (а начиная с 10 ноды и их может быть несколько), у Вас еще от 4 до 128 потоков libuv (ибо сеть то может работать асинхронно, а вот с файловой системой приходится асинхронщину на потоках эмулировать). А еще могут быть C++ аддоны, которые порождают свои потоки. И стоит ли все это добро привязывать к 1 единственному ядру?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы