statslog: Make this library compatible with the cgroups v2 hierarchy
Call memcg_apps_dir() instead of hard-coding the top-level directory of the memcg controller. Bug: 213617178 Test: Verified lmkd operation inside Cuttlefish. Change-Id: I659610ebdabe3b69b0b1097aa5cf248d6f3273c5 Signed-off-by: Bart Van Assche <bvanassche@google.com>
This commit is contained in:
parent
911f106a4a
commit
16ba8bc773
|
|
@ -55,6 +55,7 @@ cc_library_static {
|
|||
defaults: ["stats_defaults"],
|
||||
shared_libs: [
|
||||
"liblog",
|
||||
"libprocessgroup",
|
||||
],
|
||||
}
|
||||
|
||||
|
|
|
|||
18
statslog.cpp
18
statslog.cpp
|
|
@ -30,6 +30,10 @@
|
|||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <string>
|
||||
|
||||
#include <processgroup/processgroup.h>
|
||||
|
||||
#ifdef LMKD_LOG_STATS
|
||||
|
||||
#define STRINGIFY(x) STRINGIFY_INTERNAL(x)
|
||||
|
|
@ -85,18 +89,20 @@ static void memory_stat_parse_line(char* line, struct memory_stat* mem_st) {
|
|||
mem_st->swap_in_bytes = value;
|
||||
}
|
||||
|
||||
static int memory_stat_from_cgroup(struct memory_stat* mem_st, int pid, uid_t uid) {
|
||||
FILE *fp;
|
||||
char buf[PATH_MAX];
|
||||
static int memory_stat_from_cgroup(struct memory_stat* mem_st, int pid, uid_t uid __unused) {
|
||||
std::string path;
|
||||
if (!CgroupGetAttributePathForTask("MemStats", pid, &path)) {
|
||||
ALOGE("Querying MemStats path failed");
|
||||
return -1;
|
||||
}
|
||||
|
||||
snprintf(buf, sizeof(buf), MEMCG_PROCESS_MEMORY_STAT_PATH, uid, pid);
|
||||
|
||||
fp = fopen(buf, "r");
|
||||
FILE* fp = fopen(path.c_str(), "r");
|
||||
|
||||
if (fp == NULL) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
char buf[PAGE_SIZE];
|
||||
while (fgets(buf, PAGE_SIZE, fp) != NULL) {
|
||||
memory_stat_parse_line(buf, mem_st);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -92,7 +92,6 @@ enum lmk_state {
|
|||
|
||||
#ifdef LMKD_LOG_STATS
|
||||
|
||||
#define MEMCG_PROCESS_MEMORY_STAT_PATH "/dev/memcg/apps/uid_%u/pid_%d/memory.stat"
|
||||
#define PROC_STAT_FILE_PATH "/proc/%d/stat"
|
||||
#define PROC_STAT_BUFFER_SIZE 1024
|
||||
#define BYTES_IN_KILOBYTE 1024
|
||||
|
|
|
|||
Loading…
Reference in New Issue