summaryrefslogtreecommitdiffstats
path: root/init/init_parser.cpp
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2015-10-09 14:03:14 -0700
committerElliott Hughes <enh@google.com>2015-10-09 14:03:14 -0700
commit1946d3bca8a3b05d2a527606c06948882940287c (patch)
treea875c491199aaa246acc308666f96f5e2cd7d159 /init/init_parser.cpp
parentdf345a8aacdb08891b225e8543d7fb0fdd3c9821 (diff)
downloadcore-1946d3bca8a3b05d2a527606c06948882940287c.tar.gz
core-1946d3bca8a3b05d2a527606c06948882940287c.tar.bz2
core-1946d3bca8a3b05d2a527606c06948882940287c.zip
init shouldn't call DumpState by default.
The cost of generating and throwing away a bunch of stuff that no one normally sees is high enough to be worth avoiding. Here's AOSP ToT on N9... init: (Parsing /system/etc/init/atrace.rc took 0.0112s.) init: (Parsing /system/etc/init/bootanim.rc took 0.0094s.) init: (Parsing /system/etc/init/crash_reporter.rc took 0.0103s.) init: (Parsing /system/etc/init/debuggerd.rc took 0.0090s.) init: (Parsing /system/etc/init/debuggerd64.rc took 0.0085s.) init: (Parsing /system/etc/init/drmserver.rc took 0.0078s.) init: (Parsing /system/etc/init/dumpstate.rc took 0.0073s.) init: (Parsing /system/etc/init/gatekeeperd.rc took 0.0063s.) init: (Parsing /system/etc/init/installd.rc took 0.0067s.) init: (Parsing /system/etc/init/keystore.rc took 0.0060s.) init: (Parsing /system/etc/init/lmkd.rc took 0.0060s.) init: (Parsing /system/etc/init/logcatd.rc took 0.0059s.) init: (Parsing /system/etc/init/logd.rc took 0.0068s.) init: (Parsing /system/etc/init/mdnsd.rc took 0.0057s.) init: (Parsing /system/etc/init/mediaserver.rc took 0.0064s.) init: (Parsing /system/etc/init/metrics_daemon.rc took 0.0063s.) init: (Parsing /system/etc/init/mtpd.rc took 0.0055s.) init: (Parsing /system/etc/init/netd.rc took 0.0066s.) init: (Parsing /system/etc/init/perfprofd.rc took 0.0057s.) init: (Parsing /system/etc/init/racoon.rc took 0.0054s.) init: (Parsing /system/etc/init/rild.rc took 0.0061s.) init: (Parsing /system/etc/init/servicemanager.rc took 0.0063s.) init: (Parsing /system/etc/init/surfaceflinger.rc took 0.0061s.) init: (Parsing /system/etc/init/uncrypt.rc took 0.0068s.) init: (Parsing /system/etc/init/vdc.rc took 0.0065s.) init: (Parsing /system/etc/init/vold.rc took 0.0063s.) 0.0112+0.0094+0.0103+0.0090+0.0085+0.0078+0.0073+0.0063+0.0067+0.0060+ 0.0060+0.0059+0.0068+0.0057+0.0064+0.0063+0.0055+0.0066+0.0057+0.0054+ 0.0061+0.0063+0.0061+0.0068+0.0065+0.0063 = 0.1809 And here it is again with the logging disabled: init: (Parsing /system/etc/init/atrace.rc took 0.0021s.) init: (Parsing /system/etc/init/bootanim.rc took 0.0006s.) init: (Parsing /system/etc/init/crash_reporter.rc took 0.0007s.) init: (Parsing /system/etc/init/debuggerd.rc took 0.0004s.) init: (Parsing /system/etc/init/debuggerd64.rc took 0.0005s.) init: (Parsing /system/etc/init/drmserver.rc took 0.0005s.) init: (Parsing /system/etc/init/dumpstate.rc took 0.0005s.) init: (Parsing /system/etc/init/gatekeeperd.rc took 0.0005s.) init: (Parsing /system/etc/init/installd.rc took 0.0005s.) init: (Parsing /system/etc/init/keystore.rc took 0.0013s.) init: (Parsing /system/etc/init/lmkd.rc took 0.0006s.) init: (Parsing /system/etc/init/logcatd.rc took 0.0013s.) init: (Parsing /system/etc/init/logd.rc took 0.0007s.) init: (Parsing /system/etc/init/mdnsd.rc took 0.0005s.) init: (Parsing /system/etc/init/mediaserver.rc took 0.0009s.) init: (Parsing /system/etc/init/metrics_daemon.rc took 0.0008s.) init: (Parsing /system/etc/init/mtpd.rc took 0.0011s.) init: (Parsing /system/etc/init/netd.rc took 0.0005s.) init: (Parsing /system/etc/init/perfprofd.rc took 0.0005s.) init: (Parsing /system/etc/init/racoon.rc took 0.0005s.) init: (Parsing /system/etc/init/rild.rc took 0.0005s.) init: (Parsing /system/etc/init/servicemanager.rc took 0.0005s.) init: (Parsing /system/etc/init/surfaceflinger.rc took 0.0005s.) init: (Parsing /system/etc/init/uncrypt.rc took 0.0005s.) init: (Parsing /system/etc/init/vdc.rc took 0.0005s.) init: (Parsing /system/etc/init/vold.rc took 0.0006s.) 0.0021+0.0006+0.0007+0.0004+0.0005+0.0005+0.0005+0.0005+0.0005+0.0013+ 0.0006+0.0013+0.0007+0.0005+0.0009+0.0008+0.0011+0.0005+0.0005+0.0005+ 0.0005+0.0005+0.0005+0.0005+0.0005+0.0006 = 0.0181 It's less than a second, but one problem is that the cost of the current dumping is proportional to the number of init.rc files, so the more cleanly you factor things, the more it would cost. Change-Id: Id96f59e7d0b082d8cfdba4bdbff43a922ba4eeee
Diffstat (limited to 'init/init_parser.cpp')
-rw-r--r--init/init_parser.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/init/init_parser.cpp b/init/init_parser.cpp
index 02b3985e1..5b8e27b82 100644
--- a/init/init_parser.cpp
+++ b/init/init_parser.cpp
@@ -105,7 +105,10 @@ bool Parser::ParseConfigFile(const std::string& path) {
for (const auto& sp : section_parsers_) {
sp.second->EndFile(path);
}
- DumpState();
+
+ // Turning this on and letting the INFO logging be discarded adds 0.2s to
+ // Nexus 9 boot time, so it's disabled by default.
+ if (false) DumpState();
NOTICE("(Parsing %s took %.2fs.)\n", path.c_str(), t.duration());
return true;