summaryrefslogtreecommitdiff
path: root/mm
diff options
context:
space:
mode:
authorMinchan Kim <minchan@google.com>2020-03-05 11:26:14 -0800
committerMinchan Kim <minchan@google.com>2020-03-19 14:17:07 -0700
commit30616678fe897178d03cac376a284474c7629cfb (patch)
treea1ac0150489a478dbd8a4b1ef6cb723b51b908a2 /mm
parent2a1910fadb367d37f8f386b1056dd4c26a6ab506 (diff)
mm_logd: add pixel mm_logd to monitor mm stats
It monitor /proc/vmstat on every minute by default and store them to /data/vendor/mm/ directories. The mm_logd runs only when persist.vendor.log.mm is set to 1. User could change the interval via persist.vendor.log.mm.interval. Bug: 151100384 Signed-off-by: Minchan Kim <minchan@google.com> Change-Id: I89eabf59268a7f4138ae13900f7fa479e6c20217
Diffstat (limited to 'mm')
-rw-r--r--mm/Android.bp8
-rwxr-xr-xmm/init.mm.logging.sh34
-rw-r--r--mm/pixel-mm-logd.rc19
3 files changed, 61 insertions, 0 deletions
diff --git a/mm/Android.bp b/mm/Android.bp
new file mode 100644
index 0000000..f733d7e
--- /dev/null
+++ b/mm/Android.bp
@@ -0,0 +1,8 @@
+sh_binary {
+ name: "mm_logd",
+ src: "init.mm.logging.sh",
+ vendor: true,
+ init_rc: [
+ "pixel-mm-logd.rc",
+ ],
+}
diff --git a/mm/init.mm.logging.sh b/mm/init.mm.logging.sh
new file mode 100755
index 0000000..38c54e0
--- /dev/null
+++ b/mm/init.mm.logging.sh
@@ -0,0 +1,34 @@
+#!/vendor/bin/sh
+
+if [ $# -eq 1 ]; then
+ interval=$1
+else
+ exit 1
+fi
+
+kcompactd_pid=`pidof -x kcompactd0`
+kswapd_pid=`pidof -x kswapd0`
+
+while true
+do
+ log_time=`date '+%m-%d-%H-%M-%S'`
+
+ log_vmstat=`cat /proc/vmstat`
+ log_kcompactd=`cat /proc/$kcompactd_pid/stat`
+ log_kswapd=`cat /proc/$kswapd_pid/stat`
+ log_stat=`cat /proc/stat`
+
+ log_line="$log_time $log_vmstat"
+ echo $log_line >> /data/vendor/mm/vmstat/log
+
+ log_line="$log_time $log_kcompactd"
+ echo $log_line >> /data/vendor/mm/kcompactd/log
+
+ log_line="$log_time $log_kswapd"
+ echo $log_line >> /data/vendor/mm/kswapd/log
+
+ log_line="$log_time $log_stat"
+ echo $log_line >> /data/vendor/mm/stat/log
+
+ sleep $interval
+done
diff --git a/mm/pixel-mm-logd.rc b/mm/pixel-mm-logd.rc
new file mode 100644
index 0000000..40bcbe4
--- /dev/null
+++ b/mm/pixel-mm-logd.rc
@@ -0,0 +1,19 @@
+on property:persist.vendor.log.mm=1
+ mkdir /data/vendor/mm 0700 root system
+ mkdir /data/vendor/mm/vmstat 0700 root system
+ mkdir /data/vendor/mm/stat 0700 root system
+ mkdir /data/vendor/mm/kswapd 0700 root system
+ mkdir /data/vendor/mm/kcompactd 0700 root system
+ start vendor.mm.logd
+
+on property:persist.vendor.log.mm=0
+ stop vendor.mm.logd
+
+on property:persist.vendor.log.mm=1 && property:persist.vendor.log.mm.interval=*
+ restart vendor.mm.logd
+
+service vendor.mm.logd /vendor/bin/mm_logd ${persist.vendor.log.mm.interval:-60}
+ class main
+ user root
+ group root system
+ disabled