From e2421f094fa0083f78d1dcff99736169e4103695 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5var=20Aamb=C3=B8=20Fosstveit?= Date: Tue, 5 May 2020 09:48:26 +0200 Subject: [PATCH] Shuffle workers to get routers on random cores. Increase routerScaleSize default to 40. --- server/config/config.example.js | 5 +++-- server/lib/Room.js | 8 ++++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/server/config/config.example.js b/server/config/config.example.js index 5b47582..9d27f11 100644 --- a/server/config/config.example.js +++ b/server/config/config.example.js @@ -247,10 +247,11 @@ module.exports = // When truthy, the room will be open to all users when as long as there // are allready users in the room activateOnHostJoin : true, - // When set, maxUsersPerRoom defines how many users can join a single room. If not set, there is not limit. + // When set, maxUsersPerRoom defines how many users can join + // a single room. If not set, there is no limit. // maxUsersPerRoom : 20, // Room size before spreading to new router - routerScaleSize : 20, + routerScaleSize : 40, // Mediasoup settings mediasoup : { diff --git a/server/lib/Room.js b/server/lib/Room.js index ec8febf..1d30944 100644 --- a/server/lib/Room.js +++ b/server/lib/Room.js @@ -31,7 +31,7 @@ const permissionsFromRoles = ...config.permissionsFromRoles }; -const ROUTER_SCALE_SIZE = config.routerScaleSize || 20; +const ROUTER_SCALE_SIZE = config.routerScaleSize || 40; class Room extends EventEmitter { @@ -48,6 +48,9 @@ class Room extends EventEmitter { logger.info('create() [roomId:"%s"]', roomId); + // Shuffle workers to get random cores + let shuffledWorkers = mediasoupWorkers.sort(() => Math.random() - 0.5); + // Router media codecs. const mediaCodecs = config.mediasoup.router.mediaCodecs; @@ -55,7 +58,7 @@ class Room extends EventEmitter let firstRouter = null; - for (const worker of mediasoupWorkers) + for (const worker of shuffledWorkers) { const router = await worker.createRouter({ mediaCodecs }); @@ -74,6 +77,7 @@ class Room extends EventEmitter }); firstRouter = null; + shuffledWorkers = null; return new Room({ roomId, mediasoupRouters, audioLevelObserver }); }