git checkout 874afd6987b02a0d69a4c5b95efd8f2f8de1ed7e Previous HEAD position was d1b44b0... kfifo: fix kfifo_alloc() and kfifo_init() HEAD is now at 874afd6... Merge remote-tracking branch 'lzo-update/lzo-update' 2013-01-27-11:49:52 874afd6987b02a0d69a4c5b95efd8f2f8de1ed7e compiling usage: git diff [--no-index] /home/wfg/mm 2013-01-27-12:05:37 detecting boot state 3.8.0-rc4-bisect3-06767-g874afd6 #20 \t9.\t10 SUCCESS bisect: good commit 874afd6987b02a0d69a4c5b95efd8f2f8de1ed7e git bisect start d1b44b0de60d4f59c1235be5641321f3b170434d 874afd6987b02a0d69a4c5b95efd8f2f8de1ed7e -- Previous HEAD position was 874afd6... Merge remote-tracking branch 'lzo-update/lzo-update' HEAD is now at 3c0eee3f... Linux 2.6.37 Bisecting: 188 revisions left to test after this (roughly 8 steps) [bdae153c611f7504caf77c2db82b9639c17339c7] memcg: debugging facility to access dangling memcgs git bisect run /c/kernel-tests/bisect-test-boot-failure.sh obj-bisect-x86_64 running /c/kernel-tests/bisect-test-boot-failure.sh obj-bisect-x86_64 2013-01-27-12:10:15 bdae153c611f7504caf77c2db82b9639c17339c7 compiling usage: git diff [--no-index] /home/wfg/mm 2013-01-27-12:13:12 detecting boot state 3.8.0-rc4-bisect3-06956-gbdae153 #21 .\t8 TEST FAILURE Bisecting: 94 revisions left to test after this (roughly 7 steps) [c38342d0a65d59f5b424ac29c0f9f22c01bd353e] mm-remove-flags-argument-to-mmap_region-fix running /c/kernel-tests/bisect-test-boot-failure.sh obj-bisect-x86_64 2013-01-27-12:16:14 c38342d0a65d59f5b424ac29c0f9f22c01bd353e compiling usage: git diff [--no-index] /home/wfg/mm 2013-01-27-12:19:01 detecting boot state 3.8.0-rc4-bisect3-06861-gc38342d #22 \t5.\t10 SUCCESS Bisecting: 47 revisions left to test after this (roughly 6 steps) [477e4a399fd5839b01b662b2b8e684ec4474c030] x86: get pg_data_t's memory from other node running /c/kernel-tests/bisect-test-boot-failure.sh obj-bisect-x86_64 2013-01-27-12:23:03 477e4a399fd5839b01b662b2b8e684ec4474c030 compiling usage: git diff [--no-index] /home/wfg/mm 2013-01-27-12:25:49 detecting boot state 3.8.0-rc4-bisect3-06908-g477e4a3 #23 .\t1\t9\t10\t12 SUCCESS Bisecting: 23 revisions left to test after this (roughly 5 steps) [97e5569bc77b89a5ec5799e1f3cc599167c6fe81] usb: forbid memory allocation with I/O during bus reset running /c/kernel-tests/bisect-test-boot-failure.sh obj-bisect-x86_64 2013-01-27-12:31:51 97e5569bc77b89a5ec5799e1f3cc599167c6fe81 compiling usage: git diff [--no-index] /home/wfg/mm 2013-01-27-12:34:40 detecting boot state 3.8.0-rc4-bisect3-06932-g97e5569 #24 \t1\t2\t10\t11\t13 SUCCESS Bisecting: 11 revisions left to test after this (roughly 4 steps) [a35e277ffa80164bc918f6c40f1b74fa37270e39] mm/rmap: rename anon_vma_unlock() => anon_vma_unlock_write() running /c/kernel-tests/bisect-test-boot-failure.sh obj-bisect-x86_64 2013-01-27-12:40:43 a35e277ffa80164bc918f6c40f1b74fa37270e39 compiling usage: git diff [--no-index] /home/wfg/mm 2013-01-27-12:43:34 detecting boot state 3.8.0-rc4-bisect3-06944-ga35e277 #25 TEST FAILURE Bisecting: 5 revisions left to test after this (roughly 3 steps) [205713fcdba336b8777690e336623012cfec4611] mm: Fold page->_last_nid into page->flags where possible running /c/kernel-tests/bisect-test-boot-failure.sh obj-bisect-x86_64 2013-01-27-12:44:36 205713fcdba336b8777690e336623012cfec4611 compiling usage: git diff [--no-index] /home/wfg/mm 2013-01-27-12:47:16 detecting boot state 3.8.0-rc4-bisect3-06938-g205713f #26 \t7.\t8 SUCCESS Bisecting: 2 revisions left to test after this (roughly 2 steps) [1163966c83a0f8281eae5a8090463e9db5f994c1] swap: make each swap partition have one address_space running /c/kernel-tests/bisect-test-boot-failure.sh obj-bisect-x86_64 2013-01-27-12:51:18 1163966c83a0f8281eae5a8090463e9db5f994c1 compiling usage: git diff [--no-index] /home/wfg/mm 2013-01-27-12:53:51 detecting boot state 3.8.0-rc4-bisect3-06941-g1163966 #27 \t2.\t7............................................................................\t10\t12. SUCCESS Bisecting: 0 revisions left to test after this (roughly 1 step) [51a65898ca3ce5435c809c5046cc949b28690a17] swap: add per-partition lock for swapfile running /c/kernel-tests/bisect-test-boot-failure.sh obj-bisect-x86_64 2013-01-27-14:17:13 51a65898ca3ce5435c809c5046cc949b28690a17 compiling usage: git diff [--no-index] /home/wfg/mm 2013-01-27-14:18:51 detecting boot state 3.8.0-rc4-bisect3-06943-g51a6589 #28 ........................................................................... TEST FAILURE Bisecting: 0 revisions left to test after this (roughly 0 steps) [36e20dddc77e51bab6404e906a25eaa01cd47784] swap-make-each-swap-partition-have-one-address_space-fix running /c/kernel-tests/bisect-test-boot-failure.sh obj-bisect-x86_64 2013-01-27-15:35:10 36e20dddc77e51bab6404e906a25eaa01cd47784 compiling usage: git diff [--no-index] /home/wfg/mm 2013-01-27-15:36:53 detecting boot state 3.8.0-rc4-bisect3-06942-g36e20dd #29 \t7..............................\t17............................................................................... SUCCESS 51a65898ca3ce5435c809c5046cc949b28690a17 is the first bad commit commit 51a65898ca3ce5435c809c5046cc949b28690a17 Author: Shaohua Li Date: Thu Jan 24 13:13:50 2013 +1100 swap: add per-partition lock for swapfile swap_lock is heavily contended when I test swap to 3 fast SSD (even slightly slower than swap to 2 such SSD). The main contention comes from swap_info_get(). This patch tries to fix the gap with adding a new per-partition lock. Global data like nr_swapfiles, total_swap_pages, least_priority and swap_list are still protected by swap_lock. nr_swap_pages is an atomic now, it can be changed without swap_lock. In theory, it's possible get_swap_page() finds no swap pages but actually there are free swap pages. But sounds not a big problem. Accessing partition specific data (like scan_swap_map and so on) is only protected by swap_info_struct.lock. Changing swap_info_struct.flags need hold swap_lock and swap_info_struct.lock, because scan_scan_map() will check it. read the flags is ok with either the locks hold. If both swap_lock and swap_info_struct.lock must be hold, we always hold the former first to avoid deadlock. swap_entry_free() can change swap_list. To delete that code, we add a new highest_priority_index. Whenever get_swap_page() is called, we check it. If it's valid, we use it. It's a pity get_swap_page() still holds swap_lock(). But in practice, swap_lock() isn't heavily contended in my test with this patch (or I can say there are other much more heavier bottlenecks like TLB flush). And BTW, looks get_swap_page() doesn't really need the lock. We never free swap_info[] and we check SWAP_WRITEOK flag. The only risk without the lock is we could swapout to some low priority swap, but we can quickly recover after several rounds of swap, so sounds not a big deal to me. But I'd prefer to fix this if it's a real problem. "swap: make each swap partition have one address_space" improved the swapout speed from 1.7G/s to 2G/s. This patch further improves the speed to 2.3G/s, so around 15% improvement. It's a multi-process test, so TLB flush isn't the biggest bottleneck before the patches. Signed-off-by: Shaohua Li Cc: Hugh Dickins Cc: Rik van Riel Cc: Minchan Kim Cc: Greg Kroah-Hartman Cc: Seth Jennings Cc: Konrad Rzeszutek Wilk Cc: Xiao Guangrong Cc: Dan Magenheimer Signed-off-by: Andrew Morton :040000 040000 3fe3d57e6f3b8e2bea9675edf45169a52043e657 572b7e9a4d6cdae2a41b2374c2ec4629022b7a0a M include :040000 040000 c46a38cc5c639cd285ed808ce56c8dfcbfb68b74 11e38bc499ad6c869e6fb03b459554891a506360 M mm bisect run success 2013-01-27-17:29:24 36e20dddc77e51bab6404e906a25eaa01cd47784 compiling /home/wfg/mm 2013-01-27-17:29:52 detecting boot state 3.8.0-rc4-bisect3-06942-g36e20dd #29 ............................................................................................................................................................ 10.............................................................................................................................................................. 19 20............................................................................................................................................................. 28 SUCCESS ========= linux-next ========= 2013-01-27-21:29:58 1587f71ebbf5aedf754062baa11fcc9e9b49ecf0 compiling /home/wfg/mm 2013-01-27-21:32:26 detecting boot state 3.8.0-rc4-bisect3-next-20130125 #30 ........................................................................................................................................................ 8 10 TEST FAILURE ERROR# 1: /c/kernel-tests/bisect:59: main: $BISECT_TEST $KBUILD_OUTPUT