mirror of
https://github.com/finos/SymphonyElectron.git
synced 2025-02-25 18:55:29 -06:00
ELECTRON-445 - Add CPU usage for memory refresh logic
This commit is contained in:
parent
2fe67c6fb6
commit
46bc71c203
@ -149,8 +149,8 @@ electron.ipcMain.on(apiName, (event, arg) => {
|
||||
}
|
||||
break;
|
||||
case apiCmds.optimizeMemoryConsumption:
|
||||
if (typeof arg.memory === 'object' && typeof arg.memory.workingSetSize === 'number') {
|
||||
optimizeMemory(arg.memory);
|
||||
if (typeof arg.memory === 'object' && typeof arg.cpuUsage === 'object' && typeof arg.memory.workingSetSize === 'number') {
|
||||
optimizeMemory(arg.memory, arg.cpuUsage);
|
||||
}
|
||||
break;
|
||||
case apiCmds.setIsInMeeting:
|
||||
|
@ -8,8 +8,8 @@ const { getConfigField } = require('./config');
|
||||
|
||||
const maxMemory = 800;
|
||||
|
||||
let maxIdleTime = 4 * 60 * 1000;
|
||||
let reloadThreshold = 30 * 60 * 1000;
|
||||
let maxIdleTime = 15 * 60 * 1000;
|
||||
let reloadThreshold = 60 * 60 * 1000;
|
||||
let reloadedTimeStamp;
|
||||
let isInMeeting = false;
|
||||
|
||||
@ -35,12 +35,18 @@ function gatherMemory() {
|
||||
* application to free up some memory consumption
|
||||
*
|
||||
* @param memoryInfo
|
||||
* @param cpuUsage
|
||||
*/
|
||||
function optimizeMemory(memoryInfo) {
|
||||
function optimizeMemory(memoryInfo, cpuUsage) {
|
||||
const memoryConsumed = (memoryInfo && memoryInfo.workingSetSize / 1024) || 0;
|
||||
const canReload = (!reloadedTimeStamp || (new Date().getTime() - reloadedTimeStamp) > reloadThreshold);
|
||||
|
||||
if (memoryConsumed > maxMemory && systemIdleTime.getIdleTime() > maxIdleTime && canReload && !isInMeeting) {
|
||||
if (memoryConsumed > maxMemory
|
||||
&& systemIdleTime.getIdleTime() > maxIdleTime
|
||||
&& canReload
|
||||
&& !isInMeeting
|
||||
&& cpuUsage.percentCPUUsage < 1
|
||||
) {
|
||||
getConfigField('memoryRefresh')
|
||||
.then((enabled) => {
|
||||
if (enabled) {
|
||||
@ -51,6 +57,7 @@ function optimizeMemory(memoryInfo) {
|
||||
reloadedTimeStamp = new Date().getTime();
|
||||
log.send(logLevels.INFO, 'Reloading the app to optimize memory usage as' +
|
||||
' memory consumption was ' + memoryConsumed +
|
||||
' CPU usage percentage was ' + cpuUsage.percentCPUUsage +
|
||||
' user activity tick was ' + systemIdleTime.getIdleTime() +
|
||||
' user was in a meeting? ' + isInMeeting );
|
||||
mainWindow.reload();
|
||||
|
@ -74,11 +74,13 @@ const throttledSetIsInMeetingStatus = throttle(1000, function(isInMeeting) {
|
||||
// Gathers renderer process memory
|
||||
setInterval(() => {
|
||||
const memory = process.getProcessMemoryInfo();
|
||||
const cpuUsage = process.getCPUUsage();
|
||||
local.ipcRenderer.send(apiName, {
|
||||
cmd: apiCmds.optimizeMemoryConsumption,
|
||||
memory: memory
|
||||
memory: memory,
|
||||
cpuUsage: cpuUsage
|
||||
});
|
||||
}, 1000 * 60 * 4);
|
||||
}, 1000 * 60 * 15);
|
||||
|
||||
createAPI();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user