8e8e8db549
logd suffers major performance degradation when persistent (blocking) client reader connects to it (e.g. logcat). The root cause of the degradation is that each time when reader is notified of the arrival of new log entries, the reader commences its search for the new entries from the beginning of the linked list (oldest entries first). This commit alters the search to start from the end of the linked list and work backwards. This dramatically decreases logd CPU consumption when blocking reader is connected, and increases the maximum logging throughput (before the logs start getting lost) by a factor ~ 20. Change-Id: Ib60955ce05544e52a8b24acc3dcf5863e1e39c5c |
||
---|---|---|
.. | ||
tests | ||
Android.mk | ||
CommandListener.cpp | ||
CommandListener.h | ||
event.logtags | ||
FlushCommand.cpp | ||
FlushCommand.h | ||
libaudit.c | ||
libaudit.h | ||
LogAudit.cpp | ||
LogAudit.h | ||
LogBuffer.cpp | ||
LogBuffer.h | ||
LogBufferElement.cpp | ||
LogBufferElement.h | ||
LogCommand.cpp | ||
LogCommand.h | ||
LogListener.cpp | ||
LogListener.h | ||
LogReader.cpp | ||
LogReader.h | ||
LogStatistics.cpp | ||
LogStatistics.h | ||
LogTimes.cpp | ||
LogTimes.h | ||
LogWhiteBlackList.cpp | ||
LogWhiteBlackList.h | ||
main.cpp | ||
README.auditd | ||
README.property |
The properties that logd responds to are: name type default description logd.auditd bool true Enable selinux audit daemon logd.auditd.dmesg bool true selinux audit messages duplicated and sent on to dmesg log logd.statistics bool depends Enable logcat -S statistics. ro.config.low_ram bool false if true, logd.statistics default false ro.build.type string if user, logd.statistics default false logd.statistics.dgram_qlen bool false Record dgram_qlen statistics. This represents a performance impact and is used to determine the platform's minimum domain socket network FIFO size (see source for details) based on typical load (logcat -S to view) persist.logd.size number 256K default size of the buffer for all log ids at initial startup, at runtime use: logcat -b all -G <value> persist.logd.size.main number 256K Size of the buffer for the main log persist.logd.size.system number 256K Size of the buffer for the system log persist.logd.size.radio number 256K Size of the buffer for the radio log persist.logd.size.event number 256K Size of the buffer for the event log persist.logd.size.crash number 256K Size of the buffer for the crash log NB: - number support multipliers (K or M) for convenience. Range is limited to between 64K and 256M for log buffer sizes. Individual logs override the global default.