Skip to content

Commit a19a01e

Browse files
authored
Merge pull request #1150 from WebPlatformForEmbedded/pgorszkowski/linux_MemoryPressureMonitor_cgroupV1_honors_memory.memsw.usage_in_bytes_if_exist
Linux MemoryPressureMonitor (cgroupV1) honors memory.memsw.usage_in_b…
2 parents ea79572 + f0e7554 commit a19a01e

2 files changed

Lines changed: 13 additions & 2 deletions

File tree

Source/WebKit/UIProcess/linux/MemoryPressureMonitor.cpp

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -409,12 +409,15 @@ void CGroupMemoryController::setMemoryControllerPath(CString memoryControllerPat
409409
m_cgroupV2MemoryHighFile = getCgroupFile("/", memoryControllerPath, CString("memory.high"));
410410

411411
m_cgroupMemoryMemswLimitInBytesFile = getCgroupFile("memory", memoryControllerPath, CString("memory.memsw.limit_in_bytes"));
412+
m_cgroupMemoryMemswUsageInBytesFile = getCgroupFile("memory", memoryControllerPath, CString("memory.memsw.usage_in_bytes"));
412413
m_cgroupMemoryLimitInBytesFile = getCgroupFile("memory", memoryControllerPath, CString("memory.limit_in_bytes"));
413414
m_cgroupMemoryUsageInBytesFile = getCgroupFile("memory", memoryControllerPath, CString("memory.usage_in_bytes"));
414415
}
415416

416417
void CGroupMemoryController::disposeMemoryController()
417418
{
419+
if (m_cgroupMemoryMemswUsageInBytesFile)
420+
fclose(m_cgroupMemoryMemswUsageInBytesFile);
418421
if (m_cgroupMemoryMemswLimitInBytesFile)
419422
fclose(m_cgroupMemoryMemswLimitInBytesFile);
420423
if (m_cgroupMemoryLimitInBytesFile)
@@ -464,6 +467,7 @@ size_t CGroupMemoryController::getMemoryTotalWithCgroup()
464467
if (value != notSet)
465468
return value;
466469

470+
// Check memory limits in cgroupV1 (fallback)
467471
value = getCgroupFileValue(m_cgroupMemoryLimitInBytesFile);
468472
if (value != notSet)
469473
return value;
@@ -475,12 +479,18 @@ size_t CGroupMemoryController::getMemoryUsageWithCgroup()
475479
{
476480
size_t value = notSet;
477481

478-
// Check memory limits in cgroupV2
482+
// Get the total amount of memory currently being used by the cgroup
483+
// and its descendants in cgroupV2
479484
value = getCgroupFileValue(m_cgroupV2MemoryCurrentFile);
480485
if (value != notSet)
481486
return value;
482487

483-
// Check memory limits in cgroupV1
488+
// Get current memory used (memory+Swap) in cgroupV1
489+
value = getCgroupFileValue(m_cgroupMemoryMemswUsageInBytesFile);
490+
if (value != notSet)
491+
return value;
492+
493+
// Get current memory used in cgroupV1 (fallback)
484494
value = getCgroupFileValue(m_cgroupMemoryUsageInBytesFile);
485495
if (value != notSet)
486496
return value;

Source/WebKit/UIProcess/linux/MemoryPressureMonitor.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ class CGroupMemoryController {
7272
CString m_cgroupMemoryControllerPath;
7373

7474
FILE* m_cgroupMemoryMemswLimitInBytesFile;
75+
FILE* m_cgroupMemoryMemswUsageInBytesFile;
7576
FILE* m_cgroupMemoryLimitInBytesFile;
7677
FILE* m_cgroupMemoryUsageInBytesFile;
7778

0 commit comments

Comments
 (0)