summaryrefslogtreecommitdiffstats
path: root/base/process_util_linux.cc
diff options
context:
space:
mode:
authorerg@chromium.org <erg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-05-11 17:46:08 +0000
committererg@chromium.org <erg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-05-11 17:46:08 +0000
commit98947a0beaa29f997e77e010cfaec72666e045e2 (patch)
tree7ed453cb5d337cf6d83208a16a95d0e1394be0b2 /base/process_util_linux.cc
parente2327e1c76276b05492c4d7909432d323c7fdb55 (diff)
downloadchromium_src-98947a0beaa29f997e77e010cfaec72666e045e2.zip
chromium_src-98947a0beaa29f997e77e010cfaec72666e045e2.tar.gz
chromium_src-98947a0beaa29f997e77e010cfaec72666e045e2.tar.bz2
Speed up the Task Manager on linux.
- Unify the calls to get shared memory and private memory. On Linux, these call the same API and on Linux, it takes >10ms to fetch both values each time it is called. - Cache the returned memory values. While sorting the task manager by memory, it would make the expensive memory call for each row on each sort operation. BUG=40033 TEST=Existing task manager tests. Review URL: http://codereview.chromium.org/2047009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@46938 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/process_util_linux.cc')
-rw-r--r--base/process_util_linux.cc15
1 files changed, 12 insertions, 3 deletions
diff --git a/base/process_util_linux.cc b/base/process_util_linux.cc
index 0a2cc0d..ee44638 100644
--- a/base/process_util_linux.cc
+++ b/base/process_util_linux.cc
@@ -244,10 +244,19 @@ size_t ProcessMetrics::GetPeakWorkingSetSize() const {
return 0;
}
-size_t ProcessMetrics::GetPrivateBytes() const {
+bool ProcessMetrics::GetMemoryBytes(size_t* private_bytes,
+ size_t* shared_bytes) {
WorkingSetKBytes ws_usage;
- GetWorkingSetKBytes(&ws_usage);
- return ws_usage.priv << 10;
+ if (!GetWorkingSetKBytes(&ws_usage))
+ return false;
+
+ if (private_bytes)
+ *private_bytes = ws_usage.priv << 10;
+
+ if (shared_bytes)
+ *shared_bytes = ws_usage.shared * 1024;
+
+ return true;
}
// Private and Shared working set sizes are obtained from /proc/<pid>/smaps.