@@ -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
416417void 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;
0 commit comments