@@ -72,18 +72,26 @@ std::vector<Metric> ProcessMonitor::getMemoryUsage()
7272 return metrics;
7373}
7474
75- Metric ProcessMonitor::getPss ()
75+ std::vector< Metric> ProcessMonitor::getSmaps ()
7676{
7777 std::ifstream statusStream (" /proc/self/smaps" );
7878 double pssTotal = 0 ;
79- std::string pssString;
79+ double cleanTotal = 0 ;
80+ double dirtyTotal = 0 ;
81+ std::string smapsString;
8082
81- while (std::getline (statusStream, pssString)) {
82- if (pssString.rfind (" Pss:" , 0 ) == 0 ) {
83- pssTotal += splitStatusLineAndRetriveValue (pssString);
83+ while (std::getline (statusStream, smapsString)) {
84+ if (smapsString.rfind (" Pss:" , 0 ) == 0 ) {
85+ pssTotal += splitStatusLineAndRetriveValue (smapsString);
86+ }
87+ if (smapsString.rfind (" Private_Clean:" , 0 ) == 0 ) {
88+ cleanTotal += splitStatusLineAndRetriveValue (smapsString);
89+ }
90+ if (smapsString.rfind (" Private_Dirty:" , 0 ) == 0 ) {
91+ dirtyTotal += splitStatusLineAndRetriveValue (smapsString);
8492 }
8593 }
86- return {pssTotal, metricsNames[PSS]};
94+ return {{ pssTotal, metricsNames[PSS]}, {cleanTotal, metricsNames[PRIVATE_CLEAN]}, {dirtyTotal, metricsNames[PRIVATE_DIRTY]} };
8795}
8896
8997std::vector<Metric> ProcessMonitor::getCpuAndContexts ()
@@ -132,7 +140,8 @@ std::vector<Metric> ProcessMonitor::getPerformanceMetrics()
132140#ifdef O2_MONITORING_OS_LINUX
133141 auto memoryMetrics = getMemoryUsage ();
134142 std::move (memoryMetrics.begin (), memoryMetrics.end (), std::back_inserter (metrics));
135- metrics.emplace_back (getPss ());
143+ auto smapMetrics = getSmaps ();
144+ std::move (smapMetrics.begin (), smapMetrics.end (), std::back_inserter (metrics));
136145#endif
137146 return metrics;
138147}
0 commit comments