ELECTRON-445 - Add CPU usage for memory refresh logic

This commit is contained in:
Kiran Niranjan 2018-06-05 16:03:28 +05:30
parent 2fe67c6fb6
commit 46bc71c203
3 changed files with 17 additions and 8 deletions

View File

@ -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:

View File

@ -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();

View File

@ -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();