{"push_id":1163715963,"size":33,"distinct_size":33,"ref":"refs/heads/6.0-master","head":"abecec91224abf009728cae0c7ba05cdcd48d71a","before":"2add247468a0cad5798ca5e3cd7bf3da8fba3f37","commits":[{"sha":"60d1b6e8fd01c7c45acf3fd1600f7f6edd51133e","author":{"name":"Kirill A. Shutemov","email":"ad0c58dfb8c48e4f2b924f15638d5b4da258bc25@shutemov.name"},"message":"Introduce timer slack controller\n\ntask_get_effective_timer_slack() returns timer slack value to be used\nto configure per-task timers. It can be equal or higher than task's\ntimer slack value.\n\nFor now task_get_effective_timer_slack() returns timer_slack_ns of the\ntask. Timer slack cgroup controller will implement a bit more\nsophisticated logic.\n\nSigned-off-by: Kirill A. Shutemov <kirill@shutemov.name>\n\nFrom: \"Kirill A. Shutemov\" <kirill@shutemov.name>\n\nPR_GET_EFFECTIVE_TIMERSLACK allows process to know its effective timer\nslack value.\n\nSigned-off-by: Kirill A. Shutemov <kirill@shutemov.name>\n\nFrom: \"Kirill A. Shutemov\" <kirill@shutemov.name>\n\nEvery task_struct has timer_slack_ns value. This value uses to round up\npoll() and select() timeout values. This feature can be useful in\nmobile environment where combined wakeups are desired.\n\nOriginally, prctl() was the only way to change timer slack value of\na process. So you was not able change timer slack value of another\nprocess.\n\ncgroup subsys \"timer_slack\" implements timer slack controller. It\nprovides a way to set minimal timer slack value for a group of tasks.\nIf a task belongs to a cgroup with minimal timer slack value higher than\ntask's value, cgroup's value will be applied.\n\nTimer slack controller allows to implement setting timer slack value of\na process based on a policy. For example, you can create foreground and\nbackground cgroups and move tasks between them based on system state.\n\nIdea-by: Jacob Pan <jacob.jun.pan@linux.intel.com>\nSigned-off-by: Kirill A. Shutemov <kirill@shutemov.name>\n\nFrom: \"Kirill A. Shutemov\" <kirill@shutemov.name>\n\nChangelog:\n\nv10 [7 month later, thanks to A Plumber's Wish List]:\n - rebased to linux-next-20111011\nv9:\n - update documentation\n - minor cleanup\nv8:\n - change hiearchy rules\n - introduce timer_slack.effective_slack_ns\n - get_task_timer_slack() -> task_get_effective_timer_slack()\n - task_get_effective_timer_slack() splited in separate patch\n - implement PR_GET_EFFECTIVE_TIMERSLACK\nv7:\n - totally reworked interface and rewritten from scratch\n   (See Documentation/cgroups/timer_slack.txt for more information)\nv6:\n - add documentation\n - use notifier_call_chain() instead of check hook\n - fix validate_change()\n - cleanup\nv5:\n - -EBUSY on writing to timer_slack.min_slack_ns/max_slack_ns if a child has\n   wider min-max range\nv4:\n - hierarchy support\n - drop dummy_timer_slack_check()\n - workaround lockdep false (?) positive\n - allow 0 as timer slack value\nv3:\n - rework interface\n - s/EXPORT_SYMBOL/EXPORT_SYMBOL_GPL/\nv2:\n - fixed with CONFIG_CGROUP_TIMER_SLACK=y\nv1:\n - initial revision\n\nKirill A. Shutemov (3):\n  hrtimer: introduce effective timer slack\n  hrtimer: implement PR_GET_EFFECTIVE_TIMERSLACK\n  cgroups: introduce timer slack controller\n\n-----\n\nChange-Id: I1545c621701f509f8417f165f36ca89281d52396","distinct":true,"url":"https://api.github.com/repos/Fenix46/LuckyK/commits/60d1b6e8fd01c7c45acf3fd1600f7f6edd51133e"},{"sha":"fa17647595ed00cb5c7ce0793c501c5d1fb013a9","author":{"name":"Boy Petersen","email":"2644a5e5a17d0c2ac47ec7f7b3b39495e28cfe3b@gmail.com"},"message":"timer_slack: fix cgroup permission errors\n\nSince the common mounting of cpu and timer_slack into /dev/cpuctl\nthe Android OS cannot move processes across cgoups anymore:\n\n    W/SchedPolicy( 1180): add_tid_to_cgroup failed to write '5949'\n    (Permission denied); policy=0\n\nFix this by implementing an 'allow_attach' handler, according to\nthis commit:\nhttps://android.googlesource.com/kernel/common/+/999f93382d05d17aa9092d7f02106759c8798243%5E%5E!/\n\nChange-Id: Icd0711bf6a0f6048c47f5e856686559bcd5efc79\nSigned-off-by: Boy Petersen <boypetersen@gmail.com>","distinct":true,"url":"https://api.github.com/repos/Fenix46/LuckyK/commits/fa17647595ed00cb5c7ce0793c501c5d1fb013a9"},{"sha":"da2d9901c7e1cd3daea3a9f2103f790986c9a4bf","author":{"name":"Hugh Dickins","email":"11bd16bbccd141ee47d9426ad06afbc74b915cf0@google.com"},"message":"tmpfs: enable NOSEC optimization\n\nLet tmpfs into the NOSEC optimization (avoiding file_remove_suid()\noverhead on most common writes): set MS_NOSEC on its superblocks.\n\nChange-Id: Ib25ef39fb234e7f742e7feed1ea5ac4eb9ff9216\nSigned-off-by: Hugh Dickins <hughd@google.com>\nCc: Christoph Hellwig <hch@infradead.org>\nCc: Andi Kleen <andi@firstfloor.org>\nCc: Al Viro <viro@zeniv.linux.org.uk>\nCc: Cong Wang <xiyou.wangcong@gmail.com>\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/Fenix46/LuckyK/commits/da2d9901c7e1cd3daea3a9f2103f790986c9a4bf"},{"sha":"43c752da171a3a179cbc115a31314d52a0eb15f8","author":{"name":"Alexander Martinz","email":"61f2a1f7c20cc4d7b53ee7a273f19b8fc2ddc98f@gmail.com"},"message":"sched: import avg_nr_running\n\nChange-Id: I4fe89bad318e12b8f0162a92e6be54ab9d48586a\nSigned-off-by: Alexander Martinz <eviscerationls@gmail.com>","distinct":true,"url":"https://api.github.com/repos/Fenix46/LuckyK/commits/43c752da171a3a179cbc115a31314d52a0eb15f8"},{"sha":"e07cf3aab5bbaea671259e0d1e620422f95562d5","author":{"name":"Ruchi Kandoi","email":"1d1bb2ca737b8740d7a99166510e781fa0bc7c0b@google.com"},"message":"uid_cputime: Extends the cputime functionality to report power per uid\n\n/proc/uid_cputime/show_uid_stats shows a third field power for each of\nthe uids. It represents the power in the units (uAusec)\n\nBug: 21498425\nChange-Id: I52fdc5e59647e9dc97561a26d56f462a2689ba9c\nSigned-off-by: Ruchi Kandoi <kandoiruchi@google.com>","distinct":true,"url":"https://api.github.com/repos/Fenix46/LuckyK/commits/e07cf3aab5bbaea671259e0d1e620422f95562d5"},{"sha":"4a1fb38f463fd21947c08c98e4154c2da1cc7fde","author":{"name":"Ruchi Kandoi","email":"1d1bb2ca737b8740d7a99166510e781fa0bc7c0b@google.com"},"message":"uid_cputime: Fixes double accounting race condition on task exit.\n\nThis avoids the race where a particular process is terminating and we\nread the show_uid_stats. At this time since the task_struct still exists\nand we will account for the terminating process as one of the active\ntask, where as the stats would have been added in the task exit\ncallback.\n\nBug: 22064385\nChange-Id: Id2ae04b33fcd230eda9683a41b6019d4dd8f5d85\nSigned-off-by: Jin Qian <jinqian@google.com>\nSigned-off-by: Ruchi Kandoi <kandoiruchi@google.com>","distinct":true,"url":"https://api.github.com/repos/Fenix46/LuckyK/commits/4a1fb38f463fd21947c08c98e4154c2da1cc7fde"},{"sha":"ba6853459f403c55f052e94c21500f70eca97f87","author":{"name":"Jin Qian","email":"0a9aa3d3574a19f4323dcc26c6c102ebcca97ce1@google.com"},"message":"uid_cputime: fix overflow when printing cputime\n\ncputime_t is u64. Use %llu instead of %u.\n\nBug: 22461683\nChange-Id: Ia9a343a826e62cc73d2f61caf15651aee0233e9a\nSigned-off-by: Jin Qian <jinqian@google.com>","distinct":true,"url":"https://api.github.com/repos/Fenix46/LuckyK/commits/ba6853459f403c55f052e94c21500f70eca97f87"},{"sha":"4fb22a4de3f7ef5e25a01d269c0235e8b6363df2","author":{"name":"Ruchi Kandoi","email":"1d1bb2ca737b8740d7a99166510e781fa0bc7c0b@google.com"},"message":"uid_cputime: Iterates over all the threads instead of processes.\n\nBug: 22833116\nChange-Id: I775a18f61bd2f4df2bec23d01bd49421d0969f87\nSigned-off-by: Ruchi Kandoi <kandoiruchi@google.com>","distinct":true,"url":"https://api.github.com/repos/Fenix46/LuckyK/commits/4fb22a4de3f7ef5e25a01d269c0235e8b6363df2"},{"sha":"a5e574c4366daf1b025b09e679719da95bfacce0","author":{"name":"Jin Qian","email":"0a9aa3d3574a19f4323dcc26c6c102ebcca97ce1@google.com"},"message":"uid_cputime: fix mismerge\n\nChange-Id: Id6ba06121202e1e4cc5a7f2f53a278518afb977c","distinct":true,"url":"https://api.github.com/repos/Fenix46/LuckyK/commits/a5e574c4366daf1b025b09e679719da95bfacce0"},{"sha":"c0f77378d6224b2bfe226d67b3754947d5d13bff","author":{"name":"Michael Gernoth","email":"844aface8de49b32585c3c744b570659f1739c56@gernoth.net"},"message":"uid_cputime: don't use task->power as it is not available in 3.0\n\nChange-Id: Id55306a358bc782f753a8a756a3cbb1665b5146f","distinct":true,"url":"https://api.github.com/repos/Fenix46/LuckyK/commits/c0f77378d6224b2bfe226d67b3754947d5d13bff"},{"sha":"877c456d10d0b6b2a6128c76d9a11beaced8f43a","author":{"name":"Cristoforo Cataldo","email":"9a909f3eb5bdeb9ec3570dddfe9dc1d2723943c4@gmail.com"},"message":"kernel: cgroup_timer_slack: Dynamic management of timer slack\n\nThis feature allows to use different minimal timer slack values and to\ndynamically manage them when the system has been resumed (it's active)\nor when has been suspended.\n\nA new file is provided in addition to the two files provided by the\noriginal timer slack controller:\n- \"timer_slack.min_slack_suspend_ns\" is the minimal timer slack value\n  to use when the system is suspended (screen off)\n\nFor further info, please refers to the timer slack documentation:\nDocumentation/cgroupd/timer_slack.txt\n\nSigned-off-by: Cristoforo Cataldo <cristoforo.cataldo@gmail.com>","distinct":true,"url":"https://api.github.com/repos/Fenix46/LuckyK/commits/877c456d10d0b6b2a6128c76d9a11beaced8f43a"},{"sha":"2072a3c683b4dc90010460a25419de2240014a41","author":{"name":"Ashwin Chaugule","email":"df199bfd377cba69c4d281fa4ccf2cb0a4904526@codeaurora.org"},"message":"rwsem: Optimized ARM RWSEM algorithm\n\nRWSEM implementation for ARM using atomic functions.\nHeavily based on arch/sh/include/asm/rwsem.h","distinct":true,"url":"https://api.github.com/repos/Fenix46/LuckyK/commits/2072a3c683b4dc90010460a25419de2240014a41"},{"sha":"40782493db56cc9df455e862d7bb01ef59949c4d","author":{"name":"Yuanhan Liu","email":"8ef473d69abf305de7e8e065d81b700cfcd5fc24@linux.intel.com"},"message":"rwsem-spinlock: Implement writer lock-stealing for better scalability\n\nWe (Linux Kernel Performance project) found a regression\nintroduced by commit:\n\n  5a505085f043 mm/rmap: Convert the struct anon_vma::mutex to an rwsem\n\nwhich converted all anon_vma::mutex locks rwsem write locks.\n\nThe semantics are the same, but the behavioral difference is\nquite huge in some cases. After investigating it we found the\nroot cause: mutexes support lock stealing while rwsems don't.\n\nHere is the link for the detailed regression report:\n\n  https://lkml.org/lkml/2013/1/29/84\n\nIngo suggested adding write lock stealing to rwsems:\n\n    \"I think we should allow lock-steal between rwsem writers - that\n     will not hurt fairness as most rwsem fairness concerns relate to\n     reader vs. writer fairness\"\n\nAnd here is the rwsem-spinlock version.\n\nWith this patch, we got a double performance increase in one\ntest box with following aim7 workfile:\n\n    FILESIZE: 1M\n    POOLSIZE: 10M\n    10 fork_test\n\n /usr/bin/time output w/o patch                       /usr/bin/time_output with patch\n -- Percent of CPU this job got: 369%                 Percent of CPU this job got: 537%\n Voluntary context switches: 640595016                Voluntary context switches: 157915561\n\nWe got a 45% increase in CPU usage and saved about 3/4 voluntary context switches.\n\nReported-by: LKP project <lkp@linux.intel.com>\nSuggested-by: Ingo Molnar <mingo@kernel.org>\nSigned-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>\nCc: Alex Shi <alex.shi@intel.com>\nCc: David Howells <dhowells@redhat.com>\nCc: Michel Lespinasse <walken@google.com>\nCc: Linus Torvalds <torvalds@linux-foundation.org>\nCc: Andrew Morton <akpm@linux-foundation.org>\nCc: Peter Zijlstra <a.p.zijlstra@chello.nl>\nCc: Anton Blanchard <anton@samba.org>\nCc: Arjan van de Ven <arjan@linux.intel.com>\nCc: paul.gortmaker@windriver.com\nLink: http://lkml.kernel.org/r/1359716356-23865-1-git-send-email-yuanhan.liu@linux.intel.com\nSigned-off-by: Ingo Molnar <mingo@kernel.org>","distinct":true,"url":"https://api.github.com/repos/Fenix46/LuckyK/commits/40782493db56cc9df455e862d7bb01ef59949c4d"},{"sha":"ef9af4d5a4b288c55532b237d11856e1701f044a","author":{"name":"Alex Shi","email":"86471483ef45d8c07197ca74d2a2a81eaf9f0582@intel.com"},"message":"rwsem: Implement writer lock-stealing for better scalability\n\nCommit 5a505085f043 (\"mm/rmap: Convert the struct anon_vma::mutex\nto an rwsem\") changed struct anon_vma::mutex to an rwsem, which\ncaused aim7 fork_test performance to drop by 50%.\n\nYuanhan Liu did the following excellent analysis:\n\n    https://lkml.org/lkml/2013/1/29/84\n\nand found that the regression is caused by strict, serialized,\nFIFO sequential write-ownership of rwsems. Ingo suggested\nimplementing opportunistic lock-stealing for the front writer\ntask in the waitqueue.\n\nYuanhan Liu implemented lock-stealing for spinlock-rwsems,\nwhich indeed recovered much of the regression - confirming\nthe analysis that the main factor in the regression was the\nFIFO writer-fairness of rwsems.\n\nIn this patch we allow lock-stealing to happen when the first\nwaiter is also writer. With that change in place the\naim7 fork_test performance is fully recovered on my\nIntel NHM EP, NHM EX, SNB EP 2S and 4S test-machines.\n\nReported-by: lkp@linux.intel.com\nReported-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>\nSigned-off-by: Alex Shi <alex.shi@intel.com>\nCc: David Howells <dhowells@redhat.com>\nCc: Michel Lespinasse <walken@google.com>\nCc: Linus Torvalds <torvalds@linux-foundation.org>\nCc: Andrew Morton <akpm@linux-foundation.org>\nCc: Peter Zijlstra <a.p.zijlstra@chello.nl>\nCc: Anton Blanchard <anton@samba.org>\nCc: Arjan van de Ven <arjan@linux.intel.com>\nCc: paul.gortmaker@windriver.com\nLink: https://lkml.org/lkml/2013/1/29/84\nLink: http://lkml.kernel.org/r/1360069915-31619-1-git-send-email-alex.shi@intel.com\n[ Small stylistic fixes, updated changelog. ]\nSigned-off-by: Ingo Molnar <mingo@kernel.org>","distinct":true,"url":"https://api.github.com/repos/Fenix46/LuckyK/commits/ef9af4d5a4b288c55532b237d11856e1701f044a"},{"sha":"f081a45de3e5ba078e1b1490e5cf9527ba665680","author":{"name":"Michel Lespinasse","email":"a5773662789a0e7d846e428fa24f3d04d48f4dbd@google.com"},"message":"rwsem: make the waiter type an enumeration rather than a bitmask\n\nWe are not planning to add some new waiter flags, so we can convert the\nwaiter type into an enumeration.\n\nBackground: David Howells suggested I do this back when I tried adding\na new waiter type for unfair readers. However, I believe the cleanup\napplies regardless of that use case.\n\nSigned-off-by: Michel Lespinasse <walken@google.com>","distinct":true,"url":"https://api.github.com/repos/Fenix46/LuckyK/commits/f081a45de3e5ba078e1b1490e5cf9527ba665680"},{"sha":"e94fa3d3b33dc58b3ab58b5b50fbc2af4b322541","author":{"name":"Michel Lespinasse","email":"a5773662789a0e7d846e428fa24f3d04d48f4dbd@google.com"},"message":"rwsem: shorter spinlocked section in rwsem_down_failed_common()\n\nThis change reduces the size of the spinlocked and TASK_UNINTERRUPTIBLE\nsections in rwsem_down_failed_common():\n\n- We only need the sem->wait_lock to insert ourselves on the wait_list;\n  the waiter node can be prepared outside of the wait_lock.\n\n- The task state only needs to be set to TASK_UNINTERRUPTIBLE immediately\n  before checking if we actually need to sleep; it doesn't need to protect\n  the entire function.\n\nSigned-off-by: Michel Lespinasse <walken@google.com>","distinct":true,"url":"https://api.github.com/repos/Fenix46/LuckyK/commits/e94fa3d3b33dc58b3ab58b5b50fbc2af4b322541"},{"sha":"5b654d6da6fd34e42f8a55107032d87aa693a70f","author":{"name":"Michel Lespinasse","email":"a5773662789a0e7d846e428fa24f3d04d48f4dbd@google.com"},"message":"rwsem: move rwsem_down_failed_common code into rwsem_down_{read,write}_failed\n\nRemove the rwsem_down_failed_common function and replace it with two\nidentical copies of its code in rwsem_down_{read,write}_failed.\nThis is because we want to make different optimizations in\nrwsem_down_{read,write}_failed; we are adding this pure-duplication\nstep as a separate commit in order to make it easier to check the\nfollowing steps.\n\nSigned-off-by: Michel Lespinasse <walken@google.com>","distinct":true,"url":"https://api.github.com/repos/Fenix46/LuckyK/commits/5b654d6da6fd34e42f8a55107032d87aa693a70f"},{"sha":"ac5c3cbb89dcb11b0d4c182b4c2d96b74e0d53a4","author":{"name":"Michel Lespinasse","email":"a5773662789a0e7d846e428fa24f3d04d48f4dbd@google.com"},"message":"rwsem: simplify rwsem_down_read_failed\n\nWhen trying to acquire a read lock, the RWSEM_ACTIVE_READ_BIAS adjustment\ndoesn't cause other readers to block, so we never have to worry about waking\nthem back after canceling this adjustment in rwsem_down_read_failed().\n\nWe also never want to steal the lock in rwsem_down_read_failed(), so we\ndon't have to grab the wait_lock either.\n\nSigned-off-by: Michel Lespinasse <walken@google.com>","distinct":true,"url":"https://api.github.com/repos/Fenix46/LuckyK/commits/ac5c3cbb89dcb11b0d4c182b4c2d96b74e0d53a4"},{"sha":"3412652081e98cabc48eed2b1b628d0adaa1ea22","author":{"name":"Michel Lespinasse","email":"a5773662789a0e7d846e428fa24f3d04d48f4dbd@google.com"},"message":"rwsem: simplify rwsem_down_write_failed\n\nWhen waking writers, we never grant them the lock - instead, they have\nto acquire it themselves when they run, and remove themselves from the\nwait_list when they succeed.\n\nAs a result, we can do a few simplifications in rwsem_down_write_failed():\n\n- We don't need to check for !waiter.task since __rwsem_do_wake() doesn't\n  remove writers from the wait_list\n\n- There is no point releaseing the wait_lock before entering the wait loop,\n  as we will need to reacquire it immediately. We can change the loop so\n  that the lock is always held at the start of each loop iteration.\n\n- We don't need to get a reference on the task structure, since the task\n  is responsible for removing itself from the wait_list. There is no risk,\n  like in the rwsem_down_read_failed() case, that a task would wake up and\n  exit (thus destroying its task structure) while __rwsem_do_wake() is\n  still running - wait_lock protects against that.\n\nSigned-off-by: Michel Lespinasse <walken@google.com>","distinct":true,"url":"https://api.github.com/repos/Fenix46/LuckyK/commits/3412652081e98cabc48eed2b1b628d0adaa1ea22"},{"sha":"fd2ea5b79cb1de06a192c5a591b3dde1350e3559","author":{"name":"Michel Lespinasse","email":"a5773662789a0e7d846e428fa24f3d04d48f4dbd@google.com"},"message":"rwsem: more agressive lock stealing in rwsem_down_write_failed\n\nSome small code simplifications can be achieved by doing more agressive\nlock stealing:\n\n- When rwsem_down_write_failed() notices that there are no active locks\n  (and thus no thread to wake us if we decided to sleep), it used to wake\n  the first queued process. However, stealing the lock is also sufficient\n  to deal with this case, so we don't need this check anymore.\n\n- In try_get_writer_sem(), we can steal the lock even when the first waiter\n  is a reader. This is correct because the code path that wakes readers is\n  protected by the wait_lock. As to the performance effects of this change,\n  they are expected to be minimal: readers are still granted the lock\n  (rather than having to acquire it themselves) when they reach the front\n  of the wait queue, so we have essentially the same behavior as in\n  rwsem-spinlock.\n\nSigned-off-by: Michel Lespinasse <walken@google.com>","distinct":true,"url":"https://api.github.com/repos/Fenix46/LuckyK/commits/fd2ea5b79cb1de06a192c5a591b3dde1350e3559"}]}
{"actor":{"display_login":"Fenix46"}}