OSDN Git Service

Merge "Inferno: A framegrapher based on simpleperf" am: af30023228 am: d8f0a1eb93...
authorFabien Sanglard <sanglardf@google.com>
Thu, 13 Jul 2017 16:57:03 +0000 (16:57 +0000)
committerandroid-build-merger <android-build-merger@google.com>
Thu, 13 Jul 2017 16:57:03 +0000 (16:57 +0000)
am: f48607ac87

Change-Id: I19d9b0a810ce8dea5142af158924a9c33a660544

ioblame/Android.mk [new file with mode: 0644]
ioblame/README [new file with mode: 0644]
ioblame/ioblame-gmail-launch.example [new file with mode: 0644]
ioblame/ioblame-gmail-run.example [new file with mode: 0644]
ioblame/ioblame.sh [new file with mode: 0755]
tests/bootloader/bootloadertest.py
tests/kernel.config/Android.mk

diff --git a/ioblame/Android.mk b/ioblame/Android.mk
new file mode 100644 (file)
index 0000000..9f981b0
--- /dev/null
@@ -0,0 +1,5 @@
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+LOCAL_PREBUILT_EXECUTABLES := ioblame.sh
+include $(BUILD_HOST_PREBUILT)
diff --git a/ioblame/README b/ioblame/README
new file mode 100644 (file)
index 0000000..ebe8060
--- /dev/null
@@ -0,0 +1,200 @@
+What is it ?
+----------
+ioblame is a IO profiler. It gives a detailed listing of the list of
+files that running pids are doing IO to (with the aggregate amount of
+read/write to each file). The goal is that using this tool, app
+developers can identify IO heavy paths, and tune them, then
+iteratively run this tool again to measure improvements/IO reduction.
+
+ioblame is implemented as a collection of kernel filesystem
+tracepoints, and a script.
+
+What does the output from ioblame look like ?
+-------------------------------------------
+ioblame gives 2 different views.
+
+1) File view : For each file, it gives a list of pids that are doing
+IO on that file (it also gives the amount of IO each pid does and
+the aggregate amount of IO done to the file by all pids).
+
+File: /app/Chrome/Chrome.apk
+            Chrome_ChildIOT Reads: 96 KB
+            Chrome_DBThread Reads: 652 KB
+            Chrome_FileUser Reads: 72 KB
+            Chrome_InProcGp Reads: 732 KB
+            Chrome_IOThread Reads: 1396 KB
+            Compositor Reads: 652 KB
+            CookieMonsterBa Reads: 284 KB
+            CrRendererMain Reads: 17012 KB
+            dboxed_process0 Reads: 512 KB
+            JavaBridge Reads: 128 KB
+            ogle.android.gm Reads: 14996 KB
+            WorkerPool/8556 Reads: 408 KB
+            Total Reads: 36940 KB i_size: 71354 KB
+File: /app/Gmail2Light/Gmail2Light.apk
+            AsyncTask_#2 Reads: 24 KB
+            Chrome_IOThread Reads: 68 KB
+            ogle.android.gm Reads: 1440 KB
+            Thread-6 Reads: 8 KB
+            Total Reads: 1540 KB i_size: 9736 KB
+
+And ditto for writes.
+
+2) PID view : For each pid actively doing IO, it dumps out the list of
+files that the pid does IO to.
+
+PID: CrRendererMain
+            /app/Chrome/Chrome.apk Reads: 17012 KB i_size: 71354 KB
+            /etc/fonts.xml Reads: 24 KB i_size: 22 KB
+            /fonts/CarroisGothicSC-Regular.ttf Reads: 40 KB i_size: 39 KB
+            /fonts/ComingSoon.ttf Reads: 60 KB i_size: 57 KB
+            /fonts/CutiveMono.ttf Reads: 68 KB i_size: 67 KB
+            /fonts/DancingScript-Bold.ttf Reads: 116 KB i_size: 112 KB
+            /fonts/DancingScript-Regular.ttf Reads: 116 KB i_size: 113 KB
+            /fonts/DroidSansMono.ttf Reads: 108 KB i_size: 105 KB
+            /fonts/NotoColorEmoji.ttf Reads: 204 KB i_size: 7108 KB
+            /fonts/NotoNaskhArabic-Bold.ttf Reads: 116 KB i_size: 113 KB
+,,,
+           /fonts/NotoSerif-BoldItalic.ttf Reads: 248 KB i_size: 256 KB
+            /fonts/NotoSerif-Bold.ttf Reads: 244 KB i_size: 242 KB
+            /fonts/NotoSerif-Italic.ttf Reads: 244 KB i_size: 243 KB
+            /fonts/NotoSerif-Regular.ttf Reads: 244 KB i_size: 240 KB
+            /fonts/Roboto-BlackItalic.ttf Reads: 256 KB i_size: 322 KB
+            /fonts/Roboto-Black.ttf Reads: 256 KB i_size: 299 KB
+            /fonts/Roboto-BoldItalic.ttf Reads: 256 KB i_size: 324 KB
+            /fonts/RobotoCondensed-BoldItalic.ttf Reads: 256 KB i_size: 322 KB
+            /fonts/RobotoCondensed-Bold.ttf Reads: 256 KB i_size: 296 KB
+            /fonts/RobotoCondensed-Italic.ttf Reads: 256 KB i_size: 321 KB
+            /fonts/RobotoCondensed-LightItalic.ttf Reads: 256 KB i_size: 324 KB
+            /fonts/RobotoCondensed-Light.ttf Reads: 256 KB i_size: 295 KB
+            /fonts/RobotoCondensed-MediumItalic.ttf Reads: 256 KB i_size: 322 KB
+            /fonts/RobotoCondensed-Medium.ttf Reads: 256 KB i_size: 296 KB
+            /fonts/Roboto-LightItalic.ttf Reads: 256 KB i_size: 324 KB
+            /fonts/Roboto-MediumItalic.ttf Reads: 256 KB i_size: 323 KB
+            /fonts/Roboto-Regular.ttf Reads: 88 KB i_size: 298 KB
+            /fonts/Roboto-ThinItalic.ttf Reads: 256 KB i_size: 321 KB
+            /fonts/Roboto-Thin.ttf Reads: 256 KB i_size: 300 KB
+            /lib/libft2.so Reads: 56 KB i_size: 479 KB
+            /lib/libicuuc.so Reads: 88 KB i_size: 1182 KB
+            Total Reads: 32760 KB
+
+And ditto for writes.
+
+Finally, it reports the total amount of file data IO done by pids and
+the total IO done to the block device. So we can look at IO overheads
+(eg block level prefetching, filesystem metadata overhead etc).
+
+For detailed examples, look at ioblame-gmail-launch.example and
+ioblame-gmail-run.example.
+
+How do I run ioblame ?
+--------------------
+ioblame -r     [ I am only interested in reads ]
+ioblame -w     [ I am only interested in writes ]
+ioblame -r -w  [ I am only interested in reads and writes ]
+
+1) The most common way of running ioblame is to start ioblame, then go
+off and launch the app(s) of interest, do interesting stuff with the
+app(s), and when finished with the app, hit ^C ONCE on
+ioblame. Hitting ^C once will cause ioblame to catch the signal, break
+out of the sleep, terminate its tracing, and process the ftraces and
+dump out IO stats for the app.
+
+example :
+
+srmohan0.mtv.corp.google.com> sh ioblame.sh  -r -w
+Found aosp_gobo Device
+OK to kill sleep when test is done
+^Csignal INT received, killing streaming trace capture
+
+(at this point, run your apps, when done type ^C ONCE) and output will
+appear on stdout.
+
+2) Sometimes, we want to do IO profiling in a different way (instead of
+running something and then hitting ^C on ioblame). For instance, we
+might want to do IO profiling related to the launch of an App. This
+requires you to modify the script slightly, as described in the next
+paragraph.
+
+If you want to do IO profiling related to App launch, you need to modify
+2 functions - prep_to_do_something and do_something. Again examples of
+changes to these functions clarifies things better :
+
+prep_to_do_something() {
+    adb shell "am force-stop com.google.android.gm" # This line I added for example
+                                                   # stops the running app (gmail)
+    adb shell 'echo 3 > /proc/sys/vm/drop_caches'
+    sleep 1
+}
+
+do_something() {
+    # Arrange things so that the first SIGINT will kill the
+    # child process (sleep), but will return to the parent.
+#    trap 'catch_sigint'  INT
+#    echo "OK to kill sleep when test is done"
+#    sleep 1d
+     # For the purpose of this example, I commented out the above 3 lines that
+     # make ioblame sleep forever after catching the SIGINT and instead it launches
+     # gmail, waiting for launch to complete. When launch completes, ioblame will
+     # stop tracing, and process the traces
+    adb shell "am start -W -n com.google.android.gm/.ConversationListActivityGmail"
+}
+
+Limitations :
+-----------
+The ioblame kernel tracepoints currently only cover the getpage(s)
+path (so all filesystem reads) and filesystem write() syscalls. There
+are no tracepoints in the putpage(s) paths. This is because when
+putpage(s) is called, we most often cannot tell which thread/pid has
+dirtied the page that is being written out, because the majority of
+putpage(s) happen from the flush threads or from the pageout
+threads. The upshot of this is the mmap'ed writes are not reported by
+ioblame. In practice, while mmap'ed reads are very common, mmap'ed
+writes are infrequent.
+
+Kernel Patches Required :
+-----------------------
+ioblame needs the kernel to be patched with these 3 kernel patches.
+Without these patches, ioblame won't work at all.
+
+commit ae2f6765db98e2fcb99082e336dd8b24e7644620
+Author: Mohan Srinivasan <srmohan@google.com>
+Date:   Fri Mar 10 16:08:30 2017 -0800
+
+    ANDROID: Replace spaces by '_' for some android filesystem tracepoints.
+
+    Andoid files frequently have spaces in them, as do cmdline strings.
+    Replace these spaces with '_', so tools that parse these tracepoints
+    don't get terribly confused.
+
+    Change-Id: I1cbbedf5c803aa6a58d9b8b7836e9125683c49d1
+    Signed-off-by: Mohan Srinivasan <srmohan@google.com>
+    (cherry picked from commit 5035d5f0933758dd515327d038e5bef7e40dbaa7)
+
+commit a2a04ea83d2960867324fa059ba1eedc2fc7784e (HEAD -> android-4.4)
+Author: Mohan Srinivasan <srmohan@google.com>
+Date:   Fri Feb 3 15:48:03 2017 -0800
+
+    ANDROID: Refactor fs readpage/write tracepoints.
+
+    Refactor the fs readpage/write tracepoints to move the
+    inode->path lookup outside the tracepoint code, and pass a pointer
+    to the path into the tracepoint code instead. This is necessary
+    because the tracepoint code runs non-preemptible. Thanks to
+    Trilok Soni for catching this in 4.4.
+
+    Change-Id: I7486c5947918d155a30c61d6b9cd5027cf8fbe15
+    Signed-off-by: Mohan Srinivasan <srmohan@google.com>
+
+commit 32cbbe59538d2dd0b77822cc27ce32ca487c467d
+Author: Mohan Srinivasan <srmohan@google.com>
+Date:   Mon Sep 19 17:33:50 2016 -0700
+
+    ANDROID: fs: FS tracepoints to track IO.
+
+    Adds tracepoints in ext4/f2fs/mpage to track readpages/buffered
+    write()s. This allows us to track files that are being read/written
+    to PIDs.
+
+    Change-Id: I26bd36f933108927d6903da04d8cb42fd9c3ef3d
+    Signed-off-by: Mohan Srinivasan <srmohan@google.com>
diff --git a/ioblame/ioblame-gmail-launch.example b/ioblame/ioblame-gmail-launch.example
new file mode 100644 (file)
index 0000000..6badfd7
--- /dev/null
@@ -0,0 +1,328 @@
+adbd is already running as root
+Found aosp_gobo Device
+Starting: Intent { cmp=com.google.android.gm/.ConversationListActivityGmail }
+Status: ok
+Activity: com.google.android.gm/.ConversationListActivityGmail
+ThisTime: 2067
+TotalTime: 2067
+WaitTime: 2084
+Complete
+Killing adb shell cat /sys/kernel/debug/tracing/trace_pipe
+ioblame.sh: line 179: 70891 Terminated              adb shell cat /sys/kernel/debug/tracing/trace_pipe > trace_saved
+
+READS :
+_______
+
+FILE VIEW:
+File: /
+            ogle.android.gm Reads: 4 KB
+            Total Reads: 4 KB i_size: 163840 KB
+File: /app/Gmail2Light/Gmail2Light.apk
+            AsyncTask_#2 Reads: 24 KB
+            ogle.android.gm Reads: 1076 KB
+            Total Reads: 1100 KB i_size: 9736 KB
+File: /bin/am
+            sh Reads: 4 KB
+            Total Reads: 4 KB i_size: 207 bytes
+File: /bin/cmd
+            am Reads: 16 KB
+            cmd Reads: 48 KB
+            Total Reads: 64 KB i_size: 44 KB
+File: /bin/toybox
+            cat Reads: 304 KB
+            sh Reads: 16 KB
+            Total Reads: 320 KB i_size: 319 KB
+File: /data/com.google.android.gm/files/deviceName
+            AsyncTask_#3 Reads: 4 KB
+            Total Reads: 4 KB i_size: 17 bytes
+File: /data/com.google.android.gm/shared_prefs/Account-android.smoke.fast@gmail.com.xml
+            SharedPreferenc Reads: 4 KB
+            Total Reads: 4 KB i_size: 2 KB
+File: /data/com.google.android.gm/shared_prefs/AndroidMail.Main.xml
+            SharedPreferenc Reads: 4 KB
+            Total Reads: 4 KB i_size: 206 bytes
+File: /data/com.google.android.gm/shared_prefs/c9edm_account-1303398453.xml
+            SharedPreferenc Reads: 4 KB
+            Total Reads: 4 KB i_size: 254 bytes
+File: /data/com.google.android.gm/shared_prefs/c9edm_account-2137146394.xml
+            SharedPreferenc Reads: 4 KB
+            Total Reads: 4 KB i_size: 167 bytes
+File: /data/com.google.android.gm/shared_prefs/G6yPrefs.xml
+            SharedPreferenc Reads: 4 KB
+            Total Reads: 4 KB i_size: 191 bytes
+File: /data/com.google.android.gm/shared_prefs/Gmail.xml
+            SharedPreferenc Reads: 4 KB
+            Total Reads: 4 KB i_size: 1 KB
+File: /data/com.google.android.gm/shared_prefs/_has_set_default_values.xml
+            SharedPreferenc Reads: 4 KB
+            Total Reads: 4 KB i_size: 130 bytes
+File: /data/com.google.android.gm/shared_prefs/UnifiedEmail.xml
+            SharedPreferenc Reads: 4 KB
+            Total Reads: 4 KB i_size: 935 bytes
+File: /fonts/Roboto-Medium.ttf
+            ogle.android.gm Reads: 176 KB
+            Total Reads: 176 KB i_size: 299 KB
+File: /framework/arm/boot-android.hidl.base-V1.0-java.vdex
+            ogle.android.gm Reads: 12 KB
+            Total Reads: 12 KB i_size: 11 KB
+File: /framework/arm/boot.art
+            ogle.android.gm Reads: 16 KB
+            Total Reads: 16 KB i_size: 1956 KB
+File: /framework/arm/boot-core-libart.oat
+            ogle.android.gm Reads: 536 KB
+            Total Reads: 536 KB i_size: 3076 KB
+File: /framework/arm/boot-core-libart.vdex
+            ogle.android.gm Reads: 868 KB
+            Total Reads: 868 KB i_size: 3080 KB
+File: /framework/arm/boot-framework.oat
+            AsyncTask_#2 Reads: 24 KB
+            HeapTaskDaemon Reads: 76 KB
+            Jit_thread_pool Reads: 12 KB
+            ogle.android.gm Reads: 1808 KB
+            Total Reads: 1920 KB i_size: 21357 KB
+File: /framework/arm/boot-framework.vdex
+            AsyncTask_#2 Reads: 36 KB
+            EGL_Init Reads: 116 KB
+            Jit_thread_pool Reads: 196 KB
+            ogle.android.gm Reads: 1284 KB
+            Total Reads: 1632 KB i_size: 19304 KB
+File: /framework/arm/boot.oat
+            AsyncTask_#1 Reads: 36 KB
+            ogle.android.gm Reads: 116 KB
+            Total Reads: 152 KB i_size: 7511 KB
+File: /framework/arm/boot-okhttp.oat
+            ogle.android.gm Reads: 108 KB
+            Total Reads: 108 KB i_size: 545 KB
+File: /framework/arm/boot-okhttp.vdex
+            ogle.android.gm Reads: 244 KB
+            Total Reads: 244 KB i_size: 412 KB
+File: /framework/arm/boot-org.apache.http.legacy.boot.vdex
+            AsyncTask_#2 Reads: 88 KB
+            Total Reads: 88 KB i_size: 509 KB
+File: /framework/com.android.location.provider.jar
+            AsyncTask_#3 Reads: 16 KB
+            Total Reads: 16 KB i_size: 12 KB
+File: /framework/com.android.media.remotedisplay.jar
+            AsyncTask_#3 Reads: 8 KB
+            Total Reads: 8 KB i_size: 4 KB
+File: /framework/framework-res.apk
+            android.anim Reads: 24 KB
+            ogle.android.gm Reads: 416 KB
+            Total Reads: 440 KB i_size: 18923 KB
+File: /framework/oat/arm/com.android.location.provider.odex
+            AsyncTask_#3 Reads: 12 KB
+            Total Reads: 12 KB i_size: 20 KB
+File: /framework/oat/arm/com.android.media.remotedisplay.odex
+            AsyncTask_#3 Reads: 12 KB
+            Total Reads: 12 KB i_size: 20 KB
+File: /lib/hw/gralloc.mt6737m.so
+            ogle.android.gm Reads: 12 KB
+            Total Reads: 12 KB i_size: 40 KB
+File: /lib/libbacktrace.so
+            cmd Reads: 68 KB
+            Total Reads: 68 KB i_size: 85 KB
+File: /lib/libbase.so
+            cmd Reads: 12 KB
+            Total Reads: 12 KB i_size: 61 KB
+File: /lib/libbinder.so
+            cmd Reads: 240 KB
+            Total Reads: 240 KB i_size: 407 KB
+File: /lib/libcrypto.so
+            cat Reads: 112 KB
+            Total Reads: 112 KB i_size: 689 KB
+File: /lib/liblzma.so
+            cmd Reads: 76 KB
+            Total Reads: 76 KB i_size: 93 KB
+File: /lib/libpackagelistparser.so
+            cat Reads: 8 KB
+            Total Reads: 8 KB i_size: 15 KB
+File: /lib/libpcre2.so
+            cat Reads: 48 KB
+            Total Reads: 48 KB i_size: 92 KB
+File: /lib/libselinux.so
+            cat Reads: 12 KB
+            Total Reads: 12 KB i_size: 75 KB
+File: /lib/libskia.so
+            ogle.android.gm Reads: 116 KB
+            Total Reads: 116 KB i_size: 5578 KB
+File: /lib/libunwind.so
+            cmd Reads: 68 KB
+            Total Reads: 68 KB i_size: 85 KB
+File: /lib/libutils.so
+            cmd Reads: 16 KB
+            Total Reads: 16 KB i_size: 94 KB
+File: /lib/libvndksupport.so
+            cmd Reads: 4 KB
+            Total Reads: 4 KB i_size: 15 KB
+File: /lib/libz.so
+            cat Reads: 20 KB
+            Total Reads: 20 KB i_size: 95 KB
+File: /priv-app/GmsCore/GmsCore.apk
+            AsyncTask_#3 Reads: 148 KB
+            Total Reads: 148 KB i_size: 37870 KB
+File: /user/0
+            ogle.android.gm Reads: 4 KB
+            Total Reads: 4 KB i_size: 10 bytes
+File: /usr/icu/icudt58l.dat
+            ogle.android.gm Reads: 828 KB
+            Total Reads: 828 KB i_size: 22774 KB
+Grand Total File DATA KB Reads 9560
+PID VIEW:
+PID: am
+            /bin/cmd Reads: 16 KB i_size: 44 KB
+            /bin/am Reads: 4 KB i_size: 207 bytes
+            Total Reads: 20 KB
+PID: android.anim
+            /framework/framework-res.apk Reads: 24 KB i_size: 18923 KB
+            Total Reads: 24 KB
+PID: AsyncTask_#1
+            /framework/arm/boot.oat Reads: 36 KB i_size: 7511 KB
+            Total Reads: 36 KB
+PID: AsyncTask_#2
+            /app/Gmail2Light/Gmail2Light.apk Reads: 24 KB i_size: 9736 KB
+            /framework/arm/boot-framework.oat Reads: 24 KB i_size: 21357 KB
+            /framework/arm/boot-framework.vdex Reads: 36 KB i_size: 19304 KB
+            /framework/arm/boot-org.apache.http.legacy.boot.vdex Reads: 88 KB i_size: 509 KB
+            Total Reads: 172 KB
+PID: AsyncTask_#3
+            /data/com.google.android.gm/files/deviceName Reads: 4 KB i_size: 17 bytes
+            /framework/com.android.location.provider.jar Reads: 16 KB i_size: 12 KB
+            /framework/com.android.media.remotedisplay.jar Reads: 8 KB i_size: 4 KB
+            /framework/oat/arm/com.android.location.provider.odex Reads: 12 KB i_size: 20 KB
+            /framework/oat/arm/com.android.media.remotedisplay.odex Reads: 12 KB i_size: 20 KB
+            /priv-app/GmsCore/GmsCore.apk Reads: 148 KB i_size: 37870 KB
+            Total Reads: 200 KB
+PID: cat
+            /bin/toybox Reads: 304 KB i_size: 319 KB
+            /lib/libcrypto.so Reads: 112 KB i_size: 689 KB
+            /lib/libpackagelistparser.so Reads: 8 KB i_size: 15 KB
+            /lib/libpcre2.so Reads: 48 KB i_size: 92 KB
+            /lib/libselinux.so Reads: 12 KB i_size: 75 KB
+            /lib/libz.so Reads: 20 KB i_size: 95 KB
+            Total Reads: 504 KB
+PID: cmd
+            /bin/cmd Reads: 48 KB i_size: 44 KB
+            /lib/libbacktrace.so Reads: 68 KB i_size: 85 KB
+            /lib/libbase.so Reads: 12 KB i_size: 61 KB
+            /lib/libbinder.so Reads: 240 KB i_size: 407 KB
+            /lib/liblzma.so Reads: 76 KB i_size: 93 KB
+            /lib/libunwind.so Reads: 68 KB i_size: 85 KB
+            /lib/libutils.so Reads: 16 KB i_size: 94 KB
+            /lib/libvndksupport.so Reads: 4 KB i_size: 15 KB
+            Total Reads: 532 KB
+PID: EGL_Init
+            /framework/arm/boot-framework.vdex Reads: 116 KB i_size: 19304 KB
+            Total Reads: 116 KB
+PID: HeapTaskDaemon
+            /framework/arm/boot-framework.oat Reads: 76 KB i_size: 21357 KB
+            Total Reads: 76 KB
+PID: Jit_thread_pool
+            /framework/arm/boot-framework.oat Reads: 12 KB i_size: 21357 KB
+            /framework/arm/boot-framework.vdex Reads: 196 KB i_size: 19304 KB
+            Total Reads: 208 KB
+PID: ogle.android.gm
+            / Reads: 4 KB i_size: 163840 KB
+            /app/Gmail2Light/Gmail2Light.apk Reads: 1076 KB i_size: 9736 KB
+            /fonts/Roboto-Medium.ttf Reads: 176 KB i_size: 299 KB
+            /framework/arm/boot-android.hidl.base-V1.0-java.vdex Reads: 12 KB i_size: 11 KB
+            /framework/arm/boot.art Reads: 16 KB i_size: 1956 KB
+            /framework/arm/boot-core-libart.oat Reads: 536 KB i_size: 3076 KB
+            /framework/arm/boot-core-libart.vdex Reads: 868 KB i_size: 3080 KB
+            /framework/arm/boot-framework.oat Reads: 1808 KB i_size: 21357 KB
+            /framework/arm/boot-framework.vdex Reads: 1284 KB i_size: 19304 KB
+            /framework/arm/boot.oat Reads: 116 KB i_size: 7511 KB
+            /framework/arm/boot-okhttp.oat Reads: 108 KB i_size: 545 KB
+            /framework/arm/boot-okhttp.vdex Reads: 244 KB i_size: 412 KB
+            /framework/framework-res.apk Reads: 416 KB i_size: 18923 KB
+            /lib/hw/gralloc.mt6737m.so Reads: 12 KB i_size: 40 KB
+            /lib/libskia.so Reads: 116 KB i_size: 5578 KB
+            /user/0 Reads: 4 KB i_size: 10 bytes
+            /usr/icu/icudt58l.dat Reads: 828 KB i_size: 22774 KB
+            Total Reads: 7624 KB
+PID: sh
+            /bin/am Reads: 4 KB i_size: 207 bytes
+            /bin/toybox Reads: 16 KB i_size: 319 KB
+            Total Reads: 20 KB
+PID: SharedPreferenc
+            /data/com.google.android.gm/shared_prefs/Account-android.smoke.fast@gmail.com.xml Reads: 4 KB i_size: 2 KB
+            /data/com.google.android.gm/shared_prefs/AndroidMail.Main.xml Reads: 4 KB i_size: 206 bytes
+            /data/com.google.android.gm/shared_prefs/c9edm_account-1303398453.xml Reads: 4 KB i_size: 254 bytes
+            /data/com.google.android.gm/shared_prefs/c9edm_account-2137146394.xml Reads: 4 KB i_size: 167 bytes
+            /data/com.google.android.gm/shared_prefs/G6yPrefs.xml Reads: 4 KB i_size: 191 bytes
+            /data/com.google.android.gm/shared_prefs/Gmail.xml Reads: 4 KB i_size: 1 KB
+            /data/com.google.android.gm/shared_prefs/_has_set_default_values.xml Reads: 4 KB i_size: 130 bytes
+            /data/com.google.android.gm/shared_prefs/UnifiedEmail.xml Reads: 4 KB i_size: 935 bytes
+            Total Reads: 32 KB
+Grand Total File DATA KB Reads 9564
+Total (ALL) Read KB mmcblk0 = 23092
+READ DELTA: Total Blockdev Reads KB - Total File Data Reads KB = 13528 KB
+Total (ALL) Read IOs mmcblk0 = 876
+Debug Grand Total KB READ 9544
+
+Writes :
+_______
+
+FILE VIEW:
+File: /data/com.google.android.gm/databases/EmailProvider.db
+            AsyncTask_#2 Writes: 49 KB
+            Total Writes: 49 KB i_size: 8 KB
+File: /data/com.google.android.gm/databases/EmailProvider.db-journal
+            AsyncTask_#2 Writes: 25 KB
+            Total Writes: 25 KB i_size: 8 KB
+File: /data/com.google.android.gm/databases/mailstore.android.smoke.fast@gmail.com.db-shm
+            AsyncTask_#2 Writes: 0 KB
+            Total Writes: 0 KB i_size: 4 KB
+File: /data/com.google.android.gm/databases/mailstore.android.smoke.fast@gmail.com.db-wal
+            AsyncTask_#2 Writes: 4 KB
+            SyncAdapterThre Writes: 32 KB
+            Total Writes: 36 KB i_size: 512 KB
+File: /data/com.google.android.gms/databases/playlog.db-wal
+            lowpool[12] Writes: 16 KB
+            Total Writes: 16 KB i_size: 426 KB
+File: /data/com.google.android.gm/shared_prefs/G6yPrefs.xml
+            queued-work-loo Writes: 0 KB
+            Total Writes: 0 KB i_size: 0 bytes
+File: /data/com.google.android.gm/shared_prefs/MailAppProvider.xml
+            ogle.android.gm Writes: 5 KB
+            Total Writes: 5 KB i_size: 4 KB
+File: /data/com.google.android.gm/shared_prefs/SmartreplyEvents-android.smoke.fast@gmail.com.xml
+            ogle.android.gm Writes: 0 KB
+            Total Writes: 0 KB i_size: 0 bytes
+File: /system/dropbox/drop52.tmp
+            Binder580_3 Writes: 0 KB
+            Total Writes: 0 KB i_size: 0 bytes
+File: /system/users/0/settings_secure.xml
+            SettingsProvide Writes: 12 KB
+            Total Writes: 12 KB i_size: 8 KB
+Grand Total File DATA KB Writes 143
+PID VIEW:
+PID: AsyncTask_#2
+            /data/com.google.android.gm/databases/EmailProvider.db Writes: 49 KB i_size: 8 KB
+            /data/com.google.android.gm/databases/EmailProvider.db-journal Writes: 25 KB i_size: 8 KB
+            /data/com.google.android.gm/databases/mailstore.android.smoke.fast@gmail.com.db-shm Writes: 0 KB i_size: 4 KB
+            /data/com.google.android.gm/databases/mailstore.android.smoke.fast@gmail.com.db-wal Writes: 4 KB i_size: 512 KB
+            Total Writes: 78 KB
+PID: Binder580_3
+            /system/dropbox/drop52.tmp Writes: 0 KB i_size: 0 bytes
+            Total Writes: 0 KB
+PID: lowpool[12]
+            /data/com.google.android.gms/databases/playlog.db-wal Writes: 16 KB i_size: 426 KB
+            Total Writes: 16 KB
+PID: ogle.android.gm
+            /data/com.google.android.gm/shared_prefs/MailAppProvider.xml Writes: 5 KB i_size: 4 KB
+            /data/com.google.android.gm/shared_prefs/SmartreplyEvents-android.smoke.fast@gmail.com.xml Writes: 0 KB i_size: 0 bytes
+            Total Writes: 5 KB
+PID: queued-work-loo
+            /data/com.google.android.gm/shared_prefs/G6yPrefs.xml Writes: 0 KB i_size: 0 bytes
+            Total Writes: 0 KB
+PID: SettingsProvide
+            /system/users/0/settings_secure.xml Writes: 12 KB i_size: 8 KB
+            Total Writes: 12 KB
+PID: SyncAdapterThre
+            /data/com.google.android.gm/databases/mailstore.android.smoke.fast@gmail.com.db-wal Writes: 32 KB i_size: 512 KB
+            Total Writes: 32 KB
+Grand Total File DATA KB Writes 143
+Total (ALL) Write KB mmcblk0 = 128
+WRITE DELTA: Total Blockdev Writes KB - Total File Data Writes KB = -15 KB
+Total (ALL) Write IOs mmcblk0 = 37
+Debug Grand Total KB WRITTEN 120
diff --git a/ioblame/ioblame-gmail-run.example b/ioblame/ioblame-gmail-run.example
new file mode 100644 (file)
index 0000000..72e2c67
--- /dev/null
@@ -0,0 +1,1593 @@
+adbd is already running as root
+Found aosp_gobo Device
+OK to kill sleep when test is done
+signal INT received, killing streaming trace capture
+
+READS :
+_______
+
+FILE VIEW:
+File: /
+            ogle.android.gm Reads: 4 KB
+            Total Reads: 4 KB i_size: 163840 KB
+File: /app/Chrome/Chrome.apk
+            Chrome_ChildIOT Reads: 96 KB
+            Chrome_DBThread Reads: 652 KB
+            Chrome_FileUser Reads: 72 KB
+            Chrome_InProcGp Reads: 732 KB
+            Chrome_IOThread Reads: 1396 KB
+            Compositor Reads: 652 KB
+            CookieMonsterBa Reads: 284 KB
+            CrRendererMain Reads: 17012 KB
+            dboxed_process0 Reads: 512 KB
+            JavaBridge Reads: 128 KB
+            ogle.android.gm Reads: 14996 KB
+            WorkerPool/8556 Reads: 408 KB
+            Total Reads: 36940 KB i_size: 71354 KB
+File: /app/Gmail2Light/Gmail2Light.apk
+            AsyncTask_#2 Reads: 24 KB
+            Chrome_IOThread Reads: 68 KB
+            ogle.android.gm Reads: 1440 KB
+            Thread-6 Reads: 8 KB
+            Total Reads: 1540 KB i_size: 9736 KB
+File: /bin/toybox
+            cat Reads: 304 KB
+            sh Reads: 16 KB
+            Total Reads: 320 KB i_size: 319 KB
+File: /data/com.google.android.gm/app_webview/GPUCache/index
+            Chrome_CacheThr Reads: 4 KB
+            Total Reads: 4 KB i_size: 24 bytes
+File: /data/com.google.android.gm/app_webview/metrics_guid
+            Chrome_FileThre Reads: 4 KB
+            Total Reads: 4 KB i_size: 36 bytes
+File: /data/com.google.android.gm/files/deviceName
+            AsyncTask_#3 Reads: 4 KB
+            Total Reads: 4 KB i_size: 17 bytes
+File: /data/com.google.android.gm/files/gaClientId
+            GAThread Reads: 4 KB
+            Total Reads: 4 KB i_size: 36 bytes
+File: /data/com.google.android.gm/shared_prefs/Account-android.smoke.fast@gmail.com.xml
+            SharedPreferenc Reads: 4 KB
+            Total Reads: 4 KB i_size: 2 KB
+File: /data/com.google.android.gm/shared_prefs/AndroidMail.Main.xml
+            SharedPreferenc Reads: 4 KB
+            Total Reads: 4 KB i_size: 206 bytes
+File: /data/com.google.android.gm/shared_prefs/c9edm_account-1303398453.xml
+            SharedPreferenc Reads: 4 KB
+            Total Reads: 4 KB i_size: 254 bytes
+File: /data/com.google.android.gm/shared_prefs/c9edm_account-2137146394.xml
+            SharedPreferenc Reads: 4 KB
+            Total Reads: 4 KB i_size: 167 bytes
+File: /data/com.google.android.gm/shared_prefs/Folder-android.smoke.fast@gmail.com-^sq_ig_i_personal.xml
+            SharedPreferenc Reads: 4 KB
+            Total Reads: 4 KB i_size: 402 bytes
+File: /data/com.google.android.gm/shared_prefs/G6yPrefs.xml
+            SharedPreferenc Reads: 4 KB
+            Total Reads: 4 KB i_size: 191 bytes
+File: /data/com.google.android.gm/shared_prefs/Gmail.xml
+            SharedPreferenc Reads: 4 KB
+            Total Reads: 4 KB i_size: 1 KB
+File: /data/com.google.android.gm/shared_prefs/_has_set_default_values.xml
+            SharedPreferenc Reads: 4 KB
+            Total Reads: 4 KB i_size: 130 bytes
+File: /data/com.google.android.gm/shared_prefs/Impressions-android.smoke.fast@gmail.com.xml
+            SharedPreferenc Reads: 4 KB
+            Total Reads: 4 KB i_size: 65 bytes
+File: /data/com.google.android.gm/shared_prefs/SmartreplyEvents-android.smoke.fast@gmail.com.xml
+            SharedPreferenc Reads: 4 KB
+            Total Reads: 4 KB i_size: 65 bytes
+File: /data/com.google.android.gm/shared_prefs/UnifiedEmail.xml
+            SharedPreferenc Reads: 4 KB
+            Total Reads: 4 KB i_size: 935 bytes
+File: /data/com.google.android.gm/shared_prefs/WebViewChromiumPrefs.xml
+            SharedPreferenc Reads: 4 KB
+            Total Reads: 4 KB i_size: 127 bytes
+File: /data/com.google.android.gsf/files/signatures/sig-281206196
+            Binder1550_5 Reads: 4 KB
+            Total Reads: 4 KB i_size: 1 KB
+File: /etc/fonts.xml
+            CrRendererMain Reads: 24 KB
+            Total Reads: 24 KB i_size: 22 KB
+File: /etc/hosts
+            netd Reads: 4 KB
+            Total Reads: 4 KB i_size: 56 bytes
+File: /etc/security/cacerts/7999be0d.0
+            NetworkCursor_F Reads: 8 KB
+            Total Reads: 8 KB i_size: 4 KB
+File: /fonts/CarroisGothicSC-Regular.ttf
+            CrRendererMain Reads: 40 KB
+            Total Reads: 40 KB i_size: 39 KB
+File: /fonts/ComingSoon.ttf
+            CrRendererMain Reads: 60 KB
+            Total Reads: 60 KB i_size: 57 KB
+File: /fonts/CutiveMono.ttf
+            CrRendererMain Reads: 68 KB
+            Total Reads: 68 KB i_size: 67 KB
+File: /fonts/DancingScript-Bold.ttf
+            CrRendererMain Reads: 116 KB
+            Total Reads: 116 KB i_size: 112 KB
+File: /fonts/DancingScript-Regular.ttf
+            CrRendererMain Reads: 116 KB
+            Total Reads: 116 KB i_size: 113 KB
+File: /fonts/DroidSansMono.ttf
+            CrRendererMain Reads: 108 KB
+            Total Reads: 108 KB i_size: 105 KB
+File: /fonts/NotoColorEmoji.ttf
+            CrRendererMain Reads: 204 KB
+            Total Reads: 204 KB i_size: 7108 KB
+File: /fonts/NotoNaskhArabic-Bold.ttf
+            CrRendererMain Reads: 116 KB
+            Total Reads: 116 KB i_size: 113 KB
+File: /fonts/NotoNaskhArabic-Regular.ttf
+            CrRendererMain Reads: 116 KB
+            Total Reads: 116 KB i_size: 113 KB
+File: /fonts/NotoNaskhArabicUI-Bold.ttf
+            CrRendererMain Reads: 120 KB
+            Total Reads: 120 KB i_size: 116 KB
+File: /fonts/NotoNaskhArabicUI-Regular.ttf
+            CrRendererMain Reads: 120 KB
+            Total Reads: 120 KB i_size: 117 KB
+File: /fonts/NotoSansAdlam-Regular.ttf
+            CrRendererMain Reads: 52 KB
+            Total Reads: 52 KB i_size: 49 KB
+File: /fonts/NotoSansArmenian-Bold.ttf
+            CrRendererMain Reads: 16 KB
+            Total Reads: 16 KB i_size: 15 KB
+File: /fonts/NotoSansArmenian-Regular.ttf
+            CrRendererMain Reads: 16 KB
+            Total Reads: 16 KB i_size: 15 KB
+File: /fonts/NotoSansAvestan-Regular.ttf
+            CrRendererMain Reads: 12 KB
+            Total Reads: 12 KB i_size: 11 KB
+File: /fonts/NotoSansBalinese-Regular.ttf
+            CrRendererMain Reads: 32 KB
+            Total Reads: 32 KB i_size: 31 KB
+File: /fonts/NotoSansBamum-Regular.ttf
+            CrRendererMain Reads: 132 KB
+            Total Reads: 132 KB i_size: 130 KB
+File: /fonts/NotoSansBatak-Regular.ttf
+            CrRendererMain Reads: 16 KB
+            Total Reads: 16 KB i_size: 12 KB
+File: /fonts/NotoSansBengali-Bold.ttf
+            CrRendererMain Reads: 100 KB
+            Total Reads: 100 KB i_size: 96 KB
+File: /fonts/NotoSansBengali-Regular.ttf
+            CrRendererMain Reads: 100 KB
+            Total Reads: 100 KB i_size: 99 KB
+File: /fonts/NotoSansBengaliUI-Bold.ttf
+            CrRendererMain Reads: 104 KB
+            Total Reads: 104 KB i_size: 101 KB
+File: /fonts/NotoSansBengaliUI-Regular.ttf
+            CrRendererMain Reads: 108 KB
+            Total Reads: 108 KB i_size: 104 KB
+File: /fonts/NotoSansBrahmi-Regular.ttf
+            CrRendererMain Reads: 24 KB
+            Total Reads: 24 KB i_size: 23 KB
+File: /fonts/NotoSansBuginese-Regular.ttf
+            CrRendererMain Reads: 8 KB
+            Total Reads: 8 KB i_size: 7 KB
+File: /fonts/NotoSansBuhid-Regular.ttf
+            CrRendererMain Reads: 8 KB
+            Total Reads: 8 KB i_size: 4 KB
+File: /fonts/NotoSansCanadianAboriginal-Regular.ttf
+            CrRendererMain Reads: 48 KB
+            Total Reads: 48 KB i_size: 45 KB
+File: /fonts/NotoSansCarian-Regular.ttf
+            CrRendererMain Reads: 8 KB
+            Total Reads: 8 KB i_size: 6 KB
+File: /fonts/NotoSansCham-Bold.ttf
+            CrRendererMain Reads: 24 KB
+            Total Reads: 24 KB i_size: 21 KB
+File: /fonts/NotoSansCham-Regular.ttf
+            CrRendererMain Reads: 24 KB
+            Total Reads: 24 KB i_size: 21 KB
+File: /fonts/NotoSansCherokee-Regular.ttf
+            CrRendererMain Reads: 60 KB
+            Total Reads: 60 KB i_size: 56 KB
+File: /fonts/NotoSansCJK-Regular.ttc
+            CrRendererMain Reads: 2380 KB
+            Total Reads: 2380 KB i_size: 18236 KB
+File: /fonts/NotoSansCoptic-Regular.ttf
+            CrRendererMain Reads: 24 KB
+            Total Reads: 24 KB i_size: 21 KB
+File: /fonts/NotoSansCuneiform-Regular.ttf
+            CrRendererMain Reads: 200 KB
+            Total Reads: 200 KB i_size: 488 KB
+File: /fonts/NotoSansCypriot-Regular.ttf
+            CrRendererMain Reads: 8 KB
+            Total Reads: 8 KB i_size: 7 KB
+File: /fonts/NotoSansDeseret-Regular.ttf
+            CrRendererMain Reads: 12 KB
+            Total Reads: 12 KB i_size: 10 KB
+File: /fonts/NotoSansDevanagari-Bold.ttf
+            CrRendererMain Reads: 128 KB
+            Total Reads: 128 KB i_size: 128 KB
+File: /fonts/NotoSansDevanagari-Regular.ttf
+            CrRendererMain Reads: 128 KB
+            Total Reads: 128 KB i_size: 132 KB
+File: /fonts/NotoSansDevanagariUI-Bold.ttf
+            CrRendererMain Reads: 120 KB
+            Total Reads: 120 KB i_size: 118 KB
+File: /fonts/NotoSansDevanagariUI-Regular.ttf
+            CrRendererMain Reads: 124 KB
+            Total Reads: 124 KB i_size: 122 KB
+File: /fonts/NotoSansEgyptianHieroglyphs-Regular.ttf
+            CrRendererMain Reads: 200 KB
+            Total Reads: 200 KB i_size: 493 KB
+File: /fonts/NotoSansEthiopic-Bold.ttf
+            CrRendererMain Reads: 128 KB
+            Total Reads: 128 KB i_size: 140 KB
+File: /fonts/NotoSansEthiopic-Regular.ttf
+            CrRendererMain Reads: 128 KB
+            Total Reads: 128 KB i_size: 139 KB
+File: /fonts/NotoSansGeorgian-Bold.ttf
+            CrRendererMain Reads: 20 KB
+            Total Reads: 20 KB i_size: 19 KB
+File: /fonts/NotoSansGeorgian-Regular.ttf
+            CrRendererMain Reads: 20 KB
+            Total Reads: 20 KB i_size: 19 KB
+File: /fonts/NotoSansGlagolitic-Regular.ttf
+            CrRendererMain Reads: 16 KB
+            Total Reads: 16 KB i_size: 15 KB
+File: /fonts/NotoSansGothic-Regular.ttf
+            CrRendererMain Reads: 8 KB
+            Total Reads: 8 KB i_size: 5 KB
+File: /fonts/NotoSansGujarati-Bold.ttf
+            CrRendererMain Reads: 116 KB
+            Total Reads: 116 KB i_size: 114 KB
+File: /fonts/NotoSansGujarati-Regular.ttf
+            CrRendererMain Reads: 120 KB
+            Total Reads: 120 KB i_size: 117 KB
+File: /fonts/NotoSansGujaratiUI-Bold.ttf
+            CrRendererMain Reads: 112 KB
+            Total Reads: 112 KB i_size: 111 KB
+File: /fonts/NotoSansGujaratiUI-Regular.ttf
+            CrRendererMain Reads: 116 KB
+            Total Reads: 116 KB i_size: 114 KB
+File: /fonts/NotoSansGurmukhi-Bold.ttf
+            CrRendererMain Reads: 32 KB
+            Total Reads: 32 KB i_size: 30 KB
+File: /fonts/NotoSansGurmukhi-Regular.ttf
+            CrRendererMain Reads: 32 KB
+            Total Reads: 32 KB i_size: 31 KB
+File: /fonts/NotoSansGurmukhiUI-Bold.ttf
+            CrRendererMain Reads: 32 KB
+            Total Reads: 32 KB i_size: 31 KB
+File: /fonts/NotoSansGurmukhiUI-Regular.ttf
+            CrRendererMain Reads: 32 KB
+            Total Reads: 32 KB i_size: 31 KB
+File: /fonts/NotoSansHanunoo-Regular.ttf
+            CrRendererMain Reads: 8 KB
+            Total Reads: 8 KB i_size: 6 KB
+File: /fonts/NotoSansHebrew-Bold.ttf
+            CrRendererMain Reads: 20 KB
+            Total Reads: 20 KB i_size: 17 KB
+File: /fonts/NotoSansHebrew-Regular.ttf
+            CrRendererMain Reads: 20 KB
+            Total Reads: 20 KB i_size: 16 KB
+File: /fonts/NotoSansImperialAramaic-Regular.ttf
+            CrRendererMain Reads: 8 KB
+            Total Reads: 8 KB i_size: 5 KB
+File: /fonts/NotoSansInscriptionalPahlavi-Regular.ttf
+            CrRendererMain Reads: 8 KB
+            Total Reads: 8 KB i_size: 5 KB
+File: /fonts/NotoSansInscriptionalParthian-Regular.ttf
+            CrRendererMain Reads: 8 KB
+            Total Reads: 8 KB i_size: 7 KB
+File: /fonts/NotoSansJavanese-Regular.ttf
+            CrRendererMain Reads: 40 KB
+            Total Reads: 40 KB i_size: 36 KB
+File: /fonts/NotoSansKaithi-Regular.ttf
+            CrRendererMain Reads: 60 KB
+            Total Reads: 60 KB i_size: 58 KB
+File: /fonts/NotoSansKannada-Bold.ttf
+            CrRendererMain Reads: 80 KB
+            Total Reads: 80 KB i_size: 78 KB
+File: /fonts/NotoSansKannada-Regular.ttf
+            CrRendererMain Reads: 84 KB
+            Total Reads: 84 KB i_size: 80 KB
+File: /fonts/NotoSansKannadaUI-Bold.ttf
+            CrRendererMain Reads: 80 KB
+            Total Reads: 80 KB i_size: 77 KB
+File: /fonts/NotoSansKannadaUI-Regular.ttf
+            CrRendererMain Reads: 80 KB
+            Total Reads: 80 KB i_size: 79 KB
+File: /fonts/NotoSansKayahLi-Regular.ttf
+            CrRendererMain Reads: 8 KB
+            Total Reads: 8 KB i_size: 7 KB
+File: /fonts/NotoSansKharoshthi-Regular.ttf
+            CrRendererMain Reads: 24 KB
+            Total Reads: 24 KB i_size: 21 KB
+File: /fonts/NotoSansKhmerUI-Bold.ttf
+            CrRendererMain Reads: 36 KB
+            Total Reads: 36 KB i_size: 35 KB
+File: /fonts/NotoSansKhmerUI-Regular.ttf
+            CrRendererMain Reads: 40 KB
+            Total Reads: 40 KB i_size: 37 KB
+File: /fonts/NotoSansKhmer-VF.ttf
+            CrRendererMain Reads: 128 KB
+            Total Reads: 128 KB i_size: 140 KB
+File: /fonts/NotoSansLao-Bold.ttf
+            CrRendererMain Reads: 32 KB
+            Total Reads: 32 KB i_size: 28 KB
+File: /fonts/NotoSansLao-Regular.ttf
+            CrRendererMain Reads: 32 KB
+            Total Reads: 32 KB i_size: 29 KB
+File: /fonts/NotoSansLaoUI-Bold.ttf
+            CrRendererMain Reads: 32 KB
+            Total Reads: 32 KB i_size: 28 KB
+File: /fonts/NotoSansLaoUI-Regular.ttf
+            CrRendererMain Reads: 32 KB
+            Total Reads: 32 KB i_size: 29 KB
+File: /fonts/NotoSansLepcha-Regular.ttf
+            CrRendererMain Reads: 100 KB
+            Total Reads: 100 KB i_size: 99 KB
+File: /fonts/NotoSansLimbu-Regular.ttf
+            CrRendererMain Reads: 12 KB
+            Total Reads: 12 KB i_size: 10 KB
+File: /fonts/NotoSansLinearB-Regular.ttf
+            CrRendererMain Reads: 60 KB
+            Total Reads: 60 KB i_size: 56 KB
+File: /fonts/NotoSansLisu-Regular.ttf
+            CrRendererMain Reads: 8 KB
+            Total Reads: 8 KB i_size: 5 KB
+File: /fonts/NotoSansLycian-Regular.ttf
+            CrRendererMain Reads: 8 KB
+            Total Reads: 8 KB i_size: 4 KB
+File: /fonts/NotoSansLydian-Regular.ttf
+            CrRendererMain Reads: 8 KB
+            Total Reads: 8 KB i_size: 4 KB
+File: /fonts/NotoSansMalayalam-Bold.ttf
+            CrRendererMain Reads: 56 KB
+            Total Reads: 56 KB i_size: 55 KB
+File: /fonts/NotoSansMalayalam-Regular.ttf
+            CrRendererMain Reads: 56 KB
+            Total Reads: 56 KB i_size: 55 KB
+File: /fonts/NotoSansMalayalamUI-Bold.ttf
+            CrRendererMain Reads: 56 KB
+            Total Reads: 56 KB i_size: 55 KB
+File: /fonts/NotoSansMalayalamUI-Regular.ttf
+            CrRendererMain Reads: 56 KB
+            Total Reads: 56 KB i_size: 55 KB
+File: /fonts/NotoSansMandaic-Regular.ttf
+            CrRendererMain Reads: 16 KB
+            Total Reads: 16 KB i_size: 14 KB
+File: /fonts/NotoSansMeeteiMayek-Regular.ttf
+            CrRendererMain Reads: 16 KB
+            Total Reads: 16 KB i_size: 13 KB
+File: /fonts/NotoSansMongolian-Regular.ttf
+            CrRendererMain Reads: 112 KB
+            Total Reads: 112 KB i_size: 110 KB
+File: /fonts/NotoSansMyanmar-Bold.ttf
+            CrRendererMain Reads: 108 KB
+            Total Reads: 108 KB i_size: 106 KB
+File: /fonts/NotoSansMyanmar-Regular.ttf
+            CrRendererMain Reads: 108 KB
+            Total Reads: 108 KB i_size: 105 KB
+File: /fonts/NotoSansMyanmarUI-Bold.ttf
+            CrRendererMain Reads: 104 KB
+            Total Reads: 104 KB i_size: 102 KB
+File: /fonts/NotoSansMyanmarUI-Regular.ttf
+            CrRendererMain Reads: 104 KB
+            Total Reads: 104 KB i_size: 100 KB
+File: /fonts/NotoSansNewTaiLue-Regular.ttf
+            CrRendererMain Reads: 16 KB
+            Total Reads: 16 KB i_size: 14 KB
+File: /fonts/NotoSansNKo-Regular.ttf
+            CrRendererMain Reads: 20 KB
+            Total Reads: 20 KB i_size: 18 KB
+File: /fonts/NotoSansOgham-Regular.ttf
+            CrRendererMain Reads: 8 KB
+            Total Reads: 8 KB i_size: 4 KB
+File: /fonts/NotoSansOlChiki-Regular.ttf
+            CrRendererMain Reads: 8 KB
+            Total Reads: 8 KB i_size: 7 KB
+File: /fonts/NotoSansOldItalic-Regular.ttf
+            CrRendererMain Reads: 8 KB
+            Total Reads: 8 KB i_size: 4 KB
+File: /fonts/NotoSansOldPersian-Regular.ttf
+            CrRendererMain Reads: 16 KB
+            Total Reads: 16 KB i_size: 12 KB
+File: /fonts/NotoSansOldSouthArabian-Regular.ttf
+            CrRendererMain Reads: 8 KB
+            Total Reads: 8 KB i_size: 4 KB
+File: /fonts/NotoSansOldTurkic-Regular.ttf
+            CrRendererMain Reads: 8 KB
+            Total Reads: 8 KB i_size: 7 KB
+File: /fonts/NotoSansOriya-Bold.ttf
+            CrRendererMain Reads: 84 KB
+            Total Reads: 84 KB i_size: 82 KB
+File: /fonts/NotoSansOriya-Regular.ttf
+            CrRendererMain Reads: 84 KB
+            Total Reads: 84 KB i_size: 83 KB
+File: /fonts/NotoSansOriyaUI-Bold.ttf
+            CrRendererMain Reads: 80 KB
+            Total Reads: 80 KB i_size: 78 KB
+File: /fonts/NotoSansOriyaUI-Regular.ttf
+            CrRendererMain Reads: 80 KB
+            Total Reads: 80 KB i_size: 78 KB
+File: /fonts/NotoSansOsmanya-Regular.ttf
+            CrRendererMain Reads: 8 KB
+            Total Reads: 8 KB i_size: 7 KB
+File: /fonts/NotoSansPhagsPa-Regular.ttf
+            CrRendererMain Reads: 28 KB
+            Total Reads: 28 KB i_size: 27 KB
+File: /fonts/NotoSansPhoenician-Regular.ttf
+            CrRendererMain Reads: 8 KB
+            Total Reads: 8 KB i_size: 5 KB
+File: /fonts/NotoSansRejang-Regular.ttf
+            CrRendererMain Reads: 8 KB
+            Total Reads: 8 KB i_size: 6 KB
+File: /fonts/NotoSansRunic-Regular.ttf
+            CrRendererMain Reads: 12 KB
+            Total Reads: 12 KB i_size: 8 KB
+File: /fonts/NotoSansSamaritan-Regular.ttf
+            CrRendererMain Reads: 12 KB
+            Total Reads: 12 KB i_size: 9 KB
+File: /fonts/NotoSansSaurashtra-Regular.ttf
+            CrRendererMain Reads: 20 KB
+            Total Reads: 20 KB i_size: 18 KB
+File: /fonts/NotoSansShavian-Regular.ttf
+            CrRendererMain Reads: 8 KB
+            Total Reads: 8 KB i_size: 5 KB
+File: /fonts/NotoSansSinhala-Bold.ttf
+            CrRendererMain Reads: 152 KB
+            Total Reads: 152 KB i_size: 149 KB
+File: /fonts/NotoSansSinhala-Regular.ttf
+            CrRendererMain Reads: 160 KB
+            Total Reads: 160 KB i_size: 156 KB
+File: /fonts/NotoSansSundanese-Regular.ttf
+            CrRendererMain Reads: 12 KB
+            Total Reads: 12 KB i_size: 10 KB
+File: /fonts/NotoSansSylotiNagri-Regular.ttf
+            CrRendererMain Reads: 16 KB
+            Total Reads: 16 KB i_size: 14 KB
+File: /fonts/NotoSansSymbols-Regular-Subsetted2.ttf
+            CrRendererMain Reads: 36 KB
+            Total Reads: 36 KB i_size: 32 KB
+File: /fonts/NotoSansSymbols-Regular-Subsetted.ttf
+            CrRendererMain Reads: 208 KB
+            Total Reads: 208 KB i_size: 692 KB
+File: /fonts/NotoSansSyriacEastern-Regular.ttf
+            CrRendererMain Reads: 52 KB
+            Total Reads: 52 KB i_size: 48 KB
+File: /fonts/NotoSansSyriacEstrangela-Regular.ttf
+            CrRendererMain Reads: 48 KB
+            Total Reads: 48 KB i_size: 45 KB
+File: /fonts/NotoSansSyriacWestern-Regular.ttf
+            CrRendererMain Reads: 52 KB
+            Total Reads: 52 KB i_size: 51 KB
+File: /fonts/NotoSansTagalog-Regular.ttf
+            CrRendererMain Reads: 8 KB
+            Total Reads: 8 KB i_size: 5 KB
+File: /fonts/NotoSansTagbanwa-Regular.ttf
+            CrRendererMain Reads: 8 KB
+            Total Reads: 8 KB i_size: 5 KB
+File: /fonts/NotoSansTaiLe-Regular.ttf
+            CrRendererMain Reads: 12 KB
+            Total Reads: 12 KB i_size: 9 KB
+File: /fonts/NotoSansTaiTham-Regular.ttf
+            CrRendererMain Reads: 48 KB
+            Total Reads: 48 KB i_size: 46 KB
+File: /fonts/NotoSansTaiViet-Regular.ttf
+            CrRendererMain Reads: 16 KB
+            Total Reads: 16 KB i_size: 15 KB
+File: /fonts/NotoSansTamil-Bold.ttf
+            CrRendererMain Reads: 36 KB
+            Total Reads: 36 KB i_size: 33 KB
+File: /fonts/NotoSansTamil-Regular.ttf
+            CrRendererMain Reads: 36 KB
+            Total Reads: 36 KB i_size: 33 KB
+File: /fonts/NotoSansTamilUI-Bold.ttf
+            CrRendererMain Reads: 36 KB
+            Total Reads: 36 KB i_size: 33 KB
+File: /fonts/NotoSansTamilUI-Regular.ttf
+            CrRendererMain Reads: 36 KB
+            Total Reads: 36 KB i_size: 33 KB
+File: /fonts/NotoSansTelugu-Bold.ttf
+            CrRendererMain Reads: 108 KB
+            Total Reads: 108 KB i_size: 107 KB
+File: /fonts/NotoSansTelugu-Regular.ttf
+            CrRendererMain Reads: 112 KB
+            Total Reads: 112 KB i_size: 108 KB
+File: /fonts/NotoSansTeluguUI-Bold.ttf
+            CrRendererMain Reads: 112 KB
+            Total Reads: 112 KB i_size: 109 KB
+File: /fonts/NotoSansTeluguUI-Regular.ttf
+            CrRendererMain Reads: 112 KB
+            Total Reads: 112 KB i_size: 109 KB
+File: /fonts/NotoSansThaana-Bold.ttf
+            CrRendererMain Reads: 16 KB
+            Total Reads: 16 KB i_size: 14 KB
+File: /fonts/NotoSansThaana-Regular.ttf
+            CrRendererMain Reads: 16 KB
+            Total Reads: 16 KB i_size: 14 KB
+File: /fonts/NotoSansThai-Bold.ttf
+            CrRendererMain Reads: 20 KB
+            Total Reads: 20 KB i_size: 17 KB
+File: /fonts/NotoSansThai-Regular.ttf
+            CrRendererMain Reads: 24 KB
+            Total Reads: 24 KB i_size: 20 KB
+File: /fonts/NotoSansThaiUI-Bold.ttf
+            CrRendererMain Reads: 20 KB
+            Total Reads: 20 KB i_size: 18 KB
+File: /fonts/NotoSansThaiUI-Regular.ttf
+            CrRendererMain Reads: 24 KB
+            Total Reads: 24 KB i_size: 21 KB
+File: /fonts/NotoSansTibetan-Bold.ttf
+            CrRendererMain Reads: 244 KB
+            Total Reads: 244 KB i_size: 364 KB
+File: /fonts/NotoSansTibetan-Regular.ttf
+            CrRendererMain Reads: 252 KB
+            Total Reads: 252 KB i_size: 392 KB
+File: /fonts/NotoSansTifinagh-Regular.ttf
+            CrRendererMain Reads: 16 KB
+            Total Reads: 16 KB i_size: 13 KB
+File: /fonts/NotoSansUgaritic-Regular.ttf
+            CrRendererMain Reads: 8 KB
+            Total Reads: 8 KB i_size: 6 KB
+File: /fonts/NotoSansVai-Regular.ttf
+            CrRendererMain Reads: 64 KB
+            Total Reads: 64 KB i_size: 62 KB
+File: /fonts/NotoSansYi-Regular.ttf
+            CrRendererMain Reads: 124 KB
+            Total Reads: 124 KB i_size: 120 KB
+File: /fonts/NotoSerif-BoldItalic.ttf
+            CrRendererMain Reads: 248 KB
+            Total Reads: 248 KB i_size: 256 KB
+File: /fonts/NotoSerif-Bold.ttf
+            CrRendererMain Reads: 244 KB
+            Total Reads: 244 KB i_size: 242 KB
+File: /fonts/NotoSerif-Italic.ttf
+            CrRendererMain Reads: 244 KB
+            Total Reads: 244 KB i_size: 243 KB
+File: /fonts/NotoSerif-Regular.ttf
+            CrRendererMain Reads: 244 KB
+            Total Reads: 244 KB i_size: 240 KB
+File: /fonts/Roboto-BlackItalic.ttf
+            CrRendererMain Reads: 256 KB
+            Total Reads: 256 KB i_size: 322 KB
+File: /fonts/Roboto-Black.ttf
+            CrRendererMain Reads: 256 KB
+            Total Reads: 256 KB i_size: 299 KB
+File: /fonts/Roboto-BoldItalic.ttf
+            CrRendererMain Reads: 256 KB
+            Total Reads: 256 KB i_size: 324 KB
+File: /fonts/Roboto-Bold.ttf
+            ogle.android.gm Reads: 276 KB
+            Total Reads: 276 KB i_size: 299 KB
+File: /fonts/RobotoCondensed-BoldItalic.ttf
+            CrRendererMain Reads: 256 KB
+            Total Reads: 256 KB i_size: 322 KB
+File: /fonts/RobotoCondensed-Bold.ttf
+            CrRendererMain Reads: 256 KB
+            Total Reads: 256 KB i_size: 296 KB
+File: /fonts/RobotoCondensed-Italic.ttf
+            CrRendererMain Reads: 256 KB
+            Total Reads: 256 KB i_size: 321 KB
+File: /fonts/RobotoCondensed-LightItalic.ttf
+            CrRendererMain Reads: 256 KB
+            Total Reads: 256 KB i_size: 324 KB
+File: /fonts/RobotoCondensed-Light.ttf
+            CrRendererMain Reads: 256 KB
+            Total Reads: 256 KB i_size: 295 KB
+File: /fonts/RobotoCondensed-MediumItalic.ttf
+            CrRendererMain Reads: 256 KB
+            Total Reads: 256 KB i_size: 322 KB
+File: /fonts/RobotoCondensed-Medium.ttf
+            CrRendererMain Reads: 256 KB
+            Total Reads: 256 KB i_size: 296 KB
+File: /fonts/Roboto-LightItalic.ttf
+            CrRendererMain Reads: 256 KB
+            Total Reads: 256 KB i_size: 324 KB
+File: /fonts/Roboto-Light.ttf
+            ogle.android.gm Reads: 164 KB
+            Total Reads: 164 KB i_size: 299 KB
+File: /fonts/Roboto-MediumItalic.ttf
+            CrRendererMain Reads: 256 KB
+            Total Reads: 256 KB i_size: 323 KB
+File: /fonts/Roboto-Medium.ttf
+            ogle.android.gm Reads: 176 KB
+            Total Reads: 176 KB i_size: 299 KB
+File: /fonts/Roboto-Regular.ttf
+            CrRendererMain Reads: 88 KB
+            ogle.android.gm Reads: 88 KB
+            Total Reads: 176 KB i_size: 298 KB
+File: /fonts/Roboto-ThinItalic.ttf
+            CrRendererMain Reads: 256 KB
+            Total Reads: 256 KB i_size: 321 KB
+File: /fonts/Roboto-Thin.ttf
+            CrRendererMain Reads: 256 KB
+            Total Reads: 256 KB i_size: 300 KB
+File: /framework/android.hidl.base-V1.0-java.jar
+            dboxed_process0 Reads: 8 KB
+            Total Reads: 8 KB i_size: 6 KB
+File: /framework/android.hidl.manager-V1.0-java.jar
+            dboxed_process0 Reads: 12 KB
+            Total Reads: 12 KB i_size: 9 KB
+File: /framework/apache-xml.jar
+            dboxed_process0 Reads: 20 KB
+            Total Reads: 20 KB i_size: 542 KB
+File: /framework/arm/boot-android.hidl.base-V1.0-java.vdex
+            ogle.android.gm Reads: 12 KB
+            Total Reads: 12 KB i_size: 11 KB
+File: /framework/arm/boot.art
+            ogle.android.gm Reads: 16 KB
+            Total Reads: 16 KB i_size: 1956 KB
+File: /framework/arm/boot-conscrypt.vdex
+            dboxed_process0 Reads: 80 KB
+            Total Reads: 80 KB i_size: 374 KB
+File: /framework/arm/boot-core-libart.oat
+            Jit_thread_pool Reads: 28 KB
+            ogle.android.gm Reads: 1136 KB
+            Total Reads: 1164 KB i_size: 3076 KB
+File: /framework/arm/boot-core-libart.vdex
+            Jit_thread_pool Reads: 80 KB
+            ogle.android.gm Reads: 1332 KB
+            Total Reads: 1412 KB i_size: 3080 KB
+File: /framework/arm/boot-ext.oat
+            AsyncTask_#1 Reads: 156 KB
+            Total Reads: 156 KB i_size: 306 KB
+File: /framework/arm/boot-ext.vdex
+            AsyncTask_#1 Reads: 396 KB
+            Total Reads: 396 KB i_size: 1056 KB
+File: /framework/arm/boot-framework.oat
+            AsyncTask_#2 Reads: 116 KB
+            Binder8493_1 Reads: 24 KB
+            Chrome_InProcGp Reads: 196 KB
+            dboxed_process0 Reads: 280 KB
+            droid.launcher3 Reads: 112 KB
+            HeapTaskDaemon Reads: 132 KB
+            Jit_thread_pool Reads: 48 KB
+            NetworkCursor_F Reads: 164 KB
+            ogle.android.gm Reads: 2732 KB
+            Thread-9 Reads: 72 KB
+            Total Reads: 3876 KB i_size: 21357 KB
+File: /framework/arm/boot-framework.vdex
+            AsyncTask_#2 Reads: 40 KB
+            Binder8493_1 Reads: 72 KB
+            Chrome_InProcGp Reads: 300 KB
+            dboxed_process0 Reads: 24 KB
+            droid.launcher3 Reads: 116 KB
+            EGL_Init Reads: 116 KB
+            Jit_thread_pool Reads: 692 KB
+            NetworkCursor_F Reads: 208 KB
+            ogle.android.gm Reads: 2760 KB
+            Thread-9 Reads: 96 KB
+            Total Reads: 4424 KB i_size: 19304 KB
+File: /framework/arm/boot.oat
+            AsyncTask_#1 Reads: 104 KB
+            Chrome_InProcGp Reads: 12 KB
+            Chrome_IOThread Reads: 44 KB
+            dboxed_process0 Reads: 160 KB
+            GAThread Reads: 32 KB
+            NetworkCursor_F Reads: 44 KB
+            ogle.android.gm Reads: 320 KB
+            Thread-4 Reads: 96 KB
+            Total Reads: 812 KB i_size: 7511 KB
+File: /framework/arm/boot-okhttp.oat
+            ogle.android.gm Reads: 108 KB
+            Total Reads: 108 KB i_size: 545 KB
+File: /framework/arm/boot-okhttp.vdex
+            ogle.android.gm Reads: 244 KB
+            Total Reads: 244 KB i_size: 412 KB
+File: /framework/arm/boot-org.apache.http.legacy.boot.oat
+            NetworkCursor_F Reads: 280 KB
+            Total Reads: 280 KB i_size: 576 KB
+File: /framework/arm/boot-org.apache.http.legacy.boot.vdex
+            AsyncTask_#1 Reads: 88 KB
+            NetworkCursor_F Reads: 72 KB
+            Total Reads: 160 KB i_size: 509 KB
+File: /framework/arm/boot.vdex
+            AsyncTask_#1 Reads: 60 KB
+            dboxed_process0 Reads: 392 KB
+            Jit_thread_pool Reads: 356 KB
+            Total Reads: 808 KB i_size: 5144 KB
+File: /framework/bouncycastle.jar
+            dboxed_process0 Reads: 20 KB
+            Total Reads: 20 KB i_size: 531 KB
+File: /framework/com.android.location.provider.jar
+            AsyncTask_#3 Reads: 16 KB
+            Total Reads: 16 KB i_size: 12 KB
+File: /framework/com.android.media.remotedisplay.jar
+            AsyncTask_#3 Reads: 8 KB
+            Total Reads: 8 KB i_size: 4 KB
+File: /framework/conscrypt.jar
+            dboxed_process0 Reads: 20 KB
+            Total Reads: 20 KB i_size: 153 KB
+File: /framework/core-libart.jar
+            dboxed_process0 Reads: 20 KB
+            Total Reads: 20 KB i_size: 1363 KB
+File: /framework/core-oj.jar
+            dboxed_process0 Reads: 24 KB
+            Total Reads: 24 KB i_size: 2214 KB
+File: /framework/ext.jar
+            dboxed_process0 Reads: 192 KB
+            Total Reads: 192 KB i_size: 2142 KB
+File: /framework/framework.jar
+            dboxed_process0 Reads: 20 KB
+            Total Reads: 20 KB i_size: 7342 KB
+File: /framework/framework-res.apk
+            android.anim Reads: 16 KB
+            dboxed_process0 Reads: 496 KB
+            ogle.android.gm Reads: 720 KB
+            Total Reads: 1232 KB i_size: 18923 KB
+File: /framework/ims-common.jar
+            dboxed_process0 Reads: 20 KB
+            Total Reads: 20 KB i_size: 46 KB
+File: /framework/legacy-test.jar
+            dboxed_process0 Reads: 20 KB
+            Total Reads: 20 KB i_size: 16 KB
+File: /framework/oat/arm/com.android.location.provider.odex
+            AsyncTask_#3 Reads: 12 KB
+            Total Reads: 12 KB i_size: 20 KB
+File: /framework/oat/arm/com.android.media.remotedisplay.odex
+            AsyncTask_#3 Reads: 12 KB
+            Total Reads: 12 KB i_size: 20 KB
+File: /framework/okhttp.jar
+            dboxed_process0 Reads: 20 KB
+            Total Reads: 20 KB i_size: 180 KB
+File: /framework/org.apache.http.legacy.boot.jar
+            dboxed_process0 Reads: 20 KB
+            Total Reads: 20 KB i_size: 213 KB
+File: /framework/telephony-common.jar
+            dboxed_process0 Reads: 20 KB
+            Total Reads: 20 KB i_size: 938 KB
+File: /framework/voip-common.jar
+            dboxed_process0 Reads: 20 KB
+            Total Reads: 20 KB i_size: 66 KB
+File: /lib/android.hardware.configstore@1.0.so
+            dboxed_process0 Reads: 112 KB
+            Total Reads: 112 KB i_size: 132 KB
+File: /lib/android.hardware.graphics.bufferqueue@1.0.so
+            dboxed_process0 Reads: 128 KB
+            Total Reads: 128 KB i_size: 223 KB
+File: /lib/android.hardware.renderscript@1.0.so
+            dboxed_process0 Reads: 124 KB
+            Total Reads: 124 KB i_size: 332 KB
+File: /lib/android.hidl.token@1.0.so
+            dboxed_process0 Reads: 80 KB
+            Total Reads: 80 KB i_size: 99 KB
+File: /lib/android.hidl.token@1.0-utils.so
+            dboxed_process0 Reads: 20 KB
+            Total Reads: 20 KB i_size: 20 KB
+File: /lib/egl/libGLES_mali.so
+            Chrome_InProcGp Reads: 220 KB
+            Total Reads: 220 KB i_size: 4454 KB
+File: /lib/hw/gralloc.mt6737m.so
+            ogle.android.gm Reads: 12 KB
+            Total Reads: 12 KB i_size: 40 KB
+File: /lib/libaaudio.so
+            dboxed_process0 Reads: 88 KB
+            Total Reads: 88 KB i_size: 115 KB
+File: /lib/libandroid_runtime.so
+            dboxed_process0 Reads: 88 KB
+            pool-3-thread-1 Reads: 4 KB
+            Total Reads: 92 KB i_size: 1451 KB
+File: /lib/libandroid.so
+            ogle.android.gm Reads: 84 KB
+            Total Reads: 84 KB i_size: 95 KB
+File: /lib/libart-compiler.so
+            Jit_thread_pool Reads: 128 KB
+            Total Reads: 128 KB i_size: 1975 KB
+File: /lib/libart-dexlayout.so
+            dboxed_process0 Reads: 120 KB
+            Total Reads: 120 KB i_size: 155 KB
+File: /lib/libart.so
+            dboxed_process0 Reads: 52 KB
+            ogle.android.gm Reads: 76 KB
+            Total Reads: 128 KB i_size: 5602 KB
+File: /lib/libcamera2ndk.so
+            dboxed_process0 Reads: 92 KB
+            Total Reads: 92 KB i_size: 94 KB
+File: /lib/libcamera_client.so
+            dboxed_process0 Reads: 120 KB
+            Total Reads: 120 KB i_size: 231 KB
+File: /lib/libcrypto.so
+            cat Reads: 112 KB
+            Total Reads: 112 KB i_size: 689 KB
+File: /lib/libdng_sdk.so
+            dboxed_process0 Reads: 356 KB
+            Total Reads: 356 KB i_size: 549 KB
+File: /lib/libdrmframework.so
+            dboxed_process0 Reads: 84 KB
+            Total Reads: 84 KB i_size: 102 KB
+File: /lib/libft2.so
+            CrRendererMain Reads: 56 KB
+            Total Reads: 56 KB i_size: 479 KB
+File: /lib/libGLESv2.so
+            ogle.android.gm Reads: 28 KB
+            Total Reads: 28 KB i_size: 68 KB
+File: /lib/libicuuc.so
+            CrRendererMain Reads: 88 KB
+            dboxed_process0 Reads: 76 KB
+            Total Reads: 164 KB i_size: 1182 KB
+File: /lib/libimg_utils.so
+            dboxed_process0 Reads: 60 KB
+            Total Reads: 60 KB i_size: 66 KB
+File: /lib/liblzma.so
+            Chrome_InProcGp Reads: 88 KB
+            Total Reads: 88 KB i_size: 93 KB
+File: /lib/libmedia_jni.so
+            Chrome_InProcGp Reads: 72 KB
+            dboxed_process0 Reads: 96 KB
+            Total Reads: 168 KB i_size: 299 KB
+File: /lib/libmedia.so
+            dboxed_process0 Reads: 88 KB
+            Total Reads: 88 KB i_size: 496 KB
+File: /lib/libmediautils.so
+            dboxed_process0 Reads: 36 KB
+            Total Reads: 36 KB i_size: 53 KB
+File: /lib/libmemunreachable.so
+            dboxed_process0 Reads: 84 KB
+            Total Reads: 84 KB i_size: 120 KB
+File: /lib/libmtp.so
+            dboxed_process0 Reads: 116 KB
+            Total Reads: 116 KB i_size: 122 KB
+File: /lib/libpackagelistparser.so
+            cat Reads: 8 KB
+            Total Reads: 8 KB i_size: 15 KB
+File: /lib/libpcre2.so
+            cat Reads: 48 KB
+            Total Reads: 48 KB i_size: 92 KB
+File: /lib/libprotobuf-cpp-lite.so
+            dboxed_process0 Reads: 88 KB
+            Total Reads: 88 KB i_size: 197 KB
+File: /lib/libradio.so
+            dboxed_process0 Reads: 36 KB
+            Total Reads: 36 KB i_size: 53 KB
+File: /lib/libRS.so
+            dboxed_process0 Reads: 40 KB
+            Total Reads: 40 KB i_size: 59 KB
+File: /lib/libselinux.so
+            cat Reads: 12 KB
+            Total Reads: 12 KB i_size: 75 KB
+File: /lib/libskia.so
+            ogle.android.gm Reads: 316 KB
+            Total Reads: 316 KB i_size: 5578 KB
+File: /lib/libstagefright.so
+            dboxed_process0 Reads: 244 KB
+            Total Reads: 244 KB i_size: 1487 KB
+File: /lib/libvintf.so
+            dboxed_process0 Reads: 96 KB
+            Total Reads: 96 KB i_size: 187 KB
+File: /lib/libvulkan.so
+            dboxed_process0 Reads: 80 KB
+            Total Reads: 80 KB i_size: 98 KB
+File: /lib/libwebviewchromium_loader.so
+            ogle.android.gm Reads: 12 KB
+            Total Reads: 12 KB i_size: 15 KB
+File: /lib/libwebviewchromium_plat_support.so
+            ogle.android.gm Reads: 16 KB
+            Total Reads: 16 KB i_size: 20 KB
+File: /lib/libwilhelm.so
+            dboxed_process0 Reads: 120 KB
+            Total Reads: 120 KB i_size: 199 KB
+File: /lib/libz.so
+            cat Reads: 20 KB
+            Total Reads: 20 KB i_size: 95 KB
+File: /misc/keychain/pubkey_blacklist.txt
+            NetworkCursor_F Reads: 4 KB
+            Total Reads: 4 KB i_size: 819 bytes
+File: /misc/keychain/serial_blacklist.txt
+            NetworkCursor_F Reads: 4 KB
+            Total Reads: 4 KB i_size: 0 bytes
+File: /priv-app/GmsCore/GmsCore.apk
+            AsyncTask_#3 Reads: 148 KB
+            Total Reads: 148 KB i_size: 37870 KB
+File: /priv-app/Launcher3/oat/arm/Launcher3.vdex
+            Jit_thread_pool Reads: 100 KB
+            Total Reads: 100 KB i_size: 1609 KB
+File: /resource-cache/overlays.list
+            dboxed_process0 Reads: 4 KB
+            Total Reads: 4 KB i_size: 0 bytes
+File: /user/0
+            ogle.android.gm Reads: 4 KB
+            Total Reads: 4 KB i_size: 10 bytes
+File: /usr/hyphen-data/hyph-en-us.hyb
+            ogle.android.gm Reads: 20 KB
+            Total Reads: 20 KB i_size: 58 KB
+File: /usr/icu/icudt58l.dat
+            ogle.android.gm Reads: 1400 KB
+            Total Reads: 1400 KB i_size: 22774 KB
+File: /usr/share/zoneinfo/tzdata
+            ChildProcessMai Reads: 112 KB
+            Total Reads: 112 KB i_size: 488 KB
+Grand Total File DATA KB Reads 76796
+PID VIEW:
+PID: android.anim
+            /framework/framework-res.apk Reads: 16 KB i_size: 18923 KB
+            Total Reads: 16 KB
+PID: AsyncTask_#1
+            /framework/arm/boot-ext.oat Reads: 156 KB i_size: 306 KB
+            /framework/arm/boot-ext.vdex Reads: 396 KB i_size: 1056 KB
+            /framework/arm/boot.oat Reads: 104 KB i_size: 7511 KB
+            /framework/arm/boot-org.apache.http.legacy.boot.vdex Reads: 88 KB i_size: 509 KB
+            /framework/arm/boot.vdex Reads: 60 KB i_size: 5144 KB
+            Total Reads: 804 KB
+PID: AsyncTask_#2
+            /app/Gmail2Light/Gmail2Light.apk Reads: 24 KB i_size: 9736 KB
+            /framework/arm/boot-framework.oat Reads: 116 KB i_size: 21357 KB
+            /framework/arm/boot-framework.vdex Reads: 40 KB i_size: 19304 KB
+            Total Reads: 180 KB
+PID: AsyncTask_#3
+            /data/com.google.android.gm/files/deviceName Reads: 4 KB i_size: 17 bytes
+            /framework/com.android.location.provider.jar Reads: 16 KB i_size: 12 KB
+            /framework/com.android.media.remotedisplay.jar Reads: 8 KB i_size: 4 KB
+            /framework/oat/arm/com.android.location.provider.odex Reads: 12 KB i_size: 20 KB
+            /framework/oat/arm/com.android.media.remotedisplay.odex Reads: 12 KB i_size: 20 KB
+            /priv-app/GmsCore/GmsCore.apk Reads: 148 KB i_size: 37870 KB
+            Total Reads: 200 KB
+PID: Binder1550_5
+            /data/com.google.android.gsf/files/signatures/sig-281206196 Reads: 4 KB i_size: 1 KB
+            Total Reads: 4 KB
+PID: Binder8493_1
+            /framework/arm/boot-framework.oat Reads: 24 KB i_size: 21357 KB
+            /framework/arm/boot-framework.vdex Reads: 72 KB i_size: 19304 KB
+            Total Reads: 96 KB
+PID: cat
+            /bin/toybox Reads: 304 KB i_size: 319 KB
+            /lib/libcrypto.so Reads: 112 KB i_size: 689 KB
+            /lib/libpackagelistparser.so Reads: 8 KB i_size: 15 KB
+            /lib/libpcre2.so Reads: 48 KB i_size: 92 KB
+            /lib/libselinux.so Reads: 12 KB i_size: 75 KB
+            /lib/libz.so Reads: 20 KB i_size: 95 KB
+            Total Reads: 504 KB
+PID: ChildProcessMai
+            /usr/share/zoneinfo/tzdata Reads: 112 KB i_size: 488 KB
+            Total Reads: 112 KB
+PID: Chrome_CacheThr
+            /data/com.google.android.gm/app_webview/GPUCache/index Reads: 4 KB i_size: 24 bytes
+            Total Reads: 4 KB
+PID: Chrome_ChildIOT
+            /app/Chrome/Chrome.apk Reads: 96 KB i_size: 71354 KB
+            Total Reads: 96 KB
+PID: Chrome_DBThread
+            /app/Chrome/Chrome.apk Reads: 652 KB i_size: 71354 KB
+            Total Reads: 652 KB
+PID: Chrome_FileThre
+            /data/com.google.android.gm/app_webview/metrics_guid Reads: 4 KB i_size: 36 bytes
+            Total Reads: 4 KB
+PID: Chrome_FileUser
+            /app/Chrome/Chrome.apk Reads: 72 KB i_size: 71354 KB
+            Total Reads: 72 KB
+PID: Chrome_InProcGp
+            /app/Chrome/Chrome.apk Reads: 732 KB i_size: 71354 KB
+            /framework/arm/boot-framework.oat Reads: 196 KB i_size: 21357 KB
+            /framework/arm/boot-framework.vdex Reads: 300 KB i_size: 19304 KB
+            /framework/arm/boot.oat Reads: 12 KB i_size: 7511 KB
+            /lib/egl/libGLES_mali.so Reads: 220 KB i_size: 4454 KB
+            /lib/liblzma.so Reads: 88 KB i_size: 93 KB
+            /lib/libmedia_jni.so Reads: 72 KB i_size: 299 KB
+            Total Reads: 1620 KB
+PID: Chrome_IOThread
+            /app/Chrome/Chrome.apk Reads: 1396 KB i_size: 71354 KB
+            /app/Gmail2Light/Gmail2Light.apk Reads: 68 KB i_size: 9736 KB
+            /framework/arm/boot.oat Reads: 44 KB i_size: 7511 KB
+            Total Reads: 1508 KB
+PID: Compositor
+            /app/Chrome/Chrome.apk Reads: 652 KB i_size: 71354 KB
+            Total Reads: 652 KB
+PID: CookieMonsterBa
+            /app/Chrome/Chrome.apk Reads: 284 KB i_size: 71354 KB
+            Total Reads: 284 KB
+PID: CrRendererMain
+            /app/Chrome/Chrome.apk Reads: 17012 KB i_size: 71354 KB
+            /etc/fonts.xml Reads: 24 KB i_size: 22 KB
+            /fonts/CarroisGothicSC-Regular.ttf Reads: 40 KB i_size: 39 KB
+            /fonts/ComingSoon.ttf Reads: 60 KB i_size: 57 KB
+            /fonts/CutiveMono.ttf Reads: 68 KB i_size: 67 KB
+            /fonts/DancingScript-Bold.ttf Reads: 116 KB i_size: 112 KB
+            /fonts/DancingScript-Regular.ttf Reads: 116 KB i_size: 113 KB
+            /fonts/DroidSansMono.ttf Reads: 108 KB i_size: 105 KB
+            /fonts/NotoColorEmoji.ttf Reads: 204 KB i_size: 7108 KB
+            /fonts/NotoNaskhArabic-Bold.ttf Reads: 116 KB i_size: 113 KB
+            /fonts/NotoNaskhArabic-Regular.ttf Reads: 116 KB i_size: 113 KB
+            /fonts/NotoNaskhArabicUI-Bold.ttf Reads: 120 KB i_size: 116 KB
+            /fonts/NotoNaskhArabicUI-Regular.ttf Reads: 120 KB i_size: 117 KB
+            /fonts/NotoSansAdlam-Regular.ttf Reads: 52 KB i_size: 49 KB
+            /fonts/NotoSansArmenian-Bold.ttf Reads: 16 KB i_size: 15 KB
+            /fonts/NotoSansArmenian-Regular.ttf Reads: 16 KB i_size: 15 KB
+            /fonts/NotoSansAvestan-Regular.ttf Reads: 12 KB i_size: 11 KB
+            /fonts/NotoSansBalinese-Regular.ttf Reads: 32 KB i_size: 31 KB
+            /fonts/NotoSansBamum-Regular.ttf Reads: 132 KB i_size: 130 KB
+            /fonts/NotoSansBatak-Regular.ttf Reads: 16 KB i_size: 12 KB
+            /fonts/NotoSansBengali-Bold.ttf Reads: 100 KB i_size: 96 KB
+            /fonts/NotoSansBengali-Regular.ttf Reads: 100 KB i_size: 99 KB
+            /fonts/NotoSansBengaliUI-Bold.ttf Reads: 104 KB i_size: 101 KB
+            /fonts/NotoSansBengaliUI-Regular.ttf Reads: 108 KB i_size: 104 KB
+            /fonts/NotoSansBrahmi-Regular.ttf Reads: 24 KB i_size: 23 KB
+            /fonts/NotoSansBuginese-Regular.ttf Reads: 8 KB i_size: 7 KB
+            /fonts/NotoSansBuhid-Regular.ttf Reads: 8 KB i_size: 4 KB
+            /fonts/NotoSansCanadianAboriginal-Regular.ttf Reads: 48 KB i_size: 45 KB
+            /fonts/NotoSansCarian-Regular.ttf Reads: 8 KB i_size: 6 KB
+            /fonts/NotoSansCham-Bold.ttf Reads: 24 KB i_size: 21 KB
+            /fonts/NotoSansCham-Regular.ttf Reads: 24 KB i_size: 21 KB
+            /fonts/NotoSansCherokee-Regular.ttf Reads: 60 KB i_size: 56 KB
+            /fonts/NotoSansCJK-Regular.ttc Reads: 2380 KB i_size: 18236 KB
+            /fonts/NotoSansCoptic-Regular.ttf Reads: 24 KB i_size: 21 KB
+            /fonts/NotoSansCuneiform-Regular.ttf Reads: 200 KB i_size: 488 KB
+            /fonts/NotoSansCypriot-Regular.ttf Reads: 8 KB i_size: 7 KB
+            /fonts/NotoSansDeseret-Regular.ttf Reads: 12 KB i_size: 10 KB
+            /fonts/NotoSansDevanagari-Bold.ttf Reads: 128 KB i_size: 128 KB
+            /fonts/NotoSansDevanagari-Regular.ttf Reads: 128 KB i_size: 132 KB
+            /fonts/NotoSansDevanagariUI-Bold.ttf Reads: 120 KB i_size: 118 KB
+            /fonts/NotoSansDevanagariUI-Regular.ttf Reads: 124 KB i_size: 122 KB
+            /fonts/NotoSansEgyptianHieroglyphs-Regular.ttf Reads: 200 KB i_size: 493 KB
+            /fonts/NotoSansEthiopic-Bold.ttf Reads: 128 KB i_size: 140 KB
+            /fonts/NotoSansEthiopic-Regular.ttf Reads: 128 KB i_size: 139 KB
+            /fonts/NotoSansGeorgian-Bold.ttf Reads: 20 KB i_size: 19 KB
+            /fonts/NotoSansGeorgian-Regular.ttf Reads: 20 KB i_size: 19 KB
+            /fonts/NotoSansGlagolitic-Regular.ttf Reads: 16 KB i_size: 15 KB
+            /fonts/NotoSansGothic-Regular.ttf Reads: 8 KB i_size: 5 KB
+            /fonts/NotoSansGujarati-Bold.ttf Reads: 116 KB i_size: 114 KB
+            /fonts/NotoSansGujarati-Regular.ttf Reads: 120 KB i_size: 117 KB
+            /fonts/NotoSansGujaratiUI-Bold.ttf Reads: 112 KB i_size: 111 KB
+            /fonts/NotoSansGujaratiUI-Regular.ttf Reads: 116 KB i_size: 114 KB
+            /fonts/NotoSansGurmukhi-Bold.ttf Reads: 32 KB i_size: 30 KB
+            /fonts/NotoSansGurmukhi-Regular.ttf Reads: 32 KB i_size: 31 KB
+            /fonts/NotoSansGurmukhiUI-Bold.ttf Reads: 32 KB i_size: 31 KB
+            /fonts/NotoSansGurmukhiUI-Regular.ttf Reads: 32 KB i_size: 31 KB
+            /fonts/NotoSansHanunoo-Regular.ttf Reads: 8 KB i_size: 6 KB
+            /fonts/NotoSansHebrew-Bold.ttf Reads: 20 KB i_size: 17 KB
+            /fonts/NotoSansHebrew-Regular.ttf Reads: 20 KB i_size: 16 KB
+            /fonts/NotoSansImperialAramaic-Regular.ttf Reads: 8 KB i_size: 5 KB
+            /fonts/NotoSansInscriptionalPahlavi-Regular.ttf Reads: 8 KB i_size: 5 KB
+            /fonts/NotoSansInscriptionalParthian-Regular.ttf Reads: 8 KB i_size: 7 KB
+            /fonts/NotoSansJavanese-Regular.ttf Reads: 40 KB i_size: 36 KB
+            /fonts/NotoSansKaithi-Regular.ttf Reads: 60 KB i_size: 58 KB
+            /fonts/NotoSansKannada-Bold.ttf Reads: 80 KB i_size: 78 KB
+            /fonts/NotoSansKannada-Regular.ttf Reads: 84 KB i_size: 80 KB
+            /fonts/NotoSansKannadaUI-Bold.ttf Reads: 80 KB i_size: 77 KB
+            /fonts/NotoSansKannadaUI-Regular.ttf Reads: 80 KB i_size: 79 KB
+            /fonts/NotoSansKayahLi-Regular.ttf Reads: 8 KB i_size: 7 KB
+            /fonts/NotoSansKharoshthi-Regular.ttf Reads: 24 KB i_size: 21 KB
+            /fonts/NotoSansKhmerUI-Bold.ttf Reads: 36 KB i_size: 35 KB
+            /fonts/NotoSansKhmerUI-Regular.ttf Reads: 40 KB i_size: 37 KB
+            /fonts/NotoSansKhmer-VF.ttf Reads: 128 KB i_size: 140 KB
+            /fonts/NotoSansLao-Bold.ttf Reads: 32 KB i_size: 28 KB
+            /fonts/NotoSansLao-Regular.ttf Reads: 32 KB i_size: 29 KB
+            /fonts/NotoSansLaoUI-Bold.ttf Reads: 32 KB i_size: 28 KB
+            /fonts/NotoSansLaoUI-Regular.ttf Reads: 32 KB i_size: 29 KB
+            /fonts/NotoSansLepcha-Regular.ttf Reads: 100 KB i_size: 99 KB
+            /fonts/NotoSansLimbu-Regular.ttf Reads: 12 KB i_size: 10 KB
+            /fonts/NotoSansLinearB-Regular.ttf Reads: 60 KB i_size: 56 KB
+            /fonts/NotoSansLisu-Regular.ttf Reads: 8 KB i_size: 5 KB
+            /fonts/NotoSansLycian-Regular.ttf Reads: 8 KB i_size: 4 KB
+            /fonts/NotoSansLydian-Regular.ttf Reads: 8 KB i_size: 4 KB
+            /fonts/NotoSansMalayalam-Bold.ttf Reads: 56 KB i_size: 55 KB
+            /fonts/NotoSansMalayalam-Regular.ttf Reads: 56 KB i_size: 55 KB
+            /fonts/NotoSansMalayalamUI-Bold.ttf Reads: 56 KB i_size: 55 KB
+            /fonts/NotoSansMalayalamUI-Regular.ttf Reads: 56 KB i_size: 55 KB
+            /fonts/NotoSansMandaic-Regular.ttf Reads: 16 KB i_size: 14 KB
+            /fonts/NotoSansMeeteiMayek-Regular.ttf Reads: 16 KB i_size: 13 KB
+            /fonts/NotoSansMongolian-Regular.ttf Reads: 112 KB i_size: 110 KB
+            /fonts/NotoSansMyanmar-Bold.ttf Reads: 108 KB i_size: 106 KB
+            /fonts/NotoSansMyanmar-Regular.ttf Reads: 108 KB i_size: 105 KB
+            /fonts/NotoSansMyanmarUI-Bold.ttf Reads: 104 KB i_size: 102 KB
+            /fonts/NotoSansMyanmarUI-Regular.ttf Reads: 104 KB i_size: 100 KB
+            /fonts/NotoSansNewTaiLue-Regular.ttf Reads: 16 KB i_size: 14 KB
+            /fonts/NotoSansNKo-Regular.ttf Reads: 20 KB i_size: 18 KB
+            /fonts/NotoSansOgham-Regular.ttf Reads: 8 KB i_size: 4 KB
+            /fonts/NotoSansOlChiki-Regular.ttf Reads: 8 KB i_size: 7 KB
+            /fonts/NotoSansOldItalic-Regular.ttf Reads: 8 KB i_size: 4 KB
+            /fonts/NotoSansOldPersian-Regular.ttf Reads: 16 KB i_size: 12 KB
+            /fonts/NotoSansOldSouthArabian-Regular.ttf Reads: 8 KB i_size: 4 KB
+            /fonts/NotoSansOldTurkic-Regular.ttf Reads: 8 KB i_size: 7 KB
+            /fonts/NotoSansOriya-Bold.ttf Reads: 84 KB i_size: 82 KB
+            /fonts/NotoSansOriya-Regular.ttf Reads: 84 KB i_size: 83 KB
+            /fonts/NotoSansOriyaUI-Bold.ttf Reads: 80 KB i_size: 78 KB
+            /fonts/NotoSansOriyaUI-Regular.ttf Reads: 80 KB i_size: 78 KB
+            /fonts/NotoSansOsmanya-Regular.ttf Reads: 8 KB i_size: 7 KB
+            /fonts/NotoSansPhagsPa-Regular.ttf Reads: 28 KB i_size: 27 KB
+            /fonts/NotoSansPhoenician-Regular.ttf Reads: 8 KB i_size: 5 KB
+            /fonts/NotoSansRejang-Regular.ttf Reads: 8 KB i_size: 6 KB
+            /fonts/NotoSansRunic-Regular.ttf Reads: 12 KB i_size: 8 KB
+            /fonts/NotoSansSamaritan-Regular.ttf Reads: 12 KB i_size: 9 KB
+            /fonts/NotoSansSaurashtra-Regular.ttf Reads: 20 KB i_size: 18 KB
+            /fonts/NotoSansShavian-Regular.ttf Reads: 8 KB i_size: 5 KB
+            /fonts/NotoSansSinhala-Bold.ttf Reads: 152 KB i_size: 149 KB
+            /fonts/NotoSansSinhala-Regular.ttf Reads: 160 KB i_size: 156 KB
+            /fonts/NotoSansSundanese-Regular.ttf Reads: 12 KB i_size: 10 KB
+            /fonts/NotoSansSylotiNagri-Regular.ttf Reads: 16 KB i_size: 14 KB
+            /fonts/NotoSansSymbols-Regular-Subsetted2.ttf Reads: 36 KB i_size: 32 KB
+            /fonts/NotoSansSymbols-Regular-Subsetted.ttf Reads: 208 KB i_size: 692 KB
+            /fonts/NotoSansSyriacEastern-Regular.ttf Reads: 52 KB i_size: 48 KB
+            /fonts/NotoSansSyriacEstrangela-Regular.ttf Reads: 48 KB i_size: 45 KB
+            /fonts/NotoSansSyriacWestern-Regular.ttf Reads: 52 KB i_size: 51 KB
+            /fonts/NotoSansTagalog-Regular.ttf Reads: 8 KB i_size: 5 KB
+            /fonts/NotoSansTagbanwa-Regular.ttf Reads: 8 KB i_size: 5 KB
+            /fonts/NotoSansTaiLe-Regular.ttf Reads: 12 KB i_size: 9 KB
+            /fonts/NotoSansTaiTham-Regular.ttf Reads: 48 KB i_size: 46 KB
+            /fonts/NotoSansTaiViet-Regular.ttf Reads: 16 KB i_size: 15 KB
+            /fonts/NotoSansTamil-Bold.ttf Reads: 36 KB i_size: 33 KB
+            /fonts/NotoSansTamil-Regular.ttf Reads: 36 KB i_size: 33 KB
+            /fonts/NotoSansTamilUI-Bold.ttf Reads: 36 KB i_size: 33 KB
+            /fonts/NotoSansTamilUI-Regular.ttf Reads: 36 KB i_size: 33 KB
+            /fonts/NotoSansTelugu-Bold.ttf Reads: 108 KB i_size: 107 KB
+            /fonts/NotoSansTelugu-Regular.ttf Reads: 112 KB i_size: 108 KB
+            /fonts/NotoSansTeluguUI-Bold.ttf Reads: 112 KB i_size: 109 KB
+            /fonts/NotoSansTeluguUI-Regular.ttf Reads: 112 KB i_size: 109 KB
+            /fonts/NotoSansThaana-Bold.ttf Reads: 16 KB i_size: 14 KB
+            /fonts/NotoSansThaana-Regular.ttf Reads: 16 KB i_size: 14 KB
+            /fonts/NotoSansThai-Bold.ttf Reads: 20 KB i_size: 17 KB
+            /fonts/NotoSansThai-Regular.ttf Reads: 24 KB i_size: 20 KB
+            /fonts/NotoSansThaiUI-Bold.ttf Reads: 20 KB i_size: 18 KB
+            /fonts/NotoSansThaiUI-Regular.ttf Reads: 24 KB i_size: 21 KB
+            /fonts/NotoSansTibetan-Bold.ttf Reads: 244 KB i_size: 364 KB
+            /fonts/NotoSansTibetan-Regular.ttf Reads: 252 KB i_size: 392 KB
+            /fonts/NotoSansTifinagh-Regular.ttf Reads: 16 KB i_size: 13 KB
+            /fonts/NotoSansUgaritic-Regular.ttf Reads: 8 KB i_size: 6 KB
+            /fonts/NotoSansVai-Regular.ttf Reads: 64 KB i_size: 62 KB
+            /fonts/NotoSansYi-Regular.ttf Reads: 124 KB i_size: 120 KB
+            /fonts/NotoSerif-BoldItalic.ttf Reads: 248 KB i_size: 256 KB
+            /fonts/NotoSerif-Bold.ttf Reads: 244 KB i_size: 242 KB
+            /fonts/NotoSerif-Italic.ttf Reads: 244 KB i_size: 243 KB
+            /fonts/NotoSerif-Regular.ttf Reads: 244 KB i_size: 240 KB
+            /fonts/Roboto-BlackItalic.ttf Reads: 256 KB i_size: 322 KB
+            /fonts/Roboto-Black.ttf Reads: 256 KB i_size: 299 KB
+            /fonts/Roboto-BoldItalic.ttf Reads: 256 KB i_size: 324 KB
+            /fonts/RobotoCondensed-BoldItalic.ttf Reads: 256 KB i_size: 322 KB
+            /fonts/RobotoCondensed-Bold.ttf Reads: 256 KB i_size: 296 KB
+            /fonts/RobotoCondensed-Italic.ttf Reads: 256 KB i_size: 321 KB
+            /fonts/RobotoCondensed-LightItalic.ttf Reads: 256 KB i_size: 324 KB
+            /fonts/RobotoCondensed-Light.ttf Reads: 256 KB i_size: 295 KB
+            /fonts/RobotoCondensed-MediumItalic.ttf Reads: 256 KB i_size: 322 KB
+            /fonts/RobotoCondensed-Medium.ttf Reads: 256 KB i_size: 296 KB
+            /fonts/Roboto-LightItalic.ttf Reads: 256 KB i_size: 324 KB
+            /fonts/Roboto-MediumItalic.ttf Reads: 256 KB i_size: 323 KB
+            /fonts/Roboto-Regular.ttf Reads: 88 KB i_size: 298 KB
+            /fonts/Roboto-ThinItalic.ttf Reads: 256 KB i_size: 321 KB
+            /fonts/Roboto-Thin.ttf Reads: 256 KB i_size: 300 KB
+            /lib/libft2.so Reads: 56 KB i_size: 479 KB
+            /lib/libicuuc.so Reads: 88 KB i_size: 1182 KB
+            Total Reads: 32760 KB
+PID: dboxed_process0
+            /app/Chrome/Chrome.apk Reads: 512 KB i_size: 71354 KB
+            /framework/android.hidl.base-V1.0-java.jar Reads: 8 KB i_size: 6 KB
+            /framework/android.hidl.manager-V1.0-java.jar Reads: 12 KB i_size: 9 KB
+            /framework/apache-xml.jar Reads: 20 KB i_size: 542 KB
+            /framework/arm/boot-conscrypt.vdex Reads: 80 KB i_size: 374 KB
+            /framework/arm/boot-framework.oat Reads: 280 KB i_size: 21357 KB
+            /framework/arm/boot-framework.vdex Reads: 24 KB i_size: 19304 KB
+            /framework/arm/boot.oat Reads: 160 KB i_size: 7511 KB
+            /framework/arm/boot.vdex Reads: 392 KB i_size: 5144 KB
+            /framework/bouncycastle.jar Reads: 20 KB i_size: 531 KB
+            /framework/conscrypt.jar Reads: 20 KB i_size: 153 KB
+            /framework/core-libart.jar Reads: 20 KB i_size: 1363 KB
+            /framework/core-oj.jar Reads: 24 KB i_size: 2214 KB
+            /framework/ext.jar Reads: 192 KB i_size: 2142 KB
+            /framework/framework.jar Reads: 20 KB i_size: 7342 KB
+            /framework/framework-res.apk Reads: 496 KB i_size: 18923 KB
+            /framework/ims-common.jar Reads: 20 KB i_size: 46 KB
+            /framework/legacy-test.jar Reads: 20 KB i_size: 16 KB
+            /framework/okhttp.jar Reads: 20 KB i_size: 180 KB
+            /framework/org.apache.http.legacy.boot.jar Reads: 20 KB i_size: 213 KB
+            /framework/telephony-common.jar Reads: 20 KB i_size: 938 KB
+            /framework/voip-common.jar Reads: 20 KB i_size: 66 KB
+            /lib/android.hardware.configstore@1.0.so Reads: 112 KB i_size: 132 KB
+            /lib/android.hardware.graphics.bufferqueue@1.0.so Reads: 128 KB i_size: 223 KB
+            /lib/android.hardware.renderscript@1.0.so Reads: 124 KB i_size: 332 KB
+            /lib/android.hidl.token@1.0.so Reads: 80 KB i_size: 99 KB
+            /lib/android.hidl.token@1.0-utils.so Reads: 20 KB i_size: 20 KB
+            /lib/libaaudio.so Reads: 88 KB i_size: 115 KB
+            /lib/libandroid_runtime.so Reads: 88 KB i_size: 1451 KB
+            /lib/libart-dexlayout.so Reads: 120 KB i_size: 155 KB
+            /lib/libart.so Reads: 52 KB i_size: 5602 KB
+            /lib/libcamera2ndk.so Reads: 92 KB i_size: 94 KB
+            /lib/libcamera_client.so Reads: 120 KB i_size: 231 KB
+            /lib/libdng_sdk.so Reads: 356 KB i_size: 549 KB
+            /lib/libdrmframework.so Reads: 84 KB i_size: 102 KB
+            /lib/libicuuc.so Reads: 76 KB i_size: 1182 KB
+            /lib/libimg_utils.so Reads: 60 KB i_size: 66 KB
+            /lib/libmedia_jni.so Reads: 96 KB i_size: 299 KB
+            /lib/libmedia.so Reads: 88 KB i_size: 496 KB
+            /lib/libmediautils.so Reads: 36 KB i_size: 53 KB
+            /lib/libmemunreachable.so Reads: 84 KB i_size: 120 KB
+            /lib/libmtp.so Reads: 116 KB i_size: 122 KB
+            /lib/libprotobuf-cpp-lite.so Reads: 88 KB i_size: 197 KB
+            /lib/libradio.so Reads: 36 KB i_size: 53 KB
+            /lib/libRS.so Reads: 40 KB i_size: 59 KB
+            /lib/libstagefright.so Reads: 244 KB i_size: 1487 KB
+            /lib/libvintf.so Reads: 96 KB i_size: 187 KB
+            /lib/libvulkan.so Reads: 80 KB i_size: 98 KB
+            /lib/libwilhelm.so Reads: 120 KB i_size: 199 KB
+            /resource-cache/overlays.list Reads: 4 KB i_size: 0 bytes
+            Total Reads: 5128 KB
+PID: droid.launcher3
+            /framework/arm/boot-framework.oat Reads: 112 KB i_size: 21357 KB
+            /framework/arm/boot-framework.vdex Reads: 116 KB i_size: 19304 KB
+            Total Reads: 228 KB
+PID: EGL_Init
+            /framework/arm/boot-framework.vdex Reads: 116 KB i_size: 19304 KB
+            Total Reads: 116 KB
+PID: GAThread
+            /data/com.google.android.gm/files/gaClientId Reads: 4 KB i_size: 36 bytes
+            /framework/arm/boot.oat Reads: 32 KB i_size: 7511 KB
+            Total Reads: 36 KB
+PID: HeapTaskDaemon
+            /framework/arm/boot-framework.oat Reads: 132 KB i_size: 21357 KB
+            Total Reads: 132 KB
+PID: JavaBridge
+            /app/Chrome/Chrome.apk Reads: 128 KB i_size: 71354 KB
+            Total Reads: 128 KB
+PID: Jit_thread_pool
+            /framework/arm/boot-core-libart.oat Reads: 28 KB i_size: 3076 KB
+            /framework/arm/boot-core-libart.vdex Reads: 80 KB i_size: 3080 KB
+            /framework/arm/boot-framework.oat Reads: 48 KB i_size: 21357 KB
+            /framework/arm/boot-framework.vdex Reads: 692 KB i_size: 19304 KB
+            /framework/arm/boot.vdex Reads: 356 KB i_size: 5144 KB
+            /lib/libart-compiler.so Reads: 128 KB i_size: 1975 KB
+            /priv-app/Launcher3/oat/arm/Launcher3.vdex Reads: 100 KB i_size: 1609 KB
+            Total Reads: 1432 KB
+PID: netd
+            /etc/hosts Reads: 4 KB i_size: 56 bytes
+            Total Reads: 4 KB
+PID: NetworkCursor_F
+            /etc/security/cacerts/7999be0d.0 Reads: 8 KB i_size: 4 KB
+            /framework/arm/boot-framework.oat Reads: 164 KB i_size: 21357 KB
+            /framework/arm/boot-framework.vdex Reads: 208 KB i_size: 19304 KB
+            /framework/arm/boot.oat Reads: 44 KB i_size: 7511 KB
+            /framework/arm/boot-org.apache.http.legacy.boot.oat Reads: 280 KB i_size: 576 KB
+            /framework/arm/boot-org.apache.http.legacy.boot.vdex Reads: 72 KB i_size: 509 KB
+            /misc/keychain/pubkey_blacklist.txt Reads: 4 KB i_size: 819 bytes
+            /misc/keychain/serial_blacklist.txt Reads: 4 KB i_size: 0 bytes
+            Total Reads: 784 KB
+PID: ogle.android.gm
+            / Reads: 4 KB i_size: 163840 KB
+            /app/Chrome/Chrome.apk Reads: 14996 KB i_size: 71354 KB
+            /app/Gmail2Light/Gmail2Light.apk Reads: 1440 KB i_size: 9736 KB
+            /fonts/Roboto-Bold.ttf Reads: 276 KB i_size: 299 KB
+            /fonts/Roboto-Light.ttf Reads: 164 KB i_size: 299 KB
+            /fonts/Roboto-Medium.ttf Reads: 176 KB i_size: 299 KB
+            /fonts/Roboto-Regular.ttf Reads: 88 KB i_size: 298 KB
+            /framework/arm/boot-android.hidl.base-V1.0-java.vdex Reads: 12 KB i_size: 11 KB
+            /framework/arm/boot.art Reads: 16 KB i_size: 1956 KB
+            /framework/arm/boot-core-libart.oat Reads: 1136 KB i_size: 3076 KB
+            /framework/arm/boot-core-libart.vdex Reads: 1332 KB i_size: 3080 KB
+            /framework/arm/boot-framework.oat Reads: 2732 KB i_size: 21357 KB
+            /framework/arm/boot-framework.vdex Reads: 2760 KB i_size: 19304 KB
+            /framework/arm/boot.oat Reads: 320 KB i_size: 7511 KB
+            /framework/arm/boot-okhttp.oat Reads: 108 KB i_size: 545 KB
+            /framework/arm/boot-okhttp.vdex Reads: 244 KB i_size: 412 KB
+            /framework/framework-res.apk Reads: 720 KB i_size: 18923 KB
+            /lib/hw/gralloc.mt6737m.so Reads: 12 KB i_size: 40 KB
+            /lib/libandroid.so Reads: 84 KB i_size: 95 KB
+            /lib/libart.so Reads: 76 KB i_size: 5602 KB
+            /lib/libGLESv2.so Reads: 28 KB i_size: 68 KB
+            /lib/libskia.so Reads: 316 KB i_size: 5578 KB
+            /lib/libwebviewchromium_loader.so Reads: 12 KB i_size: 15 KB
+            /lib/libwebviewchromium_plat_support.so Reads: 16 KB i_size: 20 KB
+            /user/0 Reads: 4 KB i_size: 10 bytes
+            /usr/hyphen-data/hyph-en-us.hyb Reads: 20 KB i_size: 58 KB
+            /usr/icu/icudt58l.dat Reads: 1400 KB i_size: 22774 KB
+            Total Reads: 28492 KB
+PID: pool-3-thread-1
+            /lib/libandroid_runtime.so Reads: 4 KB i_size: 1451 KB
+            Total Reads: 4 KB
+PID: sh
+            /bin/toybox Reads: 16 KB i_size: 319 KB
+            Total Reads: 16 KB
+PID: SharedPreferenc
+            /data/com.google.android.gm/shared_prefs/Account-android.smoke.fast@gmail.com.xml Reads: 4 KB i_size: 2 KB
+            /data/com.google.android.gm/shared_prefs/AndroidMail.Main.xml Reads: 4 KB i_size: 206 bytes
+            /data/com.google.android.gm/shared_prefs/c9edm_account-1303398453.xml Reads: 4 KB i_size: 254 bytes
+            /data/com.google.android.gm/shared_prefs/c9edm_account-2137146394.xml Reads: 4 KB i_size: 167 bytes
+            /data/com.google.android.gm/shared_prefs/Folder-android.smoke.fast@gmail.com-^sq_ig_i_personal.xml Reads: 4 KB i_size: 402 bytes
+            /data/com.google.android.gm/shared_prefs/G6yPrefs.xml Reads: 4 KB i_size: 191 bytes
+            /data/com.google.android.gm/shared_prefs/Gmail.xml Reads: 4 KB i_size: 1 KB
+            /data/com.google.android.gm/shared_prefs/_has_set_default_values.xml Reads: 4 KB i_size: 130 bytes
+            /data/com.google.android.gm/shared_prefs/Impressions-android.smoke.fast@gmail.com.xml Reads: 4 KB i_size: 65 bytes
+            /data/com.google.android.gm/shared_prefs/SmartreplyEvents-android.smoke.fast@gmail.com.xml Reads: 4 KB i_size: 65 bytes
+            /data/com.google.android.gm/shared_prefs/UnifiedEmail.xml Reads: 4 KB i_size: 935 bytes
+            /data/com.google.android.gm/shared_prefs/WebViewChromiumPrefs.xml Reads: 4 KB i_size: 127 bytes
+            Total Reads: 48 KB
+PID: Thread-4
+            /framework/arm/boot.oat Reads: 96 KB i_size: 7511 KB
+            Total Reads: 96 KB
+PID: Thread-6
+            /app/Gmail2Light/Gmail2Light.apk Reads: 8 KB i_size: 9736 KB
+            Total Reads: 8 KB
+PID: Thread-9
+            /framework/arm/boot-framework.oat Reads: 72 KB i_size: 21357 KB
+            /framework/arm/boot-framework.vdex Reads: 96 KB i_size: 19304 KB
+            Total Reads: 168 KB
+PID: WorkerPool/8556
+            /app/Chrome/Chrome.apk Reads: 408 KB i_size: 71354 KB
+            Total Reads: 408 KB
+Grand Total File DATA KB Reads 76796
+Total (ALL) Read KB mmcblk0 = 96576
+READ DELTA: Total Blockdev Reads KB - Total File Data Reads KB = 19780 KB
+Total (ALL) Read IOs mmcblk0 = 2722
+Debug Grand Total KB READ 76796
+
+Writes :
+_______
+
+FILE VIEW:
+File: /data/com.android.providers.downloads/databases/downloads.db
+            Binder8274_1 Writes: 73 KB
+            Binder8274_3 Writes: 33 KB
+            Binder8274_4 Writes: 106 KB
+            sAsyncHandlerTh Writes: 33 KB
+            Thread-4 Writes: 66 KB
+            Thread-5 Writes: 49 KB
+            Binder8274_1 Writes: 73 KB
+            Binder8274_3 Writes: 33 KB
+            Binder8274_4 Writes: 106 KB
+            sAsyncHandlerTh Writes: 33 KB
+            Thread-4 Writes: 66 KB
+            Thread-5 Writes: 49 KB
+            Total Writes: 720 KB i_size: 8 KB
+File: /data/com.android.providers.downloads/databases/downloads.db-journal
+            Binder8274_1 Writes: 37 KB
+            Binder8274_3 Writes: 17 KB
+            Binder8274_4 Writes: 54 KB
+            sAsyncHandlerTh Writes: 17 KB
+            Thread-4 Writes: 34 KB
+            Thread-5 Writes: 25 KB
+            Total Writes: 184 KB i_size: 8 KB
+File: /data/com.android.providers.downloads/files/downloadfile.bin
+            Thread-4 Writes: 79 KB
+            Thread-5 Writes: 23 KB
+            Total Writes: 102 KB i_size: 23 KB
+File: /data/com.google.android.gm/app_sslcache/mail.google.com.443
+            NetworkCursor_F Writes: 5 KB
+            Total Writes: 5 KB i_size: 4 KB
+File: /data/com.google.android.gm/app_webview/Cookies
+            CookieMonsterBa Writes: 358 KB
+            Total Writes: 358 KB i_size: 5 KB
+File: /data/com.google.android.gm/app_webview/Cookies-journal
+            CookieMonsterBa Writes: 188 KB
+            Total Writes: 188 KB i_size: 5 KB
+File: /data/com.google.android.gm/cache/android.smoke.fast@gmail.com/jelly-bean-1.png
+            Background_task Writes: 79 KB
+            Total Writes: 79 KB i_size: 8 KB
+File: /data/com.google.android.gm/cache/android.smoke.fast@gmail.com/PANO_20120828_015822-1.jpg
+            Background_task Writes: 23 KB
+            Total Writes: 23 KB i_size: 8 KB
+File: /data/com.google.android.gm/databases/EmailProvider.db
+            AsyncTask_#2 Writes: 49 KB
+            Total Writes: 49 KB i_size: 8 KB
+File: /data/com.google.android.gm/databases/EmailProvider.db-journal
+            AsyncTask_#2 Writes: 25 KB
+            Total Writes: 25 KB i_size: 8 KB
+File: /data/com.google.android.gm/databases/mailstore.android.smoke.fast@gmail.com.db
+            AsyncQueryWorke Writes: 224 KB
+            AsyncTask_#1 Writes: 264 KB
+            NetworkCursor_F Writes: 4866 KB
+            Thread-13 Writes: 292 KB
+            Thread-15 Writes: 280 KB
+            Thread-16 Writes: 320 KB
+            AsyncTask_#1 Writes: 264 KB
+            AsyncQueryWorke Writes: 224 KB
+            AsyncTask_#1 Writes: 264 KB
+            AsyncTask_#2 Writes: 108 KB
+            AsyncTask_#3 Writes: 64 KB
+            Background_task Writes: 16 KB
+            NetworkCursor_F Writes: 4866 KB
+            SyncAdapterThre Writes: 112 KB
+            Thread-12 Writes: 100 KB
+            Thread-13 Writes: 292 KB
+            Thread-14 Writes: 108 KB
+            Thread-15 Writes: 280 KB
+            Thread-16 Writes: 320 KB
+            Thread-17 Writes: 128 KB
+            Thread-18 Writes: 136 KB
+            Thread-19 Writes: 128 KB
+            Thread-20 Writes: 108 KB
+            Total Writes: 13764 KB i_size: 512 KB
+File: /data/com.google.android.gm/databases/mailstore.android.smoke.fast@gmail.com.db-shm
+            AsyncTask_#1 Writes: 0 KB
+            Total Writes: 0 KB i_size: 4 KB
+File: /data/com.google.android.gm/databases/mailstore.android.smoke.fast@gmail.com.db-wal
+            AsyncQueryWorke Writes: 48 KB
+            AsyncTask_#1 Writes: 76 KB
+            AsyncTask_#2 Writes: 108 KB
+            AsyncTask_#3 Writes: 64 KB
+            Background_task Writes: 16 KB
+            NetworkCursor_F Writes: 3242 KB
+            SyncAdapterThre Writes: 112 KB
+            Thread-12 Writes: 100 KB
+            Thread-13 Writes: 96 KB
+            Thread-14 Writes: 108 KB
+            Thread-15 Writes: 104 KB
+            Thread-16 Writes: 116 KB
+            Thread-17 Writes: 128 KB
+            Thread-18 Writes: 136 KB
+            Thread-19 Writes: 128 KB
+            Thread-20 Writes: 108 KB
+            Total Writes: 4690 KB i_size: 512 KB
+File: /data/com.google.android.gms/databases/playlog.db
+            lowpool[11] Writes: 11760 KB
+            Total Writes: 11760 KB i_size: 426 KB
+File: /data/com.google.android.gms/databases/playlog.db-wal
+            lowpool[11] Writes: 10884 KB
+            Total Writes: 10884 KB i_size: 426 KB
+File: /data/com.google.android.gm/shared_prefs/Account-android.smoke.fast@gmail.com.xml
+            ogle.android.gm Writes: 2 KB
+            queued-work-loo Writes: 11 KB
+            Total Writes: 13 KB i_size: 0 bytes
+File: /data/com.google.android.gm/shared_prefs/Gmail.xml
+            ogle.android.gm Writes: 1 KB
+            queued-work-loo Writes: 4 KB
+            Total Writes: 5 KB i_size: 0 bytes
+File: /data/com.google.android.gm/shared_prefs/Impressions-android.smoke.fast@gmail.com.xml
+            queued-work-loo Writes: 0 KB
+            Total Writes: 0 KB i_size: 0 bytes
+File: /data/com.google.android.gm/shared_prefs/MailAppProvider.xml
+            ogle.android.gm Writes: 10 KB
+            queued-work-loo Writes: 97 KB
+            Total Writes: 107 KB i_size: 4 KB
+File: /data/com.google.android.gm/shared_prefs/SmartreplyEvents-android.smoke.fast@gmail.com.xml
+            queued-work-loo Writes: 1 KB
+            Total Writes: 1 KB i_size: 0 bytes
+File: /misc/profiles/cur/0/com.android.systemui/primary.prof
+            Profile_Saver Writes: 10 KB
+            Total Writes: 10 KB i_size: 8 bytes
+File: /system/appops.xml
+            AsyncTask_#7 Writes: 11 KB
+            Total Writes: 11 KB i_size: 8 KB
+File: /system_ce/0/recent_tasks/20_task.xml
+            LazyTaskWriterT Writes: 2 KB
+            Total Writes: 2 KB i_size: 1 KB
+File: /system/job/jobs.xml
+            android.io Writes: 127 KB
+            Total Writes: 127 KB i_size: 8 KB
+File: /system/screen_on_time
+            android.bg Writes: 0 KB
+            Total Writes: 0 KB i_size: 0 bytes
+File: /system/usagestats/0/daily/1499287200538
+            android.bg Writes: 41 KB
+            Total Writes: 41 KB i_size: 8 KB
+File: /system/usagestats/0/monthly/1499287200538
+            android.bg Writes: 5 KB
+            Total Writes: 5 KB i_size: 4 KB
+File: /system/usagestats/0/weekly/1499287200538
+            android.bg Writes: 5 KB
+            Total Writes: 5 KB i_size: 4 KB
+File: /system/usagestats/0/yearly/1499287200538
+            android.bg Writes: 5 KB
+            Total Writes: 5 KB i_size: 4 KB
+File: /system/users/0/app_idle_stats.xml
+            android.bg Writes: 9 KB
+            Total Writes: 9 KB i_size: 8 KB
+File: /system/users/0/settings_secure.xml
+            SettingsProvide Writes: 12 KB
+            Total Writes: 12 KB i_size: 8 KB
+Grand Total File DATA KB Writes 43184
+PID VIEW:
+PID: android.bg
+            /system/screen_on_time Writes: 0 KB i_size: 0 bytes
+            /system/usagestats/0/daily/1499287200538 Writes: 41 KB i_size: 8 KB
+            /system/usagestats/0/monthly/1499287200538 Writes: 5 KB i_size: 4 KB
+            /system/usagestats/0/weekly/1499287200538 Writes: 5 KB i_size: 4 KB
+            /system/usagestats/0/yearly/1499287200538 Writes: 5 KB i_size: 4 KB
+            /system/users/0/app_idle_stats.xml Writes: 9 KB i_size: 8 KB
+            Total Writes: 65 KB
+PID: android.io
+            /system/job/jobs.xml Writes: 127 KB i_size: 8 KB
+            Total Writes: 127 KB
+PID: AsyncQueryWorke
+            /data/com.google.android.gm/databases/mailstore.android.smoke.fast@gmail.com.db Writes: 224 KB i_size: 575 KB
+            /data/com.google.android.gm/databases/mailstore.android.smoke.fast@gmail.com.db-wal Writes: 48 KB i_size: 575 KB
+            Total Writes: 272 KB
+PID: AsyncTask_#1
+            /data/com.google.android.gm/databases/mailstore.android.smoke.fast@gmail.com.db Writes: 264 KB i_size: 512 KB
+            /data/com.google.android.gm/databases/mailstore.android.smoke.fast@gmail.com.db-shm Writes: 0 KB i_size: 4 KB
+            /data/com.google.android.gm/databases/mailstore.android.smoke.fast@gmail.com.db-wal Writes: 76 KB i_size: 512 KB
+            Total Writes: 340 KB
+PID: AsyncTask_#2
+            /data/com.google.android.gm/databases/EmailProvider.db Writes: 49 KB i_size: 8 KB
+            /data/com.google.android.gm/databases/EmailProvider.db-journal Writes: 25 KB i_size: 8 KB
+            /data/com.google.android.gm/databases/mailstore.android.smoke.fast@gmail.com.db-wal Writes: 108 KB i_size: 512 KB
+            Total Writes: 182 KB
+PID: AsyncTask_#3
+            /data/com.google.android.gm/databases/mailstore.android.smoke.fast@gmail.com.db-wal Writes: 64 KB i_size: 512 KB
+            Total Writes: 64 KB
+PID: AsyncTask_#7
+            /system/appops.xml Writes: 11 KB i_size: 8 KB
+            Total Writes: 11 KB
+PID: Background_task
+            /data/com.google.android.gm/cache/android.smoke.fast@gmail.com/jelly-bean-1.png Writes: 79 KB i_size: 8 KB
+            /data/com.google.android.gm/cache/android.smoke.fast@gmail.com/PANO_20120828_015822-1.jpg Writes: 23 KB i_size: 8 KB
+            /data/com.google.android.gm/databases/mailstore.android.smoke.fast@gmail.com.db-wal Writes: 16 KB i_size: 512 KB
+            Total Writes: 118 KB
+PID: Binder8274_1
+            /data/com.android.providers.downloads/databases/downloads.db Writes: 73 KB i_size: 8 KB
+            /data/com.android.providers.downloads/databases/downloads.db-journal Writes: 37 KB i_size: 8 KB
+            Total Writes: 110 KB
+PID: Binder8274_3
+            /data/com.android.providers.downloads/databases/downloads.db Writes: 33 KB i_size: 8 KB
+            /data/com.android.providers.downloads/databases/downloads.db-journal Writes: 17 KB i_size: 8 KB
+            Total Writes: 50 KB
+PID: Binder8274_4
+            /data/com.android.providers.downloads/databases/downloads.db Writes: 106 KB i_size: 8 KB
+            /data/com.android.providers.downloads/databases/downloads.db-journal Writes: 54 KB i_size: 8 KB
+            Total Writes: 160 KB
+PID: CookieMonsterBa
+            /data/com.google.android.gm/app_webview/Cookies Writes: 358 KB i_size: 5 KB
+            /data/com.google.android.gm/app_webview/Cookies-journal Writes: 188 KB i_size: 5 KB
+            Total Writes: 546 KB
+PID: LazyTaskWriterT
+            /system_ce/0/recent_tasks/20_task.xml Writes: 2 KB i_size: 1 KB
+            Total Writes: 2 KB
+PID: lowpool[11]
+            /data/com.google.android.gms/databases/playlog.db Writes: 11760 KB i_size: 426 KB
+            /data/com.google.android.gms/databases/playlog.db-wal Writes: 10884 KB i_size: 426 KB
+            Total Writes: 22644 KB
+PID: NetworkCursor_F
+            /data/com.google.android.gm/app_sslcache/mail.google.com.443 Writes: 5 KB i_size: 4 KB
+            /data/com.google.android.gm/databases/mailstore.android.smoke.fast@gmail.com.db Writes: 4866 KB i_size: 512 KB
+            /data/com.google.android.gm/databases/mailstore.android.smoke.fast@gmail.com.db-wal Writes: 3242 KB i_size: 512 KB
+            Total Writes: 8113 KB
+PID: ogle.android.gm
+            /data/com.google.android.gm/shared_prefs/Account-android.smoke.fast@gmail.com.xml Writes: 2 KB i_size: 0 bytes
+            /data/com.google.android.gm/shared_prefs/Gmail.xml Writes: 1 KB i_size: 0 bytes
+            /data/com.google.android.gm/shared_prefs/MailAppProvider.xml Writes: 10 KB i_size: 4 KB
+            Total Writes: 13 KB
+PID: Profile_Saver
+            /misc/profiles/cur/0/com.android.systemui/primary.prof Writes: 10 KB i_size: 8 bytes
+            Total Writes: 10 KB
+PID: queued-work-loo
+            /data/com.google.android.gm/shared_prefs/Account-android.smoke.fast@gmail.com.xml Writes: 11 KB i_size: 0 bytes
+            /data/com.google.android.gm/shared_prefs/Gmail.xml Writes: 4 KB i_size: 0 bytes
+            /data/com.google.android.gm/shared_prefs/Impressions-android.smoke.fast@gmail.com.xml Writes: 0 KB i_size: 0 bytes
+            /data/com.google.android.gm/shared_prefs/MailAppProvider.xml Writes: 97 KB i_size: 4 KB
+            /data/com.google.android.gm/shared_prefs/SmartreplyEvents-android.smoke.fast@gmail.com.xml Writes: 1 KB i_size: 0 bytes
+            Total Writes: 113 KB
+PID: sAsyncHandlerTh
+            /data/com.android.providers.downloads/databases/downloads.db Writes: 33 KB i_size: 8 KB
+            /data/com.android.providers.downloads/databases/downloads.db-journal Writes: 17 KB i_size: 8 KB
+            Total Writes: 50 KB
+PID: SettingsProvide
+            /system/users/0/settings_secure.xml Writes: 12 KB i_size: 8 KB
+            Total Writes: 12 KB
+PID: SyncAdapterThre
+            /data/com.google.android.gm/databases/mailstore.android.smoke.fast@gmail.com.db-wal Writes: 112 KB i_size: 512 KB
+            Total Writes: 112 KB
+PID: Thread-12
+            /data/com.google.android.gm/databases/mailstore.android.smoke.fast@gmail.com.db-wal Writes: 100 KB i_size: 512 KB
+            Total Writes: 100 KB
+PID: Thread-13
+            /data/com.google.android.gm/databases/mailstore.android.smoke.fast@gmail.com.db Writes: 292 KB i_size: 512 KB
+            /data/com.google.android.gm/databases/mailstore.android.smoke.fast@gmail.com.db-wal Writes: 96 KB i_size: 512 KB
+            Total Writes: 388 KB
+PID: Thread-14
+            /data/com.google.android.gm/databases/mailstore.android.smoke.fast@gmail.com.db-wal Writes: 108 KB i_size: 512 KB
+            Total Writes: 108 KB
+PID: Thread-15
+            /data/com.google.android.gm/databases/mailstore.android.smoke.fast@gmail.com.db Writes: 280 KB i_size: 512 KB
+            /data/com.google.android.gm/databases/mailstore.android.smoke.fast@gmail.com.db-wal Writes: 104 KB i_size: 512 KB
+            Total Writes: 384 KB
+PID: Thread-16
+            /data/com.google.android.gm/databases/mailstore.android.smoke.fast@gmail.com.db Writes: 320 KB i_size: 512 KB
+            /data/com.google.android.gm/databases/mailstore.android.smoke.fast@gmail.com.db-wal Writes: 116 KB i_size: 512 KB
+            Total Writes: 436 KB
+PID: Thread-17
+            /data/com.google.android.gm/databases/mailstore.android.smoke.fast@gmail.com.db-wal Writes: 128 KB i_size: 512 KB
+            Total Writes: 128 KB
+PID: Thread-18
+            /data/com.google.android.gm/databases/mailstore.android.smoke.fast@gmail.com.db-wal Writes: 136 KB i_size: 512 KB
+            Total Writes: 136 KB
+PID: Thread-19
+            /data/com.google.android.gm/databases/mailstore.android.smoke.fast@gmail.com.db-wal Writes: 128 KB i_size: 512 KB
+            Total Writes: 128 KB
+PID: Thread-20
+            /data/com.google.android.gm/databases/mailstore.android.smoke.fast@gmail.com.db-wal Writes: 108 KB i_size: 512 KB
+            Total Writes: 108 KB
+PID: Thread-4
+            /data/com.android.providers.downloads/databases/downloads.db Writes: 66 KB i_size: 8 KB
+            /data/com.android.providers.downloads/databases/downloads.db-journal Writes: 34 KB i_size: 8 KB
+            /data/com.android.providers.downloads/files/downloadfile.bin Writes: 79 KB i_size: 79 KB
+            Total Writes: 179 KB
+PID: Thread-5
+            /data/com.android.providers.downloads/databases/downloads.db Writes: 49 KB i_size: 8 KB
+            /data/com.android.providers.downloads/databases/downloads.db-journal Writes: 25 KB i_size: 8 KB
+            /data/com.android.providers.downloads/files/downloadfile.bin Writes: 23 KB i_size: 23 KB
+            Total Writes: 97 KB
+Grand Total File DATA KB Writes 35306
+Total (ALL) Write KB mmcblk0 = 23520
+WRITE DELTA: Total Blockdev Writes KB - Total File Data Writes KB = -11786 KB
+Total (ALL) Write IOs mmcblk0 = 1829
+Debug Grand Total KB WRITTEN 20366
diff --git a/ioblame/ioblame.sh b/ioblame/ioblame.sh
new file mode 100755 (executable)
index 0000000..ec907ab
--- /dev/null
@@ -0,0 +1,424 @@
+#!/bin/sh -u
+
+parseoptions() {
+    trace_reads=false
+    trace_writes=false
+
+    while [ $# -ge 1 ]
+    do
+       case $1 in
+           -r)
+               trace_reads=true
+               ;;
+           -w)
+               trace_writes=true
+               ;;
+           *)
+               usage
+               ;;
+           esac
+       shift
+    done
+}
+
+usage() {
+    echo "Usage: $0 [-r|-w]"
+    exit 1
+}
+
+getmodel() {
+    model=`adb shell getprop ro.product.name`
+    # Releases are inconsistent with various trailing characters, remove them all
+    model=`echo $model | sed 's/[ \t\r\n]*$//' `
+    echo Found $model Device
+
+    case $model in
+       aosp_gobo)
+           get_go_devnames
+            ;;
+       marlin | sailfish)
+           get_marlin_sailfish_devnames
+           ;;
+       angler)
+           get_angler_devnames
+           ;;
+       bullhead)
+           get_bullhead_devnames
+           ;;
+       volantis | volantisg)
+           get_volantis_devnames
+           ;;
+       *)
+           echo Unknown Device $model
+           exit 1
+           ;;
+    esac
+}
+
+get_go_devnames () {
+    # Hardcoding all of the mmcblk0 device for now
+    block_device=mmcblk0
+    bdev_set=true
+}
+
+get_volantis_devnames() {
+    bdev_set=true
+    block_device=mmcblk0
+}
+
+get_bullhead_devnames() {
+    bdev_set=true
+    block_device=mmcblk0
+}
+
+get_marlin_sailfish_devnames() {
+    bdev_set=true
+    block_device=sda
+}
+
+get_angler_devnames () {
+    # Get the underlying bdev from the "by-name" mapping
+    block_device=`adb shell 'find /dev/block/platform -name by-name | xargs ls -l' | grep system | awk '{ print $10 }' `
+    # extract the last component of the absolute device pathname we got above
+    block_device=`echo $block_device | awk 'BEGIN { FS ="/" } ; { print $4 }' | sed 's/p.*//g' `
+    bdev_set=true
+}
+
+disk_stats_before() {
+    if [ $bdev_set == true ]; then
+       DISKSTATS=`adb shell 'cat /proc/diskstats' | fgrep -w $block_device `
+       if [ $trace_reads == true ]; then
+           # Get BEFORE read stats for bdev
+           BEFORE_RD_IOS=`echo $DISKSTATS | awk '{ print $4 }' `
+           BEFORE_RD_SECTORS=`echo $DISKSTATS | awk '{ print $6 }' `
+       fi
+       if [ $trace_writes == true ]; then
+           # Get BEFORE write stats for bdev
+           BEFORE_WR_IOS=`echo $DISKSTATS | awk '{ print $8 }' `
+           BEFORE_WR_SECTORS=`echo $DISKSTATS | awk '{ print $10 }' `
+       fi
+    fi
+}
+
+disk_stats_after() {
+    if [ $bdev_set == true ]; then
+       DISKSTATS=`adb shell 'cat /proc/diskstats' | fgrep -w $block_device `
+       if [ $trace_reads == true ]; then
+           # Get AFTER read stats for bdev
+           AFTER_RD_IOS=`echo $DISKSTATS | awk '{ print $4 }' `
+           AFTER_RD_SECTORS=`echo $DISKSTATS | awk '{ print $6 }' `
+       fi
+       if [ $trace_writes == true ]; then
+           # Get BEFORE write stats for bdev
+           AFTER_WR_IOS=`echo $DISKSTATS | awk '{ print $8 }' `
+           AFTER_WR_SECTORS=`echo $DISKSTATS | awk '{ print $10 }' `
+       fi
+    fi
+}
+
+disk_stats_delta_rd() {
+    file_data_KB=$1
+    if [ $bdev_set == true ]; then
+       # Sectors to KB
+       READ_KB=`expr $AFTER_RD_SECTORS - $BEFORE_RD_SECTORS`
+       READ_KB=`expr $READ_KB / 2`
+       echo "Total (ALL) Read KB $block_device = "$READ_KB
+       BLOCK_MINUS_FILE=`expr $READ_KB - $file_data_KB`
+       echo "READ DELTA: Total Blockdev Reads KB - Total File Data Reads KB = "$BLOCK_MINUS_FILE KB
+       echo "Total (ALL) Read IOs $block_device = "`expr $AFTER_RD_IOS - $BEFORE_RD_IOS`
+    fi
+}
+
+disk_stats_delta_wr() {
+    file_data_KB=$1
+    if [ $bdev_set == true ]; then
+       # Sectors to KB
+       WRITE_KB=`expr $AFTER_WR_SECTORS - $BEFORE_WR_SECTORS`
+       WRITE_KB=`expr $WRITE_KB / 2`
+       echo "Total (ALL) Write KB $block_device = "$WRITE_KB
+       BLOCK_MINUS_FILE=`expr $WRITE_KB - $file_data_KB`
+       echo "WRITE DELTA: Total Blockdev Writes KB - Total File Data Writes KB = "$BLOCK_MINUS_FILE KB
+       echo "Total (ALL) Write IOs $block_device = "`expr $AFTER_WR_IOS - $BEFORE_WR_IOS`
+    fi
+}
+
+# For good measure clean up traces and reenable traces
+clean_up_tracepoints() {
+    # This is a good point to check if the Android FS tracepoints are enabled in the
+    # kernel or not
+    tracepoint_exists=`adb shell 'if [ -d /sys/kernel/debug/tracing/events/android_fs ]; then echo 0; else echo 1; fi' `
+    if [ $tracepoint_exists == 1 ]; then
+       echo "Android FS tracepoints not enabled in kernel. Exiting..."
+       exit 1
+    fi
+    adb shell 'echo 0 > /sys/kernel/debug/tracing/tracing_on'
+    adb shell 'echo 0 > /sys/kernel/debug/tracing/trace'
+    if [ $trace_reads == true ]; then
+       adb shell 'echo 1 > /sys/kernel/debug/tracing/events/android_fs/android_fs_dataread_start/enable'
+       adb shell 'echo 1 > /sys/kernel/debug/tracing/events/android_fs/android_fs_dataread_end/enable'
+    fi
+    if [ $trace_writes == true ]; then
+       adb shell 'echo 1 > /sys/kernel/debug/tracing/events/android_fs/android_fs_datawrite_start/enable'
+       adb shell 'echo 1 > /sys/kernel/debug/tracing/events/android_fs/android_fs_datawrite_end/enable'
+    fi
+    adb shell 'echo 1 > /sys/kernel/debug/tracing/tracing_on'
+}
+
+# stream trace out of trace_pipe
+# Start this in the background ('&')
+streamtrace_start() {
+    adb shell cat /sys/kernel/debug/tracing/trace_pipe > trace_saved
+}
+
+# When signal is received, the trace_pipe reader will get killed
+# Call this (just to make sure anyway)
+streamtrace_end() {
+    ps_line=`ps -ef | grep trace_pipe | grep adb `
+    if [ $? == 0 ]; then
+       echo Killing `echo $ps_line | awk '{s = ""; for (i=8; i <= NF ; i++) s = s $i " "; print s}' `
+       kill `echo $ps_line | awk '{print $2}' `
+    fi
+}
+
+copyout_trace() {
+    streamtrace_end
+    if [ $trace_reads == true ]; then
+       adb shell 'echo 0 > /sys/kernel/debug/tracing/events/android_fs/android_fs_dataread_start/enable'
+       adb shell 'echo 0 > /sys/kernel/debug/tracing/events/android_fs/android_fs_dataread_end/enable'
+    fi
+    if [ $trace_writes == true ]; then
+       adb shell 'echo 0 > /sys/kernel/debug/tracing/events/android_fs/android_fs_datawrite_start/enable'
+       adb shell 'echo 0 > /sys/kernel/debug/tracing/events/android_fs/android_fs_datawrite_end/enable'
+    fi
+    adb shell 'echo 0 > /sys/kernel/debug/tracing/tracing_on'
+}
+
+prep_tracefile_common() {
+    cp trace_saved $infile
+    # Strip away all the extraneous stuff first
+    fgrep $1 $infile | sed 's/^.* \[.*\] //' | sed s/://g | sed s/,//g > foo
+    mv foo $infile
+}
+
+prep_tracefile_rd() {
+    prep_tracefile_common android_fs_dataread
+    # Strip away unnecessary stuff so we can compute latencies easily
+    fgrep android_fs_dataread_start $infile > foo0
+    # Throw away everything upto and including android_fs_dataread:
+    cat foo0 | sed -n -e 's/^.*android_fs_dataread_start //p' > foo1
+    mv foo1 $infile
+    # At this stage, $infile should the following format :
+    # entry_name <filename> offset <offset> bytes <bytes> cmdline <cmdline> pid <pid> i_size <i_size> ino <ino>
+    rm foo0
+}
+
+# Latencies not supported for Writes. 'Write End' is just when the data has been
+# written back to page cache.
+prep_tracefile_wr() {
+    prep_tracefile_common android_fs_datawrite
+    fgrep android_fs_datawrite_start $infile > foo0
+    # Throw away everything upto and including android_fs_datawrite:
+    cat foo0 | sed -n -e 's/^.*android_fs_datawrite_start //p' > foo1
+    mv foo1 $infile
+    # At this stage, $infile should the following format :
+    # entry_name <filename> offset <offset> bytes <bytes> cmdline <cmdline> pid <pid> i_size <i_size> ino <ino>
+    rm foo0
+}
+
+get_unique_files() {
+    # Sort first by filename, then by pid
+    cat $infile | sed s/,//g  | sort -d -k2,2 -k8,8 > foo1
+    mv foo1 $infile
+    # $infile now contains lines sorted by <filename, pid>
+    # How many unique files are there ?
+    cat $infile | awk '{ print $2 }' > foo1
+    cat foo1 | uniq > uniq_files
+    rm foo1
+}
+
+get_unique_pids_byfile() {
+    # How many unique pids are there reading this file ?
+    cat $1 | awk '{ print $8 }' > foo1
+    cat foo1 | uniq > uniq_pids_byfile
+    rm foo1
+}
+
+get_unique_pids() {
+    # Sort first by pid, then by filename
+    cat $infile | sed s/,//g  | sort -d -k8,8 -k2,2 > foo1
+    mv foo1 $infile
+    # $infile now contains lines sorted by <pid, filename>
+    # How many unique pids are there ?
+    cat $infile | awk '{ print $8 }' > foo1
+    cat foo1 | uniq > uniq_pids
+    rm foo1
+}
+
+get_unique_files_bypid() {
+    # How many unique files are there read by this pid ?
+    cat $1 | awk '{ print $2 }' > foo1
+    cat foo1 | uniq > uniq_files_bypid
+    rm foo1
+}
+
+catch_sigint()
+{
+    echo "signal INT received, killing streaming trace capture"
+    streamtrace_end
+}
+
+
+prep_to_do_something() {
+#    adb shell "am force-stop com.android.chrome"
+#    adb shell "am force-stop com.google.android.gm"
+    adb shell 'echo 3 > /proc/sys/vm/drop_caches'
+    sleep 1
+}
+
+do_something() {
+    # Arrange things so that the first SIGINT will kill the
+    # child process (sleep), but will return to the parent.
+    trap 'catch_sigint'  INT
+    echo "OK to kill sleep when test is done"
+    sleep 30d
+#    adb shell "am start -W -n com.android.chrome/com.google.android.apps.chrome.Main"
+#    adb shell "am start -W -n com.google.android.gm/.ConversationListActivityGmail"
+}
+
+# Get the aggregate list of files read/written. For each file, break up the IOs by pid
+process_files() {
+    read_write=$1
+    get_unique_files
+    list_of_files=`cat uniq_files`
+    # $list_of_files is a list of all the files involved in IO
+    #
+    # Loop over each file that was involved in IO
+    # Find all the pids doing IO on that file
+    # Aggregate the IO done by each pid on that file and dump it out
+    #
+    grand_total_KB=0
+    for i in $list_of_files
+    do
+       echo "File: $i"
+       total_file_KB=0
+       # Get just the tracepoints for this file
+       fgrep -w "$i" $infile > subtrace
+       # Get all the pids doing IO on this file
+       get_unique_pids_byfile subtrace
+       list_of_pids=`cat uniq_pids_byfile`
+       # $list_of_pids is a list of all the pids doing IO to file $i
+       for j in $list_of_pids
+       do
+           echo -n "            $j $read_write: "
+           pid_KB=`fgrep -w "$j" subtrace | awk '{ bytes += $6 } END { print bytes }' `
+           pid_KB=`expr $pid_KB / 1024`
+           echo "$pid_KB KB"
+           total_file_KB=`expr $total_file_KB + $pid_KB`
+       done
+       i_size=`tail -n1 subtrace  | awk '{ if ($12 > 1024) printf "%d KB", ($12/1024); else printf "%d bytes", $12; }' `
+       echo "            Total $read_write: $total_file_KB KB i_size: $i_size"
+       grand_total_KB=`expr $grand_total_KB + $total_file_KB`
+    done
+    echo "Grand Total File DATA KB $read_write $grand_total_KB"
+}
+
+# Get the aggregate list of pids. For each pid, break up the IOs by file
+process_pids() {
+    read_write=$1
+    get_unique_pids
+    list_of_pids=`cat uniq_pids`
+    # $list_of_pids is a list of all the pids involved in IO
+    #
+    # Loop over each pid that was involved in IO
+    # Find all the files the pid was doing IO on
+    # Aggregate the IO done by the pid for each file and dump it out
+    #
+    grand_total_KB=0
+    for i in $list_of_pids
+    do
+       echo "PID: $i"
+       total_pid_KB=0
+       # Get just the tracepoints for this pid
+       fgrep -w "$i" $infile > subtrace
+       # Get all the pids doing IO on this file
+       get_unique_files_bypid subtrace
+       list_of_files=`cat uniq_files_bypid`
+       # $list_of_files is a list of all the files IO'ed by this pid
+       for j in $list_of_files
+       do
+           i_size=`fgrep -w "$j" subtrace | tail -n1 | awk '{ if ($12 > 1024) printf "%d KB", ($12/1024); else printf "%d bytes", $12; }' `
+           file_KB=`fgrep -w "$j" subtrace | awk '{ bytes += $6 } END { print bytes }' `
+           file_KB=`expr $file_KB / 1024`
+           echo "            $j $read_write: $file_KB KB i_size: $i_size"
+           total_pid_KB=`expr $total_pid_KB + $file_KB`
+       done
+       echo "            Total $read_write: $total_pid_KB KB"
+       grand_total_KB=`expr $grand_total_KB + $total_pid_KB`
+    done
+    echo "Grand Total File DATA KB $read_write $grand_total_KB"
+}
+
+# main() starts here :
+
+if [ $# -lt 1 ]; then
+    usage
+fi
+
+bdev_set=false
+infile=tracefile.$$
+
+parseoptions $@
+adb root && sleep 2
+getmodel
+
+prep_to_do_something
+
+clean_up_tracepoints
+disk_stats_before
+# Start streaming the trace into the tracefile
+streamtrace_start &
+
+do_something
+
+streamtrace_end
+disk_stats_after
+
+copyout_trace
+
+if [ $trace_reads == true ]; then
+    echo
+    echo "READS :"
+    echo "_______"
+    echo
+    prep_tracefile_rd
+    # Get file specific stats - for each file, how many pids read that file ?
+    echo "FILE VIEW:"
+    process_files Reads
+    # Get pid specific stats - for each pid, what files do they do IO on ?
+    echo "PID VIEW:"
+    process_pids Reads
+    disk_stats_delta_rd $grand_total_KB
+
+    debug_FileKB_rd=`cat $infile | awk '{ bytes += $6 } END { printf "%d", bytes/1024 }' `
+    echo Debug Grand Total KB READ $debug_FileKB_rd
+fi
+
+if [ $trace_writes == true ]; then
+    echo
+    echo "Writes :"
+    echo "_______"
+    echo
+    prep_tracefile_wr
+    # Get file specific stats - for each file, how many pids read that file ?
+    echo "FILE VIEW:"
+    process_files Writes
+    # Get pid specific stats - for each pid, what files do they do IO on ?
+    echo "PID VIEW:"
+    process_pids Writes
+    disk_stats_delta_wr $grand_total_KB
+
+    debug_FileKB_wr=`cat $infile | awk '{ bytes += $6 } END { printf "%d", bytes/1024 }' `
+    echo Debug Grand Total KB WRITTEN $debug_FileKB_wr
+fi
+
+rm -rf tracefile* uniq_* subtrace trace_saved
index 5923343..963e22f 100644 (file)
 # limitations under the License.
 
 import adb
+import argparse
 import os
 import unittest
 import fastboot
 import subprocess
+import sys
+
+# Default values for arguments
+device_type = "phone"
 
 class ShellTest(unittest.TestCase):
-    def __init__(self, *args, **kwargs):
-        super(ShellTest, self).__init__(*args, **kwargs)
-        self.fastboot = fastboot.FastbootDevice()
+    @classmethod
+    def setUpClass(cls):
+        cls.fastboot = fastboot.FastbootDevice()
 
     def exists_validvals(self, varname, varlist, validlist):
         self.assertIn(varname, varlist)
@@ -71,6 +76,20 @@ class ShellTest(unittest.TestCase):
             self.fail("%s (%s) is not an integer" % (varname, val))
         return num
 
+    def get_slotcount(self):
+        slotcount = 0
+        try:
+            val = self.fastboot.getvar("slot-count")
+            if val != None:
+                slotcount = int(val)
+        except ValueError:
+            self.fail("slot-count (%s) is not an integer" % val)
+        except subprocess.CalledProcessError:
+            print "Does not appear to be an A/B device."
+        if not slotcount:
+            print "Does not appear to be an A/B device."
+        return slotcount
+
     def test_getvarall(self):
         """Tests that required variables are reported by getvar all"""
 
@@ -137,13 +156,7 @@ class ShellTest(unittest.TestCase):
         maxdl = self.get_exists_integer("max-download-size", 16)
         self.assertGreater(maxdl, 0)
 
-        slotcount = 0
-        try:
-            slotcountString = self.fastboot.getvar("slot-count")
-            if slotcountString != None:
-                slotcount = int(slotcountString)
-        except ValueError:
-            self.fail("slot-count (%s) is not an integer" % slotcountString)
+        slotcount = self.get_slotcount()
         if slotcount  > 1:
             # test for A/B variables
             slots = [chr(slotnum+ord('a')) for slotnum in range(slotcount)]
@@ -154,45 +167,59 @@ class ShellTest(unittest.TestCase):
                 self.get_exists_yes_no("slot-unbootable:"+slot)
                 self.get_exists_yes_no("slot-successful:"+slot)
                 self.get_exists_integer("slot-retry-count:"+slot)
-        else:
-            print "This does not appear to be an A/B device."
 
     def test_setactive(self):
         """Tests that A/B devices can switch to each slot, and the change persists over a reboot."""
+        # Test invalid if not an A/B device
+        slotcount = self.get_slotcount()
+        if not slotcount:
+            return
 
-        slotcount = 0
-        try:
-            val = self.fastboot.getvar("slot-count")
-            if val != None:
-                slotcount = int(val)
-        except ValueError:
-            self.fail("slot-count (%s) is not an integer" % val)
-        except subprocess.CalledProcessError:
-            print "Does not appear to be an A/B device."
         maxtries = 0
-        if slotcount > 1:
-            slots = [chr(slotnum+ord('a')) for slotnum in range(slotcount)]
-            for slot in slots:
-                self.fastboot.set_active(slot)
-                self.assertEqual(slot, self.fastboot.getvar("current-slot"))
-                self.assertEqual("no", self.fastboot.getvar("slot-unbootable:"+slot))
-                self.assertEqual("no", self.fastboot.getvar("slot-successful:"+slot))
-                retry = self.get_exists_integer("slot-retry-count:"+slot)
-                if maxtries == 0:
-                   maxtries = retry
-                else:
-                   self.assertEqual(maxtries, retry)
-                self.fastboot.reboot(True)
-                self.assertEqual(slot, self.fastboot.getvar("current-slot"))
-                self.assertEqual("no", self.fastboot.getvar("slot-unbootable:"+slot))
-                self.assertEqual("no", self.fastboot.getvar("slot-successful:"+slot))
-                retry = self.get_exists_integer("slot-retry-count:"+slot)
-                if maxtries == 0:
-                   maxtries = retry
-                else:
-                   self.assertEqual(maxtries, retry)
-        else:
-            print "Does not appear to be an A/B device."
+        slots = [chr(slotnum+ord('a')) for slotnum in range(slotcount)]
+        for slot in slots:
+            self.fastboot.set_active(slot)
+            self.assertEqual(slot, self.fastboot.getvar("current-slot"))
+            self.assertEqual("no", self.fastboot.getvar("slot-unbootable:"+slot))
+            self.assertEqual("no", self.fastboot.getvar("slot-successful:"+slot))
+            retry = self.get_exists_integer("slot-retry-count:"+slot)
+            if maxtries == 0:
+                maxtries = retry
+            else:
+                self.assertEqual(maxtries, retry)
+            self.fastboot.reboot(True)
+            self.assertEqual(slot, self.fastboot.getvar("current-slot"))
+            self.assertEqual("no", self.fastboot.getvar("slot-unbootable:"+slot))
+            self.assertEqual("no", self.fastboot.getvar("slot-successful:"+slot))
+            retry = self.get_exists_integer("slot-retry-count:"+slot)
+            if maxtries == 0:
+                maxtries = retry
+            else:
+                self.assertEqual(maxtries, retry)
+
+    def test_hasslot(self):
+        """Tests that A/B devices report partitions that have slots."""
+        # Test invalid if not an A/B device
+        if not self.get_slotcount():
+            return
+
+        self.assertEqual("yes", self.fastboot.getvar("has-slot:system"))
+        self.assertEqual("yes", self.fastboot.getvar("has-slot:boot"))
+
+        # Additional partition on AndroidThings (IoT) devices
+        if device_type == "iot":
+            self.assertEqual("yes", self.fastboot.getvar("has-slot:oem"))
 
 if __name__ == '__main__':
+    parser = argparse.ArgumentParser()
+    parser.add_argument("--device-type", default="phone",
+                        help="Type of device ('phone' or 'iot').")
+    parser.add_argument("extra_args", nargs="*")
+    args = parser.parse_args()
+
+    if args.device_type.lower() not in ("phone", "iot"):
+        raise ValueError("Unsupported device type '%s'." % args.device_type)
+    device_type = args.device_type.lower()
+
+    sys.argv[1:] = args.extra_args
     unittest.main(verbosity=3)
index 0c87107..44d7931 100644 (file)
@@ -51,7 +51,7 @@ LOCAL_MODULE_STEM_64 := $(LOCAL_MODULE)64
 LOCAL_SHARED_LIBRARIES := libbase
 LOCAL_STATIC_LIBRARIES := libgtest libgtest_main
 
-LOCAL_COMPATIBILITY_SUITE := cts
+LOCAL_COMPATIBILITY_SUITE := cts vts
 LOCAL_CTS_TEST_PACKAGE := android.kernel.config
 include $(BUILD_CTS_EXECUTABLE)