summaryrefslogtreecommitdiffstats
path: root/logd/LogBufferElement.h
Commit message (Collapse)AuthorAgeFilesLines
* Replace (unsigned) short with (u)int16_t.Chih-Hung Hsieh2018-08-131-4/+5
| | | | | | Bug: 112478838 Test: build with WITH_TIDY=1 Change-Id: I4b81e6287e72bce2d3cb67cacd6220d064818852
* Decrease size of LogBufferElements to 32 bytes.Christopher Ferris2017-08-111-19/+11
| | | | | | | | | | | | | | | | | | - Remove virtual from the destructor. - Remove mTag and derive it when calling getTag(). - Add a boolean mDropped to tell when a message is dropped. - When dropping a message, and it contains valid tag data, reallocate the message to only contain the tag data. - Add the packed tag to the class. This saves about ~150K of PSS on a typical log stream since it moves the size of the LogBufferElement from 48 bytes to 32 bytes which puts it in a smaller bin. Bug: 63792187 Test: Builds, unit tests pass. Change-Id: Ia5afce343ea3d344fcecd78c648338e94f5c9312
* logd: drop mSequence from LogBufferElementMark Salyzyn2017-03-161-9/+2
| | | | | | | | | | Use getRealTime() instead and leverage private liblog log_time comparison and math functions. This saves 8 bytes off each element in the logging database. Test: gTest liblog-unit-tests logd-unit-tests logcat-unit-tests Bug: 35373582 Change-Id: Ia55ef8b95cbb2a841ccb1dae9a24f314735b076a
* logd: ensure LogBufferElement mSequence is monotonicMark Salyzyn2017-03-161-1/+1
| | | | | | | | | | | | | | | | | | | | | | - Improves accuracy of -t/-T '<timestamp>' behavior when out of order arrival of entries messes with mSequence as the list will now have monotonic sequence numbers enforced. - Out of order time entries still remain because of reader requiring the ability to receive newly arrived old entries. - -t/-T '<timestamp>' can still quit backward search prematurely because an old entry lands later in the list. - Adjust insert in place algorithm from two loops of scan placement and then limit against watermark, into one that does all of that plus iteratively swap update the sequence numbers to set monotonicity. Side effect will be that the read lock (which is actually the LogTimes lock) will be held longer while we search for a placement above the youngest LogTimes watermark. We need to hold the read (LogTimes) lock because we may be altering the sequence numbers affecting -t/-T '<timestamp>' search. Test: gTest logd-unit-tests liblog-unit-tests logcat-unit-tests Bug: 35373582 Change-Id: I79a385fc149bac2179128b53d4c8f71e429181ae
* logd: specify clang formatMark Salyzyn2017-03-131-31/+51
| | | | | | | | | Switch _all_ file's coding style to match to ease all future changes. SideEffects: None Test: compile Bug: 35373582 Change-Id: I470cb17f64fa48f14aafc02f574e296bffe3a3f3
* logd: multiple identical do not report expiredMark Salyzyn2017-01-241-3/+5
| | | | | | | | | | | | | Report multiple identical chatty messages differently than for regular expire chatty messages. Multiple identical will report identical count, while spam filter will report expire count. This should reduce the expected flood of people confused but chatty messages in continuous logcat output. Test: gTest logd_unit_tests --gtest_filter=logd.multiple* Change-Id: Iad93d3efc6a3938a4b87ccadddbd86626a015d44
* logd: record multiple duplicate messages as chattyMark Salyzyn2016-12-151-0/+2
| | | | | | | | | | | | | | | | | | | | If a series of messages arrive from a single source with identical message content payload, then suppress them and generate a chatty report. The checking is done on a per log id basis. This alters the assumption that chatty messages are always at the oldest entries, they now show up in the middle too. To address this change in behavior we print the first line, a chatty reference which internally takes little space, then the last line in the series. This does not conserve processing time in logd, and certainly has no impact on the long path of formatting and submitting log messages from from the source, but it may contribute to memory space and signal to noise savings under heavy spammy loads. Test: gTest liblog-unit-tests, logd-unit-tests & logcat-unit-tests Bug: 33535908 Change-Id: I3160c36d4f4e2f8216f528605a1b3993173f4dec
* logd: getTag() functional for chatty entriesMark Salyzyn2016-10-251-12/+17
| | | | | | | | | | | | | getTag() becomes invalid when entry is dropped because mMsg disappears to save space; but the per-tag spam filter depends on it still being valid. Conserve space in LogBufferElement by optimizing the size of the fields, then add a new mTag field that is set in the object constructor. Add an isBinary() method. SideEffects: save 12 bytes/log message overhead on 64-bit. Test: define DEBUG_CHECK_FOR_STALE_ENTRIES and look for stale entries Bug: 32247044 Change-Id: Iaa5f416718a92c9e0e6ffd56bd5260d8b908d5c0
* liblog: logd: logcat: Split out log/logger.h into public and private.Mark Salyzyn2016-10-241-2/+1
| | | | | | | | | | | | log/logger.h pieces moved into log/log.h. Correct for some minor Android Coding standards. Test: gTests liblog-unit-tests, logd-unit-tests and logcat-unit-tests Bug: 19235719 Bug: 26552300 Bug: 31289077 Bug: 31456426 Change-Id: I0a19fd8788eec20a582e72e4c62c04534bdb1b9a
* logd: logcat: Replace log/log.h with android/log.hMark Salyzyn2016-09-301-1/+1
| | | | | | | | | | Should use android/log.h instead of log/log.h as a good example to all others. Test: Compile Bug: 26552300 Bug: 31289077 Change-Id: If4c9711eb57267d4707b03d54a932af9de241b13
* liblog: logd: logcat: deprecate log/log_read.hMark Salyzyn2016-09-301-1/+1
| | | | | | | | | | | | Always used in combination with log/logger.h except in log_time.cpp, and not used externally. As a result liblog has to support stl, a small price to pay since goal is to convert liblog to C++ internally. Test: compile Bug: 31456426 Bug: 26552300 Bug: 31289077 Change-Id: I72828ec807d0a2c8e40bbdebd7a69f147a7ca5a9
* logd: readlog apps get logger_entry_v4Mark Salyzyn2015-12-091-1/+1
| | | | | | | | Adds the uid field to outgoing content for readlog applications. AID_LOG, AID_ROOT and AID_SYSTEM gain access to the information. Bug: 25996918 Change-Id: I0254303c19d174cbf5e722c38844be5c54410c85
* liblog: logd: support logd.timestamp = monotonicMark Salyzyn2015-11-031-1/+4
| | | | | | | | | | | | | | | | | | | | | | if ro.logd.timestamp or persist.logd.timestamp are set to the value monotonic then liblog writer, liblog printing and logd all switch to recording/printing monotonic time rather than realtime. If reinit detects a change for presist.logd.timestamp, correct the older entry timestamps in place. ToDo: A corner case condition where new log entries in monotonic time occur before logd reinit detects persist.logd.timestamp, there will be a few out-of-order entries, but with accurate timestamps. This problem does not happen for ro.logd.timestamp as it is set before logd starts. NB: This offers a nano second time accuracy on all log entries that may be more suitable for merging with other system activities, such as systrace, that also use monotonic time. This feature is for debugging. Bug: 23668800 Change-Id: Iee6dab7140061b1a6627254921411f61b01aa5c2
* logd: optimize code hotspotsMark Salyzyn2015-10-021-1/+1
| | | | | | | | | | | Discovered that we had a few libc hotspots. Adjust code to generally reduce or nullify the number of calls to malloc, free, strlen, strcmp, strncmp, memcmp & strncasecmp. Total gain looks to be about 3% of logd's processing time. malloc still contributes to 3%, but all others are now total 0.5%. Bug: 23685592 Change-Id: Ife721121667969260cdb8b055524ae90f5911278
* logd: Add LogUtils.hMark Salyzyn2015-10-021-21/+0
| | | | | | Move prototypes from LogBufferElement.h to LogUtils.h Change-Id: I55e42e17e6c997e35b2b78b87fd2f84f8f393282
* logd: filters remove leading expire messages and rateMark Salyzyn2015-06-051-1/+2
| | | | | | | | | | | | | | | | | - Cleanup resulting from experience and feedback - When filtering inside logd, drop any leading expire messages, they are cluttering up leading edge of tombstones (which filter by pid) - Increase and introduce EXPIRE_RATELIMIT from 1 to 10 seconds - Increase EXPIRE_THRESHOLD from 4 to 10 count - Improve the expire messages from: logd : uid=1000(system) too chatty comm=com.google.android.phone, expire 2800 lines change tag to be more descriptive, and reduce accusatory tone to: chatty : uid=1000(system) com.google.android.phone expire 2800 lines - if the UID name forms a prefix for comm name, then drop UID name Change-Id: Ied7cc04c0ab3ae02167649a0b97378e44ef7b588
* logd: worst-UID only to preserve a dayMark Salyzyn2015-05-201-0/+5
| | | | | | | | Do not invoke worst-UID pruning in the face of other UIDs logs that are more than a day old, switch to pruning oldest only. Change-Id: Icf988b8d5458400a660d0f8e9d2df3f9d9a4c2d9
* Merge "logd: Add TID statistics"Mark Salyzyn2015-05-131-0/+1
|\
| * logd: Add TID statisticsMark Salyzyn2015-05-121-0/+1
| | | | | | | | | | Bug: 19608965 Change-Id: Ifbf0b00c48ef12b5970b9f9f217bd1dd8f587f2c
* | logd: Add klogdMark Salyzyn2015-05-121-1/+1
|/ | | | | | | | | | | | | | | | - Add a klogd to collect the kernel logs and place them into a new kernel log buffer - Parse priority, tag and message from the kernel log messages. - Turn off pruning for worst UID for the kernel log buffer - Sniff for 'PM: suspend exit', 'PM: suspend enter' and 'Suspended for' messages and correct the internal definition time correction against monotonic dynamically. - Discern if we have monotonic or real time (delineation 1980) in audit messages. - perform appropriate math to correct the timestamp to be real time - filter out any external sources of kernel logging Change-Id: I8d4c7c5ac19f1f3218079ee3a05a50e2ca55f60d
* logd: Add Tag statisticsMark Salyzyn2015-05-121-0/+5
| | | | | | | | | | | - Optional class of statistics for events Tags - export tagToName from LogBuffer (located in main.cp to address https://android-review.googlesource.com/#/c/110204) - Can not handle dropped because getTag() can not work, will need to be fixed if we start filtering. Bug: 19608965 Change-Id: I7b90607ca588bf37bab71f19b1570a290e772776
* Merge "logd: class hierarcy for Uid and Pid statistics."Mark Salyzyn2015-05-051-0/+3
|\
| * logd: class hierarcy for Uid and Pid statistics.Mark Salyzyn2015-04-211-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | Add EntryBase and EntryBaseDropped base classes for statistical entries to inherit from. Abstract add(), subtract() and drop() methods to common LogBufferElement in each for entry policy decisions. Some move of details out of LogStatistics.cpp and place them into LogStatistics.h. Add statistical add(), subtract() and drop() methods to hash table to call entries for policy. Bug: 19608965 Change-Id: Ib8a33a8fe28871ef165d1632c6546a5c606231e8
* | logd: improve details on chatty recordsMark Salyzyn2015-04-301-3/+8
|/ | | | | | | | | | | - Report applications UID, TID/PID by name. - change wording to have an accurate connotation - drop privilege check since filtered upstream Bug: 19608965 Bug: 20334069 Bug: 20370119 Change-Id: I2b1c26580b4c2de293874214ff5ae745546f3cca
* logd: disable worst uid prune for events bufferMark Salyzyn2015-04-101-0/+4
| | | | | | | | | | There is some usage statistics that would be hurt by pruning by UID, since _all_ usage statistics come from system_server. In other words we expect it to be chatty. Until we formulate and evaluate a better (eg: per-tag?) filtration mechanism, lets hold off pruning by UID. Bug: 19608965 Change-Id: Iddd45a671e13bdcf3394c20919ad1f2e4ef36616
* logd: annotate worst-UID pruned entriesMark Salyzyn2015-04-101-2/+17
| | | | | | | | | | | | | | | | - internal dropped entries are associated by prune by worst UID and are applied by UID and by PID - track dropped entries by rewriting them in place - merge similar dropped entries together for same UID(implied), PID and TID so that blame can more clearly be placed - allow aging of dropped entries by the general backgound pruning - report individual dropped entries formatted to reader - add statistics to track dropped entries by UID, the combination of statistics and dropped logging can track over-the-top Chattiest clients. Bug: 19608965 Change-Id: Ibc68480df0c69c55703270cd70c6b26aea165853
* logd: uidToName improvementMark Salyzyn2015-04-081-0/+8
| | | | | | | | - read packages.list to acquire package names - hijack the reinit handler as a privileged worker Bug: 19608965 Change-Id: If7becb34354d6415e5c387ecea7d4109a15259c9
* logd: optimize statisticsMark Salyzyn2015-03-201-1/+2
| | | | | | | | | - Go back to basic requirements - Simplify - use hash tables to minimize memory impact Bug: 19608965 Change-Id: If7becb34354d6415e5c387ecea7d4109a15259c8
* logd: replace internal CLOCK_MONOTONIC use with sequence numbersMark Salyzyn2015-03-181-4/+7
| | | | | | | | | - switch to simpler and faster internal sequence number, drops a syscall overhead on 32-bit platforms. - add ability to break-out of flushTo loop with filter return -1 allowing in reduction in reader overhead. Change-Id: Ic5cb2b9afa4d9470153971fc9197b07279e2b79d
* logd: liblog: Thread IDs missing from logcat -v threadMark Salyzyn2014-03-211-1/+4
| | | | | | | - stuff caller's thread id into the packet. Bug: 13568206 Change-Id: I02d0cdf9b1d9e839ff8969f591db42dfe6e4cc95
* logd: liblog: 64-bit issuesMark Salyzyn2014-03-051-3/+3
| | | | | | | | | - structure packing - move towards log_time from struct timespec - extend log_time to cover differences between log_time and struct timespec Change-Id: I106ed0b609917306d170044054b5b32645f2a295
* logd: initial checkin.Mark Salyzyn2014-02-261-0/+50
* Create a new userspace log daemon for handling logging messages. Original-Change-Id: I75267df16359684490121e6c31cca48614d79856 Signed-off-by: Nick Kralevich <nnk@google.com> * Merge conflicts * rename new syslog daemon to logd to prevent confusion with bionic syslog * replace racy getGroups call with KISS call to client->getGid() * Timestamps are filed at logging source * insert entries into list in timestamp order * Added LogTimeEntry tail filtration handling * Added region locking around LogWriter list * separate threads for each writer * /dev/socket/logd* permissions Signed-off-by: Mark Salyzyn <salyzyn@google.com> (cherry picked from commit 3e76e0a49760c4970b7cda6153e51026af98e4f3) Author: Nick Kralevich <nnk@google.com> Change-Id: Ice88b1412d8f9daa7f9119b2b5aaf684a5e28098