summaryrefslogtreecommitdiffstats
path: root/logd
Commit message (Collapse)AuthorAgeFilesLines
* logd: improve details on chatty recordsMark Salyzyn2015-04-306-22/+111
| | | | | | | | | | | | | (Cherry pick from commit 21fb7e0b753b2251369bfaa1c6f6a09e58e64437) - 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: reduce chance of dropped 1 messagesMark Salyzyn2015-04-301-1/+2
| | | | | | | | | | - do not time out at 1 second if drop has count of less than 4 (Cherry picked from commit 35173a9ac5bd1f4702ccfda3df02ec47ecb57949) Bug: 20334069 Bug: 20370119 Change-Id: I787cb553dfab5ed71abd6ed72b63de675f834e0c
* Merge "logd: per UID less aggressive 12.5% threshold"Mark Salyzyn2015-04-231-2/+9
|\
| * logd: per UID less aggressive 12.5% thresholdMark Salyzyn2015-04-221-2/+9
| | | | | | | | | | | | | | | | Per-UID quota has a threshold of 12.5% of the total log size. If less than that space is taken by the UID, then we will not engage the pruning based on worst UID. Change-Id: I9f15c9a26938f1115eb75e9c28ddb073e7680e06
* | logd: ratelimit drop messages to 1/secMark Salyzyn2015-04-221-4/+20
|/ | | | | | Bug: 20334069 Bug: 20370119 Change-Id: I6f850aec46c4df1c99a5b1f28db75d071e134ad5
* logd: Statistics headersMark Salyzyn2015-04-211-8/+25
| | | | | | Answer to the question "Bytes or Lines?" Change-Id: I352737265aeac63ea8d89e778d4222a9123bdf07
* logd: better drop message mergingMark Salyzyn2015-04-201-18/+70
| | | | | | | | | | - Former algorithm anlo coalesced adjacent records - New algorithm maintains a hash list of all drop records and coalesces them all. Bug: 20334069 Bug: 20370119 Change-Id: Idc15ce31fc1087c2cfa39da60c62feade8b88761
* logd: propagate ::log statusMark Salyzyn2015-04-155-24/+35
| | | | | | | | | | | | | Add a return value for the ::log() methods, this allows us to optimize the wakeup for the readers to only occur when the log message is actually placed. This is for a future where we may dedupe identical log messages, filter out log messages, and certainly if we filter the messages out with an internal logd check of __android_log_is_loggable(). Change-Id: I763b2a7c29502ab7fa0a5d5022c7b60244fcfde4
* Merge "logd: syscall optimization"Mark Salyzyn2015-04-156-7/+21
|\
| * logd: syscall optimizationMark Salyzyn2015-04-016-7/+21
| | | | | | | | | | | | | | - prset(PR_SET_NAME) call once - No need to call getuid(), should be AID_LOGD Change-Id: I4dde0b178bc84e711b355cd7677b0dbf905a0634
* | logd: pidToUid incorrectMark Salyzyn2015-04-141-1/+1
| | | | | | | | Change-Id: I9b0e655780924db125568179771e57b01e80aaae
* | logd: disable worst uid prune for events bufferMark Salyzyn2015-04-103-2/+6
| | | | | | | | | | | | | | | | | | | | 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
* | Revert: "logd: default off by-UID spam filter"Mark Salyzyn2015-04-101-2/+2
| | | | | | | | | | | | | | | | | | | | | | With "logd: inject first UID by log buffer message" we can remove the FUD introduced by having the UID spam filter on This reverts commit 4141cb2391cfd7211ffff7e53841c6c52869d525 Bug: 19608965 Bug: 14469172 Change-Id: Ifdc20b099e0e426546525b11c1dfe8cc0f830a02
* | logd: annotate worst-UID pruned entriesMark Salyzyn2015-04-108-38/+261
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - 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: Build BreakageMark Salyzyn2015-04-081-2/+1
| | | | | | | | | | | | a change slipped in from a rebase conflict, repairing. Change-Id: Ib6479f88fb044f37b6721035c2f7cc75577c0411
* | logd: uidToName improvementMark Salyzyn2015-04-083-3/+69
| | | | | | | | | | | | | | | | - read packages.list to acquire package names - hijack the reinit handler as a privileged worker Bug: 19608965 Change-Id: If7becb34354d6415e5c387ecea7d4109a15259c9
* | logd: Add Pid statisticsMark Salyzyn2015-04-083-58/+248
| | | | | | | | | | | | | | | | | | | | | | - Optional class of statistics for PID - Enhance pidToName - Enhanced uidToName - Enhance pidToUid - template sort and iteration Bug: 19608965 Change-Id: I04a1f02e9851b62987f9b176908134e455f22d1d
* | logd: Don't embed a flexible array member within another structNick Kralevich2015-04-071-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | C (but not C++) has a concept of a flexible array member, which is documented at https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html . Using a flexible array member indicates that the structure is really a header for a variable length object. In logd's case, the variable length structure android_event_string_t was embedded within another structure called android_log_event_string_t. This makes gcc's __builtin_object_size() function really confused. When compiling with C++, __builtin_object_size(android_log_event_string_t.payload.data, 1) would return 0, whereas if you compiled the code with C, the same call would (properly) return -1. Code which does automatic bounds checking, such as the proposed patch at https://android-review.googlesource.com/145411 , will cause problems for logd if this syntax is used. Don't try to embed a variable length structure within another structure. This doesn't appear to be valid C nor C++, and while it's worked, it seems problematic. Instead, inline the structure so it's one big happy structure. Change-Id: I8ac02b7142a4f6560f5f80df2effcf720f9896fc
* | Remove LOCAL_ADDITIONAL_DEPENDENCIES in cases where it's not needed.Elliott Hughes2015-04-021-1/+0
|/ | | | Change-Id: I720b8ef1050da45a7833adef8219b6acb2cf3a38
* logd: missing include for string.hMark Salyzyn2015-04-011-0/+1
| | | | | | | | | | | | LogCommand.cpp gets string.h inherited from private/android_filesystem_config.h it should not rely on this in the future. The intent is to move fs_config function into libcutils and thus deprecate any need for string.h in this include file. Bug: 19908228 Change-Id: Iaf3a77298b56efd8004300b17e9a1faafad5b08b
* libaudit: limit to 5 selinux denials per secNick Kralevich2015-03-261-1/+1
| | | | | | | | | watchdog is triggering on shamu. This may be due to an excessive number of SELinux denials. Drop the limit from 20/sec to 5/sec. Bug: 19950451 Bug: 19949988 Change-Id: I979f11e17c241ff2ebda4dec9694ef441dc5d0ed
* logd: statistics: missing commaMark Salyzyn2015-03-201-1/+1
| | | | | | regression from statistics rewrite series resulted in build breakage Change-Id: I71b532b23437b9b5f3af47b18c9110f3d7dda48a
* logd: optimize statisticsMark Salyzyn2015-03-206-924/+281
| | | | | | | | | - 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-189-66/+77
| | | | | | | | | - 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: report reinitMark Salyzyn2015-03-122-9/+23
| | | | | Bug: 19681572 Change-Id: I343b9d108f064f87df79512a0fdf1b35513c3136
* logd: add reinit commandMark Salyzyn2015-03-125-19/+143
| | | | | | | | | | - respond to SIGHUP - respond to logd command "reinit" - respond to logd --reinit - reopens files on /data, eg: re-read of persistent properties Bug: 19681572 Change-Id: Iadac58e6653f027cb7355497bd675eef376ce0a8
* logd: build cleanupMark Salyzyn2015-03-091-1/+10
| | | | | | - Hard code the "auditd" event tag Change-Id: I5f76fd286628be5c0ca819e8ed775648c0d2fa44
* Revert "logd: Add minimum time bucket statistics"Mark Salyzyn2015-03-047-306/+1
| | | | | | | | | | | | | This forward port reverts commit e457b74ce6ee6d799812dc2ec5e4b8b18bcd3e91 No longer as necessary once we add liblog: Instrument logging of logd write drops Although this provided an indication of how close statistically we were to overloading logd it is simpler to understand fails thus to hunt and peck a corrected value for /proc/sys/net/unix/max_dgram_qlen Change-Id: I2b30e0fc30625a48fd11a12c2d2cc6a41f26226f
* logd: use <endian.h>Mark Salyzyn2015-03-041-18/+15
| | | | Change-Id: Iba843c054ea4fbe1a26c7821b5613fdb5e8001a1
* logd: logd placed into background cgroupMark Salyzyn2015-02-041-0/+5
| | | | Change-Id: I38d7be05ab77fc944a9dbef2b6575d4caa920d08
* Add missing <malloc.h> and <string.h> includes.Elliott Hughes2015-01-282-0/+2
| | | | Change-Id: Ia41756e607663d056e7d2fdd7ecbec7e5841a913
* logd: fix persistent blocking reader performanceDragoslav Mitrinovic2015-01-241-1/+18
| | | | | | | | | | | | | | | 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
* logd: create private/android_logger.hMark Salyzyn2015-01-231-16/+8
| | | | | | | | | - create a structure to depict the private header expected at logd end of socket. - utilize this new structure instead of unscalable byte stream technique used to unpack in logd. Change-Id: I2d0e5c3531c279f2dc1fbd74807210ff8d804de0
* logd: Fix pruningTraianX Schiau2015-01-143-14/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In a scenario in which an on-line (blocking) client is running and a clean is attempted (logcat -c), the following can be observed: 1) the on-line logger seems to freeze 2) any other clear attempt will have no effect What is actually happening: In this case prune function will "instruct" the oldest timeEntry to skip a huge number (very close to ULONG_MAX) of messages, this being the cause of 1. Since the consumer thread will skip all the log entries, mStart updating will also be skipped. So a new cleaning attempt will have the same oldest entry, nothing will be done. Fix description: a. keep a separated skipAhead count for individual log buffers (log_id_t) LogTimeEntry::LogTimeEntry LogTimeEntry::FilterSecondPass LogTimeEntry::skipAhead LogTimeEntry::riggerSkip_Locked b. update LogTimeEntry::mStart even if the current message is skipped LogTimeEntry::FilterSecondPass c. while pruning, only take into account the LogTimeEntrys that are monitoring the log_id in question, and provide a public method of checking this. LogTimeEntry::isWatching LogTimeEntry::FilterFirstPass LogTimeEntry::FilterSecondPass d. Reset the skip cont befor the client thtread starts to sleep, at this point we should be up to date. LogTimeEntry::cleanSkip_Locked LogTimeEntry::threadStart Change-Id: I1b369dc5b02476e633e52578266a644e37e188a5 Signed-off-by: TraianX Schiau <traianx.schiau@intel.com>
* logd: auditd remove logDmesg methodMark Salyzyn2014-12-053-34/+44
| | | | | | | | | | | | | - logDmesg method consumes considerable memory resources (typically 128KB depending on kernel) - In the future (eg: klogd, syslogd) there may be need to feed multiple logs or threads with the retrieved data. - By moving the actions of logDmesg into the mainline that instantiates the thread objects, we can leverage a single allocation of the the kernel log allocation. - logDmesg (private) is replaced with log (public) which has a more useful and descriptive purpose for the class. Change-Id: Ie2dd0370661493c1e596a7e486904a0e8caab9ff
* logd: throttle SELinux denials to 20/secNick Kralevich2014-11-193-22/+13
| | | | | | | | | | | Impose a limit of 20 selinux denials per second. Denials beyond that point don't add any value, and have the potential to cause crashes or denial of service attacks. Do some other misc cleanup while I'm here. Bug: 18341932 Change-Id: I6125d629ae4d6ae131d2e53bfa41e1f50277d402
* logd: insert order for first entryMark Salyzyn2014-10-141-1/+2
| | | | Change-Id: I39e8e6d32407a1796a0c3a121f9dc4dc5402c3df
* logd: LogStatistics leakMark Salyzyn2014-10-061-0/+4
| | | | | | - uid = -1 in subtract operation to match add Change-Id: I7d0b85b5334c5264fd04309cb78e0c9aec0ad261
* logd: kill(0,0) issueMark Salyzyn2014-10-061-1/+6
| | | | | | | | - Recognize pid=0 as special case (kernel or pre-init sourced) and refrain from treating it in the general case. Bug: 17526159 Change-Id: I74796043ac34753c6dd10018719ebc0bcd94e012
* logd: Add control statistics enable/disable.Mark Salyzyn2014-10-065-14/+42
| | | | | | | | | | - ro.build.type=user turn off statistics - ro.config.low_ram=true turn off statistics - logd.statistics override Bug: 17526159 Bug: 17526187 Change-Id: I74796043ac34753c6dd10018719ebc0bcd94e00f
* logd: cleanupMark Salyzyn2014-10-064-56/+56
| | | | | | | | | | | - simplify access and control exposure to class list - indent - compile warning - Follow standard naming convention for variables and methods - merge common fragments - Side Effects: none Change-Id: I74796043ac34753c6dd10018719ebc0bcd94e010
* logd: in nonblocking read, sched_yield() synchronizationMark Salyzyn2014-09-291-0/+5
| | | | | | | | - sched_yield and lock synchronization in reader thread startup to give writer thread a chance to catch up Bug: 17512203 Change-Id: I43cf0b4e2829b22b3ab4e537fa95ce13c76a869c
* logd: auditd: report facility LOG_AUTHMark Salyzyn2014-09-281-4/+15
| | | | Change-Id: Ie325e1b58f52b6c728d5cfd6f6b87287fcf32e10
* logd: auditd: kmsg priorityMark Salyzyn2014-09-191-9/+12
| | | | Change-Id: I2016fe140e2daf6c69efbd10aef205fffb931aa1
* logd: fix format-extra-args warning.Chih-Hung Hsieh2014-09-123-13/+28
| | | | Bug: 17409250 Change-Id: Id50ebb57754b12d69ed605d0e2901b8e05c607c6
* Fix for parenthesis errorArseniy Antonov2014-09-031-1/+1
| | | | | | | | Added parentheses as it was suggested by compiler. error: suggest parentheses around operand of '!' or change '&' to '&&' or '!' to '~' [-Werror=parentheses] Change-Id: Ic3746d9804488411d10d460ddfda11f1fad8efef Signed-off-by: Arseniy Antonov <arseniy.antonov@intel.com>
* logd: persistent reader threadsMark Salyzyn2014-08-122-21/+18
| | | | | | | (cherry picked from commit c113c5813ebd620e0bc60ece9a32ea14c08ea237) Bug: 16822776 Change-Id: I5bea468a41089b51108880044f32e2b2df1278e7
* Fix implicit declaration of function 'prctl' in logd.Elliott Hughes2014-07-181-2/+1
| | | | Change-Id: I0f655ad15295739adb8f04ec62c88a220413875e
* logd: test: disable kernel LOGGERMark Salyzyn2014-07-101-5/+3
| | | | | Bug: 15384806 Change-Id: I3072d6dd0618fa9ebe151c78a85eb121327f9df3
* Merge "logd: Allow apps to clear their UID-specific data"Mark Salyzyn2014-06-173-9/+43
|\