{"push_id":853470456,"size":13,"distinct_size":13,"ref":"refs/heads/cm-13.0","head":"4dae4864f55f44381ecc3e2337c9fefa5f1ccbf8","before":"0bce3de44683b1d8b30ce6bee408adc9093b74b9","commits":[{"sha":"de91a7f7772e42e04d21a5b7f7aa6cf239623802","author":{"email":"34a322c05ccf7a69003b3e288dfc60055c6d0c33@codeaurora.org","name":"Liam Mark"},"message":"lowmemorykiller: Don't count swap cache pages twice\n\nThe lowmem_shrink function discounts all the swap cache pages from\nthe file cache count. The zone aware code also discounts all file\ncache pages from a certain zone.  This results in some swap cache\npages being discounted twice, which can result in the low memory\nkiller being unnecessarily aggressive.\n\nFix the low memory killer to only discount the swap cache pages\nonce.\n\nChange-Id: I650bbfbf0fbbabd01d82bdb3502b57ff59c3e14f\nSigned-off-by: Liam Mark <lmark@codeaurora.org>","distinct":true,"url":"https://api.github.com/repos/victormlourenco/android_kernel_lge_msm8974/commits/de91a7f7772e42e04d21a5b7f7aa6cf239623802"},{"sha":"a2c36e68255563e79bf85c98c43cd133120f3457","author":{"email":"380081620a7947c89c11153c5513f34019caa923@android.com","name":"Colin Cross"},"message":"lowmemorykiller: make default lowmemorykiller debug message useful\n\nlowmemorykiller debug messages are inscrutable and mostly useful\nfor debugging the lowmemorykiller, not explaining why a process\nwas killed.  Make the messages more useful by prefixing them\nwith \"lowmemorykiller: \" and explaining in more readable terms\nwhat was killed, who it was killed for, and why it was killed.\n\nThe messages now look like:\n[   76.997631] lowmemorykiller: Killing 'droid.gallery3d' (2172), adj 1000,\n[   76.997635]    to free 27436kB on behalf of 'kswapd0' (29) because\n[   76.997638]    cache 122624kB is below limit 122880kB for oom_score_adj 1000\n[   76.997641]    Free memory is -53356kB above reserved\n\nA negative number for free memory above reserved means some of the\nreserved memory has been used and is being regenerated by kswapd,\nwhich is likely what called the shrinkers.\n\nChange-Id: I1fe983381e73e124b90aa5d91cb66e55eaca390f\nSigned-off-by: Colin Cross <ccross@android.com>","distinct":true,"url":"https://api.github.com/repos/victormlourenco/android_kernel_lge_msm8974/commits/a2c36e68255563e79bf85c98c43cd133120f3457"},{"sha":"c61fb63924234a74c4cb746ef820d6a47767c450","author":{"email":"db18ceb40708dab5e9bcdbeb620f7eed18da08e5@codeaurora.org","name":"Vinayak Menon"},"message":"lowmemorykiller: use for_each_thread instead of buggy while_each_thread\n\nCouple of cases were reported few months ago, where the cpu was blocked\non the following call stack for /seconds/ after which the watchdog fires.\n\ntest_task_flag(p = 0xE14ABF00, ?)\nlowmem_shrink(?, sc = 0xD7A03C04)\nshrink_slab(shrink = 0xD7A03C04, nr_pages_scanned = 0, lru_pages = 120)\ntry_to_free_pages(zonelist = 0xC1116440, ?, ?, ?)\n__alloc_pages_nodemask(?, order = 0, ?, nodemask = 0x0)\n__do_page_cache_readahead(mapping = 0xEB819364, filp = 0xCC16DC00, offset =\nra_submit(?, ?, ?)\nfilemap_fault(vma = 0xC105D240, vmf = 0xD7A03DC8)\n\nThere weren't any dumps to analyse the case, but this can be a possible\nreason. while_each_thread is known to be buggy and can result in the\nfunction looping forever if the task exits, even when protected with\nrcu_read_lock. Use for_each_thread instead.\n\nMore details on the problems with while_each_thread can be found\nat https://lkml.org/lkml/2013/12/2/320\n\nChange-Id: I5eb6e4b463f81142a2a7824db389201357432ec7\nSigned-off-by: Vinayak Menon <vinmenon@codeaurora.org>","distinct":true,"url":"https://api.github.com/repos/victormlourenco/android_kernel_lge_msm8974/commits/c61fb63924234a74c4cb746ef820d6a47767c450"},{"sha":"b1ea8f1418d5961da1db64cbf61f43474ab320e4","author":{"email":"34a322c05ccf7a69003b3e288dfc60055c6d0c33@codeaurora.org","name":"Liam Mark"},"message":"lowmemorykiller: enhance debug information\n\nAdd extra debug information to make it easier to both determine\nwhy the lowmemorykiller killed a process and to help find the source\nof memory leaks.\n\nAlso increase the debug level for \"select\" statements to help prevent\nflooding the log.\n\nChange-Id: I3b6876c5ecdf192ecc271aed3f37579f66d47a08\nSigned-off-by: Liam Mark <lmark@codeaurora.org>","distinct":true,"url":"https://api.github.com/repos/victormlourenco/android_kernel_lge_msm8974/commits/b1ea8f1418d5961da1db64cbf61f43474ab320e4"},{"sha":"d6f92c7bde22ba870a0faf5f6ef4838e2e5405fc","author":{"email":"e7b4910f4742918f5926c991d8a2cd122ac7e295@codeaurora.org","name":"Laura Abbott"},"message":"lowmemorykiller: Dump out slab state information\n\nLeaks from the slab allocator are a very common cause of\nout of memory issues and excessive lowmemorykiller killing.\nDump out the slab statistics as well to help with debugging.\n\nChange-Id: Ia5e4eeb66092c76f2b761321c88fa75c4138927c\nSigned-off-by: Laura Abbott <lauraa@codeaurora.org>","distinct":true,"url":"https://api.github.com/repos/victormlourenco/android_kernel_lge_msm8974/commits/d6f92c7bde22ba870a0faf5f6ef4838e2e5405fc"},{"sha":"19cc3e783487a90cd11a32be1c769c966b31e1c4","author":{"email":"e7b4910f4742918f5926c991d8a2cd122ac7e295@codeaurora.org","name":"Laura Abbott"},"message":"lowmemorykiller: Run the lowmemory notifier when killing\n\nWhen the lowmemory killer starts killing processes, it's useful to\nbe able to see the state of other memory in the system. Call the\nlowmemory notifier to get other clients to dump out their state.\n\nChange-Id: Ie3b1d47149f0108b42b7961fd47a8cc5efe2c590\nSigned-off-by: Laura Abbott <lauraa@codeaurora.org>","distinct":true,"url":"https://api.github.com/repos/victormlourenco/android_kernel_lge_msm8974/commits/19cc3e783487a90cd11a32be1c769c966b31e1c4"},{"sha":"0fc509fb31a6fe601b54cd01364f7a31e80ec93d","author":{"email":"91ad7be9acbda290b813c9fa34826384a2a28465@codeaurora.org","name":"Susheel Khiani"},"message":"lowmemorykiller: Do proper NULL checks\n\nPointer other_free is getting dereferenced without\nperforming proper NULL checks which may cause issue.\nDo proper NULL checks at all points before dereferencing\nit.\n\nChange-Id: I88515703d64730e42598ab16136dcce4c18b099c\nSigned-off-by: Susheel Khiani <skhiani@codeaurora.org>","distinct":true,"url":"https://api.github.com/repos/victormlourenco/android_kernel_lge_msm8974/commits/0fc509fb31a6fe601b54cd01364f7a31e80ec93d"},{"sha":"ab618efbc142a7b85f162da66ba7c3e8088f0df6","author":{"email":"db18ceb40708dab5e9bcdbeb620f7eed18da08e5@codeaurora.org","name":"Vinayak Menon"},"message":"lowmemorykiller: adapt to vmpressure\n\nThere were issues reported, where page cache thrashing was\nobserved because of LMK not killing tasks when required,\nresulting in sluggishness and higher app launch latency.\nLMK does not kill a task for the following reasons.\n1. The free and file pages are above the LMK thresholds\n2. LMK tries to pick task with an adj level corresponding\nto current thresholds, but fails to do so because of the\nabsence of tasks in that level.\nBut sometimes it is better to kill a lower adj task, than thrashing.\nAnd there are cases where the number of file pages are huge, though\nwe dont thrash, the reclaim process becomes time consuming, since\nLMK triggers will be delayed because of higher number of file\npages. Even in such cases, when reclaim path finds it difficult\nto reclaim pages, it is better to trigger lmk to free up some memory\nfaster.\n\nThe basic idea here is to make LMK more aggressive dynamically\nwhen such a thrashing scenario is detected.\n\nTo detect thrashing, this patch uses vmpressure events.\nThe values of vmpressure upon which an action has to be taken,\nwas derived empirically.\n\nThis patch also adds tracepoints to validate this feature,\nalmk_shrink and almk_vmpressure.\n\nTwo knobs are available for the user to tune adaptive lmk\nbehaviour.\n\n/sys/module/lowmemorykiller/parameters/adaptive_lmk - Write\n1 to enable the feature, 0 to disable. By default disabled.\n\n/sys/module/lowmemorykiller/parameters/vmpressure_file_min -\nThis parameter controls the behaviour of LMK when vmpressure\nis in the range of 90-94. Adaptive lmk triggers based on number file\npages wrt vmpressure_file_min, when vmpressure is in the range of\n90-94. Usually this is a pseudo minfree value, higher than the\nhighest configured value in minfree array.\n\nChange-Id: I1a08160c35d3e33bdfd1d2c789c288fc07d0f0d3\nSigned-off-by: Vinayak Menon <vinmenon@codeaurora.org>","distinct":true,"url":"https://api.github.com/repos/victormlourenco/android_kernel_lge_msm8974/commits/ab618efbc142a7b85f162da66ba7c3e8088f0df6"},{"sha":"71b496bff5971e188537686f06ea8fa7e906c33c","author":{"email":"db18ceb40708dab5e9bcdbeb620f7eed18da08e5@codeaurora.org","name":"Vinayak Menon"},"message":"lowmemorykiller: avoid false adaptive LMK triggers\n\nIn vmpressure notifier of LMK, shift_adj would have been set\nby a previous invocation of notifier, which is not followed by\na lowmem_shrink yet. Since vmpressure has improved, reset\nshift_adj to avoid false adaptive LMK trigger.\n\nChange-Id: I2d77103d7c8f4d8a66e4652cba78e619a7bcef9a\nSigned-off-by: Vinayak Menon <vinmenon@codeaurora.org>","distinct":true,"url":"https://api.github.com/repos/victormlourenco/android_kernel_lge_msm8974/commits/71b496bff5971e188537686f06ea8fa7e906c33c"},{"sha":"84f6d0b6215a7d5397233d1bd1a5518ef69f35a0","author":{"email":"1aae5ab9541d66245293c8fc1b9880f5df073631@linaro.org","name":"Anton Vorontsov"},"message":"memcg: add memory.pressure_level events\n\nWith this patch userland applications that want to maintain the\ninteractivity/memory allocation cost can use the pressure level\nnotifications.  The levels are defined like this:\n\nThe \"low\" level means that the system is reclaiming memory for new\nallocations.  Monitoring this reclaiming activity might be useful for\nmaintaining cache level.  Upon notification, the program (typically\n\"Activity Manager\") might analyze vmstat and act in advance (i.e.\nprematurely shutdown unimportant services).\n\nThe \"medium\" level means that the system is experiencing medium memory\npressure, the system might be making swap, paging out active file\ncaches, etc.  Upon this event applications may decide to further analyze\nvmstat/zoneinfo/memcg or internal memory usage statistics and free any\nresources that can be easily reconstructed or re-read from a disk.\n\nThe \"critical\" level means that the system is actively thrashing, it is\nabout to out of memory (OOM) or even the in-kernel OOM killer is on its\nway to trigger.  Applications should do whatever they can to help the\nsystem.  It might be too late to consult with vmstat or any other\nstatistics, so it's advisable to take an immediate action.\n\nThe events are propagated upward until the event is handled, i.e.  the\nevents are not pass-through.  Here is what this means: for example you\nhave three cgroups: A->B->C.  Now you set up an event listener on\ncgroups A, B and C, and suppose group C experiences some pressure.  In\nthis situation, only group C will receive the notification, i.e.  groups\nA and B will not receive it.  This is done to avoid excessive\n\"broadcasting\" of messages, which disturbs the system and which is\nespecially bad if we are low on memory or thrashing.  So, organize the\ncgroups wisely, or propagate the events manually (or, ask us to\nimplement the pass-through events, explaining why would you need them.)\n\nPerformance wise, the memory pressure notifications feature itself is\nlightweight and does not require much of bookkeeping, in contrast to the\nrest of memcg features.  Unfortunately, as of current memcg\nimplementation, pages accounting is an inseparable part and cannot be\nturned off.  The good news is that there are some efforts[1] to improve\nthe situation; plus, implementing the same, fully API-compatible[2]\ninterface for CONFIG_CGROUP_MEM_RES_CTLR=n case (e.g.  embedded) is also\na viable option, so it will not require any changes on the userland\nside.\n\n[1] http://permalink.gmane.org/gmane.linux.kernel.cgroups/6291\n[2] http://lkml.org/lkml/2013/2/21/454\n\nChange-Id: Ib7b9f7986008d423b84152e2781d0402a560c95e\n[akpm@linux-foundation.org: coding-style fixes]\n[akpm@linux-foundation.org: fix CONFIG_CGROPUPS=n warnings]\nSigned-off-by: Anton Vorontsov <anton.vorontsov@linaro.org>\nAcked-by: Kirill A. Shutemov <kirill@shutemov.name>\nAcked-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>\nCc: Tejun Heo <tj@kernel.org>\nCc: David Rientjes <rientjes@google.com>\nCc: Pekka Enberg <penberg@kernel.org>\nCc: Mel Gorman <mgorman@suse.de>\nCc: Glauber Costa <glommer@parallels.com>\nCc: Michal Hocko <mhocko@suse.cz>\nCc: Luiz Capitulino <lcapitulino@redhat.com>\nCc: Greg Thelen <gthelen@google.com>\nCc: Leonid Moiseichuk <leonid.moiseichuk@nokia.com>\nCc: KOSAKI Motohiro <kosaki.motohiro@gmail.com>\nCc: Minchan Kim <minchan@kernel.org>\nCc: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>\nCc: John Stultz <john.stultz@linaro.org>\nSigned-off-by: Andrew Morton <akpm@linux-foundation.org>\nSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>","distinct":true,"url":"https://api.github.com/repos/victormlourenco/android_kernel_lge_msm8974/commits/84f6d0b6215a7d5397233d1bd1a5518ef69f35a0"},{"sha":"fc3ef39322236e4c54c7697a577e3b506e8383e2","author":{"email":"db18ceb40708dab5e9bcdbeb620f7eed18da08e5@codeaurora.org","name":"Vinayak Menon"},"message":"mm: vmpressure: allow in-kernel clients to subscribe for events\n\nCurrently, vmpressure is tied to memcg and its events are\navailable only to userspace clients. This patch removes\nthe dependency on CONFIG_MEMCG and adds a mechanism for\nin-kernel clients to subscribe for vmpressure events (in\nfact raw vmpressure values are delivered instead of vmpressure\nlevels, to provide clients more flexibility to take actions\non custom pressure levels which are not currently defined\nby vmpressure module).\n\nChange-Id: I38010f166546e8d7f12f5f355b5dbfd6ba04d587\nSigned-off-by: Vinayak Menon <vinmenon@codeaurora.org>","distinct":true,"url":"https://api.github.com/repos/victormlourenco/android_kernel_lge_msm8974/commits/fc3ef39322236e4c54c7697a577e3b506e8383e2"},{"sha":"b1a850d892ab2fa323a628356252146e2657bc7a","author":{"email":"e7b4910f4742918f5926c991d8a2cd122ac7e295@codeaurora.org","name":"Laura Abbott"},"message":"mm: Add notifier framework for showing memory\n\nThere are many drivers in the kernel which can hold on\nto lots of memory. It can be useful to dump out all those\ndrivers at key points in the kernel. Introduct a notifier\nframework for dumping this information. When the notifiers\nare called, drivers can dump out the state of any memory\nthey may be using.\n\nChange-Id: Ifb2946964bf5d072552dd56d8d6dfdd794af6d84\nSigned-off-by: Laura Abbott <lauraa@codeaurora.org>","distinct":true,"url":"https://api.github.com/repos/victormlourenco/android_kernel_lge_msm8974/commits/b1a850d892ab2fa323a628356252146e2657bc7a"},{"sha":"4dae4864f55f44381ecc3e2337c9fefa5f1ccbf8","author":{"email":"34a322c05ccf7a69003b3e288dfc60055c6d0c33@codeaurora.org","name":"Liam Mark"},"message":"mm, oom: make dump_tasks public\n\nAllow other functions to dump the list of tasks.\nUseful for when debugging memory leaks.\n\nBug: 17871993\nChange-Id: I76c33a118a9765b4c2276e8c76de36399c78dbf6\nSigned-off-by: Liam Mark <lmark@codeaurora.org>\nSigned-off-by: Naveen Ramaraj <nramaraj@codeaurora.org>","distinct":true,"url":"https://api.github.com/repos/victormlourenco/android_kernel_lge_msm8974/commits/4dae4864f55f44381ecc3e2337c9fefa5f1ccbf8"}]}