Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3138)

Unified Diff: base/process_util_linux.cc

Issue 7607035: CrOS - Memory debug widget shows anonymous memory and renderer kills. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: base/process_util_linux.cc
diff --git a/base/process_util_linux.cc b/base/process_util_linux.cc
index 3ea383fdb297ed1cdc606877c6591905cbdad2e0..1f71f4dc080ccf629ddc04bb3bdd03e1ecf42c52 100644
--- a/base/process_util_linux.cc
+++ b/base/process_util_linux.cc
@@ -558,12 +558,13 @@ namespace {
const size_t kMemTotalIndex = 1;
const size_t kMemFreeIndex = 4;
const size_t kMemBuffersIndex = 7;
-const size_t kMemCacheIndex = 10;
+const size_t kMemCachedIndex = 10;
+const size_t kMemActiveAnonIndex = 22;
+const size_t kMemInactiveAnonIndex = 25;
} // namespace
-bool GetSystemMemoryInfo(int* mem_total, int* mem_free, int* mem_buffers,
- int* mem_cache, int* shmem) {
+bool GetSystemMemoryInfo(SystemMemoryInfoKB* meminfo) {
// Synchronously reading files in /proc is safe.
base::ThreadRestrictions::ScopedAllowIO allow_io;
@@ -577,7 +578,7 @@ bool GetSystemMemoryInfo(int* mem_total, int* mem_free, int* mem_buffers,
std::vector<std::string> meminfo_fields;
SplitStringAlongWhitespace(meminfo_data, &meminfo_fields);
- if (meminfo_fields.size() < kMemCacheIndex) {
+ if (meminfo_fields.size() < kMemCachedIndex) {
LOG(WARNING) << "Failed to parse /proc/meminfo. Only found " <<
meminfo_fields.size() << " fields.";
return false;
@@ -586,20 +587,25 @@ bool GetSystemMemoryInfo(int* mem_total, int* mem_free, int* mem_buffers,
DCHECK_EQ(meminfo_fields[kMemTotalIndex-1], "MemTotal:");
DCHECK_EQ(meminfo_fields[kMemFreeIndex-1], "MemFree:");
DCHECK_EQ(meminfo_fields[kMemBuffersIndex-1], "Buffers:");
- DCHECK_EQ(meminfo_fields[kMemCacheIndex-1], "Cached:");
-
- base::StringToInt(meminfo_fields[kMemTotalIndex], mem_total);
- base::StringToInt(meminfo_fields[kMemFreeIndex], mem_free);
- base::StringToInt(meminfo_fields[kMemBuffersIndex], mem_buffers);
- base::StringToInt(meminfo_fields[kMemCacheIndex], mem_cache);
+ DCHECK_EQ(meminfo_fields[kMemCachedIndex-1], "Cached:");
+ DCHECK_EQ(meminfo_fields[kMemActiveAnonIndex-1], "Active(anon):");
+ DCHECK_EQ(meminfo_fields[kMemInactiveAnonIndex-1], "Inactive(anon):");
+
+ base::StringToInt(meminfo_fields[kMemTotalIndex], &meminfo->total);
+ base::StringToInt(meminfo_fields[kMemFreeIndex], &meminfo->free);
+ base::StringToInt(meminfo_fields[kMemBuffersIndex], &meminfo->buffers);
+ base::StringToInt(meminfo_fields[kMemCachedIndex], &meminfo->cached);
+ base::StringToInt(meminfo_fields[kMemActiveAnonIndex], &meminfo->active_anon);
+ base::StringToInt(meminfo_fields[kMemInactiveAnonIndex],
+ &meminfo->inactive_anon);
#if defined(OS_CHROMEOS)
// Chrome OS has a tweaked kernel that allows us to query Shmem, which is
// usually video memory otherwise invisible to the OS. Unfortunately, the
// meminfo format varies on different hardware so we have to search for the
// string. It always appears after "Cached:".
- for (size_t i = kMemCacheIndex+2; i < meminfo_fields.size(); i += 3) {
+ for (size_t i = kMemCachedIndex+2; i < meminfo_fields.size(); i += 3) {
if (meminfo_fields[i] == "Shmem:") {
- base::StringToInt(meminfo_fields[i+1], shmem);
+ base::StringToInt(meminfo_fields[i+1], &meminfo->shmem);
break;
}
}
@@ -608,10 +614,10 @@ bool GetSystemMemoryInfo(int* mem_total, int* mem_free, int* mem_buffers,
}
size_t GetSystemCommitCharge() {
- int total, free, buffers, cache, shmem;
- if (!GetSystemMemoryInfo(&total, &free, &buffers, &cache, &shmem))
+ SystemMemoryInfoKB meminfo;
+ if (!GetSystemMemoryInfo(&meminfo))
return 0;
- return total - free - buffers - cache;
+ return meminfo.total - meminfo.free - meminfo.buffers - meminfo.cached;
}
namespace {

Powered by Google App Engine
This is Rietveld 408576698