public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* khugepaged / firefox going wild in 3.18-rc
@ 2014-11-04 23:20 Norbert Preining
  2014-11-05  0:00 ` David Rientjes
  0 siblings, 1 reply; 12+ messages in thread
From: Norbert Preining @ 2014-11-04 23:20 UTC (permalink / raw)
  To: linux-kernel

Dear all,

(please Cc)

since 3.18-rc started, regularly, but unpredictably, firefox
(Debian iceweasel) goes completely boom to 100% CPU, and there
is also a kernel task khugepaged doing the same.

I need to kill firefox, or better the X session to get it back to normal.

THe logs don't show any strange output

top's top process:

27021 norbert   20   0 1351536 449868  88788 R 100.4  5.6   4:46.16 iceweasel   
   35 root      39  19       0      0      0 R 100.0  0.0   2:41.10 khugepaged  

Switching back to 3.17 does Not* exhibit the same behaviour.

Is this a bug in Firefox/Iceweasel, or is there something luring in the
kernel.


All the best

Norbert

------------------------------------------------------------------------
PREINING, Norbert                               http://www.preining.info
JAIST, Japan                                 TeX Live & Debian Developer
GPG: 0x860CDC13   fp: F7D8 A928 26E3 16A1 9FA0  ACF0 6CAC A448 860C DC13
------------------------------------------------------------------------

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: khugepaged / firefox going wild in 3.18-rc
  2014-11-04 23:20 khugepaged / firefox going wild in 3.18-rc Norbert Preining
@ 2014-11-05  0:00 ` David Rientjes
  2014-11-05  0:10   ` Norbert Preining
  0 siblings, 1 reply; 12+ messages in thread
From: David Rientjes @ 2014-11-05  0:00 UTC (permalink / raw)
  To: Norbert Preining; +Cc: linux-kernel

On Wed, 5 Nov 2014, Norbert Preining wrote:

> Dear all,
> 
> (please Cc)
> 
> since 3.18-rc started, regularly, but unpredictably, firefox
> (Debian iceweasel) goes completely boom to 100% CPU, and there
> is also a kernel task khugepaged doing the same.
> 
> I need to kill firefox, or better the X session to get it back to normal.
> 
> THe logs don't show any strange output
> 
> top's top process:
> 
> 27021 norbert   20   0 1351536 449868  88788 R 100.4  5.6   4:46.16 iceweasel   
>    35 root      39  19       0      0      0 R 100.0  0.0   2:41.10 khugepaged  
> 
> Switching back to 3.17 does Not* exhibit the same behaviour.
> 
> Is this a bug in Firefox/Iceweasel, or is there something luring in the
> kernel.
> 

If you have the ability to kill your X session, then you presumably are 
able to capture /proc/pid/stack for these pids to see where it is busy.  
It might also be helpful to see how the grep ^thp_ /proc/vmstat and 
grep ^compact_ /proc/vmstat counters change over time.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: khugepaged / firefox going wild in 3.18-rc
  2014-11-05  0:00 ` David Rientjes
@ 2014-11-05  0:10   ` Norbert Preining
  2014-11-05  0:12     ` Norbert Preining
  0 siblings, 1 reply; 12+ messages in thread
From: Norbert Preining @ 2014-11-05  0:10 UTC (permalink / raw)
  To: David Rientjes; +Cc: linux-kernel

Hi David,

thanks for your answer.

On Tue, 04 Nov 2014, David Rientjes wrote:
> If you have the ability to kill your X session, then you presumably are 
> able to capture /proc/pid/stack for these pids to see where it is busy.  

Yes I can do that, I can even reproduce it on *every* start of iceweasel
after it happened the first time.

There is no /proc/PID/stack, though .....

> It might also be helpful to see how the grep ^thp_ /proc/vmstat and 
> grep ^compact_ /proc/vmstat counters change over time.

I captured that over timne, as well as the contents of
	/proc/PID/stat
for iceweasel and khugepaged. There are some numbers steadily
increasing.

Here is what I got:

START
thp_fault_alloc 9092
thp_fault_fallback 87
thp_collapse_alloc 5003
thp_collapse_alloc_failed 19
thp_split 2889
thp_zero_page_alloc 2
thp_zero_page_alloc_failed 0
compact_migrate_scanned 400301
compact_free_scanned 8634053
compact_isolated 687993
compact_stall 567
compact_fail 101
compact_success 466


thp_fault_alloc 9127
thp_fault_fallback 100
thp_collapse_alloc 5008
thp_collapse_alloc_failed 19
thp_split 2892
thp_zero_page_alloc 2
thp_zero_page_alloc_failed 0
compact_migrate_scanned 430094
compact_free_scanned 10444689
compact_isolated 709843
compact_stall 603
compact_fail 130
compact_success 473
===
thp_fault_alloc 9127
thp_fault_fallback 100
thp_collapse_alloc 5008
thp_collapse_alloc_failed 19
thp_split 2892
thp_zero_page_alloc 2
thp_zero_page_alloc_failed 0
compact_migrate_scanned 430094
compact_free_scanned 10444689
compact_isolated 709843
compact_stall 603
compact_fail 130
compact_success 473
===
thp_fault_alloc 9127
thp_fault_fallback 100
thp_collapse_alloc 5008
thp_collapse_alloc_failed 19
thp_split 2892
thp_zero_page_alloc 2
thp_zero_page_alloc_failed 0
compact_migrate_scanned 430094
compact_free_scanned 10444689
compact_isolated 709843
compact_stall 603
compact_fail 130
compact_success 473
===
thp_fault_alloc 9127
thp_fault_fallback 100
thp_collapse_alloc 5008
thp_collapse_alloc_failed 19
thp_split 2892
thp_zero_page_alloc 2
thp_zero_page_alloc_failed 0
compact_migrate_scanned 430094
compact_free_scanned 10444689
compact_isolated 709843
compact_stall 603
compact_fail 130
compact_success 473
===


/proc/PID/stat for iceweasel over some time:
8927 (iceweasel) R 27016 26901 26901 0 -1 4204544 100479 2248 5 0 565 14849 1 0 20 0 47 0 38224838 1134931968 84204 18446744073709551615 139840244875264 139840244981188 140737356374240 140737356331656 139840166756100 0 0 4096 17583 18446744073709551615 0 0 17 2 0 0 1 0 0 139840247078912 139840247080712 139840278519808 140737356376815 140737356376825 140737356376825 140737356378085 0
8927 (iceweasel) R 27016 26901 26901 0 -1 4204544 100479 2248 5 0 565 15130 1 0 20 0 47 0 38224838 1134931968 84204 18446744073709551615 139840244875264 139840244981188 140737356374240 140737356331656 139840166756100 0 0 4096 17583 18446744073709551615 0 0 17 1 0 0 1 0 0 139840247078912 139840247080712 139840278519808 140737356376815 140737356376825 140737356376825 140737356378085 0
8927 (iceweasel) R 27016 26901 26901 0 -1 4204544 100479 2248 5 0 565 15460 1 0 20 0 47 0 38224838 1134931968 84204 18446744073709551615 139840244875264 139840244981188 140737356374240 140737356331656 139840166756100 0 0 4096 17583 18446744073709551615 0 0 17 1 0 0 1 0 0 139840247078912 139840247080712 139840278519808 140737356376815 140737356376825 140737356376825 140737356378085 0
8927 (iceweasel) R 27016 26901 26901 0 -1 4204544 100479 2248 5 0 565 15724 1 0 20 0 47 0 38224838 1134931968 84204 18446744073709551615 139840244875264 139840244981188 140737356374240 140737356331656 139840166756100 0 0 4096 17583 18446744073709551615 0 0 17 1 0 0 1 0 0 139840247078912 139840247080712 139840278519808 140737356376815 140737356376825 140737356376825 140737356378085 0


/proc/PID/stat for khugepaged over some time:
35 (khugepaged) R 2 0 0 0 -1 2107456 0 0 0 0 0 39779 0 0 39 19 1 0 22 0 0 18446744073709551615 0 0 0 0 0 0 0 2147483647 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0
35 (khugepaged) R 2 0 0 0 -1 2107456 0 0 0 0 0 40104 0 0 39 19 1 0 22 0 0 18446744073709551615 0 0 0 0 0 0 0 2147483647 0 0 0 0 17 2 0 0 0 0 0 0 0 0 0 0 0 0 0
35 (khugepaged) R 2 0 0 0 -1 2107456 0 0 0 0 0 40516 0 0 39 19 1 0 22 0 0 18446744073709551615 0 0 0 0 0 0 0 2147483647 0 0 0 0 17 2 0 0 0 0 0 0 0 0 0 0 0 0 0
35 (khugepaged) R 2 0 0 0 -1 2107456 0 0 0 0 0 40797 0 0 39 19 1 0 22 0 0 18446744073709551615 0 0 0 0 0 0 0 2147483647 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0



Hope that helps

Norbert

------------------------------------------------------------------------
PREINING, Norbert                               http://www.preining.info
JAIST, Japan                                 TeX Live & Debian Developer
GPG: 0x860CDC13   fp: F7D8 A928 26E3 16A1 9FA0  ACF0 6CAC A448 860C DC13
------------------------------------------------------------------------

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: khugepaged / firefox going wild in 3.18-rc
  2014-11-05  0:10   ` Norbert Preining
@ 2014-11-05  0:12     ` Norbert Preining
  2014-11-05  0:20       ` David Rientjes
  0 siblings, 1 reply; 12+ messages in thread
From: Norbert Preining @ 2014-11-05  0:12 UTC (permalink / raw)
  To: David Rientjes; +Cc: linux-kernel

[-- Attachment #1: Type: text/plain, Size: 5232 bytes --]

Hi David,

one more thing, attached dmesg output with some page faults,
maybe this is connected?

On Wed, 05 Nov 2014, Norbert Preining wrote:
> Hi David,
> 
> thanks for your answer.
> 
> On Tue, 04 Nov 2014, David Rientjes wrote:
> > If you have the ability to kill your X session, then you presumably are 
> > able to capture /proc/pid/stack for these pids to see where it is busy.  
> 
> Yes I can do that, I can even reproduce it on *every* start of iceweasel
> after it happened the first time.
> 
> There is no /proc/PID/stack, though .....
> 
> > It might also be helpful to see how the grep ^thp_ /proc/vmstat and 
> > grep ^compact_ /proc/vmstat counters change over time.
> 
> I captured that over timne, as well as the contents of
> 	/proc/PID/stat
> for iceweasel and khugepaged. There are some numbers steadily
> increasing.
> 
> Here is what I got:
> 
> START
> thp_fault_alloc 9092
> thp_fault_fallback 87
> thp_collapse_alloc 5003
> thp_collapse_alloc_failed 19
> thp_split 2889
> thp_zero_page_alloc 2
> thp_zero_page_alloc_failed 0
> compact_migrate_scanned 400301
> compact_free_scanned 8634053
> compact_isolated 687993
> compact_stall 567
> compact_fail 101
> compact_success 466
> 
> 
> thp_fault_alloc 9127
> thp_fault_fallback 100
> thp_collapse_alloc 5008
> thp_collapse_alloc_failed 19
> thp_split 2892
> thp_zero_page_alloc 2
> thp_zero_page_alloc_failed 0
> compact_migrate_scanned 430094
> compact_free_scanned 10444689
> compact_isolated 709843
> compact_stall 603
> compact_fail 130
> compact_success 473
> ===
> thp_fault_alloc 9127
> thp_fault_fallback 100
> thp_collapse_alloc 5008
> thp_collapse_alloc_failed 19
> thp_split 2892
> thp_zero_page_alloc 2
> thp_zero_page_alloc_failed 0
> compact_migrate_scanned 430094
> compact_free_scanned 10444689
> compact_isolated 709843
> compact_stall 603
> compact_fail 130
> compact_success 473
> ===
> thp_fault_alloc 9127
> thp_fault_fallback 100
> thp_collapse_alloc 5008
> thp_collapse_alloc_failed 19
> thp_split 2892
> thp_zero_page_alloc 2
> thp_zero_page_alloc_failed 0
> compact_migrate_scanned 430094
> compact_free_scanned 10444689
> compact_isolated 709843
> compact_stall 603
> compact_fail 130
> compact_success 473
> ===
> thp_fault_alloc 9127
> thp_fault_fallback 100
> thp_collapse_alloc 5008
> thp_collapse_alloc_failed 19
> thp_split 2892
> thp_zero_page_alloc 2
> thp_zero_page_alloc_failed 0
> compact_migrate_scanned 430094
> compact_free_scanned 10444689
> compact_isolated 709843
> compact_stall 603
> compact_fail 130
> compact_success 473
> ===
> 
> 
> /proc/PID/stat for iceweasel over some time:
> 8927 (iceweasel) R 27016 26901 26901 0 -1 4204544 100479 2248 5 0 565 14849 1 0 20 0 47 0 38224838 1134931968 84204 18446744073709551615 139840244875264 139840244981188 140737356374240 140737356331656 139840166756100 0 0 4096 17583 18446744073709551615 0 0 17 2 0 0 1 0 0 139840247078912 139840247080712 139840278519808 140737356376815 140737356376825 140737356376825 140737356378085 0
> 8927 (iceweasel) R 27016 26901 26901 0 -1 4204544 100479 2248 5 0 565 15130 1 0 20 0 47 0 38224838 1134931968 84204 18446744073709551615 139840244875264 139840244981188 140737356374240 140737356331656 139840166756100 0 0 4096 17583 18446744073709551615 0 0 17 1 0 0 1 0 0 139840247078912 139840247080712 139840278519808 140737356376815 140737356376825 140737356376825 140737356378085 0
> 8927 (iceweasel) R 27016 26901 26901 0 -1 4204544 100479 2248 5 0 565 15460 1 0 20 0 47 0 38224838 1134931968 84204 18446744073709551615 139840244875264 139840244981188 140737356374240 140737356331656 139840166756100 0 0 4096 17583 18446744073709551615 0 0 17 1 0 0 1 0 0 139840247078912 139840247080712 139840278519808 140737356376815 140737356376825 140737356376825 140737356378085 0
> 8927 (iceweasel) R 27016 26901 26901 0 -1 4204544 100479 2248 5 0 565 15724 1 0 20 0 47 0 38224838 1134931968 84204 18446744073709551615 139840244875264 139840244981188 140737356374240 140737356331656 139840166756100 0 0 4096 17583 18446744073709551615 0 0 17 1 0 0 1 0 0 139840247078912 139840247080712 139840278519808 140737356376815 140737356376825 140737356376825 140737356378085 0
> 
> 
> /proc/PID/stat for khugepaged over some time:
> 35 (khugepaged) R 2 0 0 0 -1 2107456 0 0 0 0 0 39779 0 0 39 19 1 0 22 0 0 18446744073709551615 0 0 0 0 0 0 0 2147483647 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> 35 (khugepaged) R 2 0 0 0 -1 2107456 0 0 0 0 0 40104 0 0 39 19 1 0 22 0 0 18446744073709551615 0 0 0 0 0 0 0 2147483647 0 0 0 0 17 2 0 0 0 0 0 0 0 0 0 0 0 0 0
> 35 (khugepaged) R 2 0 0 0 -1 2107456 0 0 0 0 0 40516 0 0 39 19 1 0 22 0 0 18446744073709551615 0 0 0 0 0 0 0 2147483647 0 0 0 0 17 2 0 0 0 0 0 0 0 0 0 0 0 0 0
> 35 (khugepaged) R 2 0 0 0 -1 2107456 0 0 0 0 0 40797 0 0 39 19 1 0 22 0 0 18446744073709551615 0 0 0 0 0 0 0 2147483647 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> 
> 

Norbert

------------------------------------------------------------------------
PREINING, Norbert                               http://www.preining.info
JAIST, Japan                                 TeX Live & Debian Developer
GPG: 0x860CDC13   fp: F7D8 A928 26E3 16A1 9FA0  ACF0 6CAC A448 860C DC13
------------------------------------------------------------------------

[-- Attachment #2: dmesg.txt --]
[-- Type: text/plain, Size: 5195 bytes --]

[28664.834183] INFO: task Socket Thread:8931 blocked for more than 120 seconds.
[28664.834190]       Tainted: G           O   3.18.0-rc2+ #47
[28664.834193] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[28664.834196] Socket Thread   D ffff8800ccc775e8     0  8931  27016 0x00000000
[28664.834203]  ffff88020de53d50 0000000000000082 ffff880215162048 ffff88020de53fd8
[28664.834209]  ffff8800ccc771a8 0000000000011c40 ffffffff814f33d5 ffff8802090f5be0
[28664.834215]  ffff8800ccc771a8 0000000000000000 00000000000000a9 ffff8800ccc771a8
[28664.834220] Call Trace:
[28664.834231]  [<ffffffff814f33d5>] ? sock_recvmsg+0x55/0x76
[28664.834238]  [<ffffffff815b9313>] schedule+0x64/0x66
[28664.834243]  [<ffffffff815bad67>] rwsem_down_read_failed+0xc7/0xdf
[28664.834249]  [<ffffffff81055c14>] ? try_to_wake_up+0x1a1/0x1b3
[28664.834256]  [<ffffffff812592e4>] call_rwsem_down_read_failed+0x14/0x30
[28664.834261]  [<ffffffff815ba85a>] ? down_read+0x12/0x14
[28664.834267]  [<ffffffff81030433>] __do_page_fault+0x1ba/0x34a
[28664.834272]  [<ffffffff814f6553>] ? release_sock+0x112/0x11b
[28664.834279]  [<ffffffff81538ba2>] ? do_tcp_setsockopt.isra.23+0x60e/0x674
[28664.834286]  [<ffffffff810f8186>] ? fput+0x12/0x86
[28664.834290]  [<ffffffff810305f0>] do_page_fault+0xc/0xe
[28664.834295]  [<ffffffff815bd692>] page_fault+0x22/0x30
[28664.834299] INFO: task JS Watchdog:8933 blocked for more than 120 seconds.
[28664.834302]       Tainted: G           O   3.18.0-rc2+ #47
[28664.834305] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[28664.834307] JS Watchdog     D ffff8801f22d3768     0  8933  27016 0x00000000
[28664.834312]  ffff880207243e48 0000000000000082 ffff8802151788b8 ffff880207243fd8
[28664.834317]  ffff8801f22d3328 0000000000011c40 ffff880207243ee8 ffff8802090f5be0
[28664.834322]  ffffffff00000001 ffff8802090f5bf8 ffff8801f22d3328 00007f2efa914000
[28664.834328] Call Trace:
[28664.834333]  [<ffffffff815b9313>] schedule+0x64/0x66
[28664.834338]  [<ffffffff815bb013>] rwsem_down_write_failed+0x294/0x2d2
[28664.834344]  [<ffffffff81259313>] call_rwsem_down_write_failed+0x13/0x20
[28664.834349]  [<ffffffff815ba87b>] ? down_write+0x1f/0x2e
[28664.834355]  [<ffffffff810da3aa>] SyS_mprotect+0xbe/0x1d7
[28664.834360]  [<ffffffff815bbf96>] system_call_fastpath+0x16/0x1b
[28664.834364] INFO: task pool:8937 blocked for more than 120 seconds.
[28664.834367]       Tainted: G           O   3.18.0-rc2+ #47
[28664.834369] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[28664.834371] pool            D ffff8801e8947238     0  8937  27016 0x00000000
[28664.834376]  ffff880207e8bd50 0000000000000082 ffff880215162048 ffff880207e8bfd8
[28664.834381]  ffff8801e8946df8 0000000000011c40 ffff880207e8bd20 ffff8802090f5be0
[28664.834386]  ffff8801e8946df8 0000000000000000 00000000000000a9 ffff8801e8946df8
[28664.834391] Call Trace:
[28664.834397]  [<ffffffff815b9313>] schedule+0x64/0x66
[28664.834411]  [<ffffffff815bad67>] rwsem_down_read_failed+0xc7/0xdf
[28664.834416]  [<ffffffff8107945b>] ? hrtimer_get_res+0x3f/0x3f
[28664.834421]  [<ffffffff812592e4>] call_rwsem_down_read_failed+0x14/0x30
[28664.834426]  [<ffffffff815ba85a>] ? down_read+0x12/0x14
[28664.834430]  [<ffffffff81030433>] __do_page_fault+0x1ba/0x34a
[28664.834435]  [<ffffffff81107d5f>] ? __dentry_kill+0x198/0x1a0
[28664.834441]  [<ffffffff8110eb3d>] ? mntput_no_expire+0x2a/0x10c
[28664.834445]  [<ffffffff8110ec47>] ? mntput+0x28/0x2a
[28664.834450]  [<ffffffff810f837e>] ? __fput+0x184/0x193
[28664.834456]  [<ffffffff810091ad>] ? read_tsc+0x9/0xb
[28664.834462]  [<ffffffff810882c5>] ? SyS_futex+0xb9/0x120
[28664.834467]  [<ffffffff810305f0>] do_page_fault+0xc/0xe
[28664.834471]  [<ffffffff815bd692>] page_fault+0x22/0x30
[28664.834474] INFO: task Timer:8939 blocked for more than 120 seconds.
[28664.834477]       Tainted: G           O   3.18.0-rc2+ #47
[28664.834479] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[28664.834481] Timer           D ffff8800cffa25c8     0  8939  27016 0x00000000
[28664.834486]  ffff8801cd9c3d50 0000000000000082 ffff8802151788b8 ffff8801cd9c3fd8
[28664.834490]  ffff8800cffa2188 0000000000011c40 ffff8801cd9c3d20 ffff8802090f5be0
[28664.834495]  ffff8800cffa2188 0000000000000000 00000000000000a9 ffff8800cffa2188
[28664.834500] Call Trace:
[28664.834505]  [<ffffffff815b9313>] schedule+0x64/0x66
[28664.834509]  [<ffffffff815bad67>] rwsem_down_read_failed+0xc7/0xdf
[28664.834515]  [<ffffffff812592e4>] call_rwsem_down_read_failed+0x14/0x30
[28664.834520]  [<ffffffff815ba85a>] ? down_read+0x12/0x14
[28664.834524]  [<ffffffff81030433>] __do_page_fault+0x1ba/0x34a
[28664.834530]  [<ffffffff81122141>] ? fsnotify+0x228/0x24d
[28664.834535]  [<ffffffff81058f22>] ? calc_delta_fair+0x1d/0x1f
[28664.834540]  [<ffffffff810882c5>] ? SyS_futex+0xb9/0x120
[28664.834545]  [<ffffffff815b913a>] ? __schedule+0x322/0x497
[28664.834549]  [<ffffffff810305f0>] do_page_fault+0xc/0xe
[28664.834553]  [<ffffffff815bd692>] page_fault+0x22/0x30
[28695.709435] Chrome_ChildThr[8990]: segfault at 0 ip 00007fc42ea9c3da sp 00007fc4260b9450 error 6 in libmozalloc.so[7fc42ea9b000+2000]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: khugepaged / firefox going wild in 3.18-rc
  2014-11-05  0:12     ` Norbert Preining
@ 2014-11-05  0:20       ` David Rientjes
  2014-11-06 12:25         ` Vlastimil Babka
  0 siblings, 1 reply; 12+ messages in thread
From: David Rientjes @ 2014-11-05  0:20 UTC (permalink / raw)
  To: Norbert Preining; +Cc: linux-kernel

On Wed, 5 Nov 2014, Norbert Preining wrote:

> Hi David,
> 
> one more thing, attached dmesg output with some page faults,
> maybe this is connected?
> 

Hmm, I'm not aware of any mm->mmap_sem starvation issues in 3.18-rc, maybe 
this is a duplicate of another issue that someone has reported that I 
haven't seen.  The lengthy output of echo t > /proc/sysrq-trigger should 
give a clue as to what is holding it or perhaps this is a more generic 
rwsem issue.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: khugepaged / firefox going wild in 3.18-rc
  2014-11-05  0:20       ` David Rientjes
@ 2014-11-06 12:25         ` Vlastimil Babka
  2014-11-06 12:39           ` Norbert Preining
  0 siblings, 1 reply; 12+ messages in thread
From: Vlastimil Babka @ 2014-11-06 12:25 UTC (permalink / raw)
  To: David Rientjes, Norbert Preining; +Cc: linux-kernel

On 11/05/2014 01:20 AM, David Rientjes wrote:
> On Wed, 5 Nov 2014, Norbert Preining wrote:
> 
>> Hi David,
>> 
>> one more thing, attached dmesg output with some page faults,
>> maybe this is connected?
>> 
> 
> Hmm, I'm not aware of any mm->mmap_sem starvation issues in 3.18-rc, maybe 
> this is a duplicate of another issue that someone has reported that I 
> haven't seen.  The lengthy output of echo t > /proc/sysrq-trigger should 
> give a clue as to what is holding it or perhaps this is a more generic 
> rwsem issue.

Could be that another task holds the mmap_sem during THP allocation attempt on
its own page fault, and compaction goes in some kind of infinite loop. There are
two other threads that look similar:

http://article.gmane.org/gmane.linux.kernel.mm/124451/match=isolate_freepages_block+very+high+intermittent+overhead

https://lkml.org/lkml/2014/11/4/144

I suggested testing a commit revert in one thread, and a possible fix in the
other. If you can reproduce this well, that would be very useful.

khugepaged using CPU also points to either the address space scanning, or
compaction going wrong. Since 8b1645685ac it shouldn't hold mmap_sem during
compaction, but that still leaves page faulters to possibly hold it.

So yeah we would need the stacks of processes that do hog the CPU's, not those
that sleep. As David suggested, a /proc/pid/stack could work. Also can you
please provide /proc/zoneinfo ?

Thanks,
Vlastimil


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: khugepaged / firefox going wild in 3.18-rc
  2014-11-06 12:25         ` Vlastimil Babka
@ 2014-11-06 12:39           ` Norbert Preining
  2014-11-06 13:03             ` Vlastimil Babka
  0 siblings, 1 reply; 12+ messages in thread
From: Norbert Preining @ 2014-11-06 12:39 UTC (permalink / raw)
  To: Vlastimil Babka; +Cc: David Rientjes, linux-kernel

Hi Vlastimil

thanks for your answer.

In the meantime I have tried rc3, too, with the same effects.

Interestingly, once it goes into a bad state, every future approach
does the same. I started shotwell (photo organizer) and it went into the
same state (khugepaged / shotwell each using about 100% of CPu time).

On Thu, 06 Nov 2014, Vlastimil Babka wrote:
> Could be that another task holds the mmap_sem during THP allocation attempt on
> its own page fault, and compaction goes in some kind of infinite loop. There are

My feeling somehow is about the plugin-container in firefox ...
(flashplayer or something similar, but I might be wrong!). With shotwell,
I have no idea why.

> I suggested testing a commit revert in one thread, and a possible fix in the
> other. If you can reproduce this well, that would be very useful.

Which commit are you talking about? I can easily revert some/all of what you
want and do test runs.

> khugepaged using CPU also points to either the address space scanning, or
> compaction going wrong. Since 8b1645685ac it shouldn't hold mmap_sem during
> compaction, but that still leaves page faulters to possibly hold it.

So, do you mean I should try reverting 8b1645685ac?

> So yeah we would need the stacks of processes that do hog the CPU's, not those
> that sleep. As David suggested, a /proc/pid/stack could work. Also can you
> please provide /proc/zoneinfo ?

Again, as I mentioned, I don't have /proc/pid/stack for any "pid", is
this depending on some specific kerenl option?

/proc/zoneinfo I have and can send you the next time.

Thanks a lot and all the best

Norbert

------------------------------------------------------------------------
PREINING, Norbert                               http://www.preining.info
JAIST, Japan                                 TeX Live & Debian Developer
GPG: 0x860CDC13   fp: F7D8 A928 26E3 16A1 9FA0  ACF0 6CAC A448 860C DC13
------------------------------------------------------------------------

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: khugepaged / firefox going wild in 3.18-rc
  2014-11-06 12:39           ` Norbert Preining
@ 2014-11-06 13:03             ` Vlastimil Babka
  2014-11-07 13:07               ` Norbert Preining
  0 siblings, 1 reply; 12+ messages in thread
From: Vlastimil Babka @ 2014-11-06 13:03 UTC (permalink / raw)
  To: Norbert Preining; +Cc: David Rientjes, linux-kernel

On 11/06/2014 01:39 PM, Norbert Preining wrote:
> Hi Vlastimil
> 
> thanks for your answer.
> 
> In the meantime I have tried rc3, too, with the same effects.
> 
> Interestingly, once it goes into a bad state, every future approach
> does the same. I started shotwell (photo organizer) and it went into the
> same state (khugepaged / shotwell each using about 100% of CPu time).
> 
> On Thu, 06 Nov 2014, Vlastimil Babka wrote:
>> Could be that another task holds the mmap_sem during THP allocation attempt on
>> its own page fault, and compaction goes in some kind of infinite loop. There are
> 
> My feeling somehow is about the plugin-container in firefox ...
> (flashplayer or something similar, but I might be wrong!). With shotwell,
> I have no idea why.

plugin-container is different process than firefox, so it should show its CPU
consumption separately. If you see firefox, it's firefox binary itself.

>> I suggested testing a commit revert in one thread, and a possible fix in the
>> other. If you can reproduce this well, that would be very useful.
> 
> Which commit are you talking about? I can easily revert some/all of what you
> want and do test runs.

OK, one possibility is to do (it should apply cleanly)
git revert e14c720efdd73c6d69cd8d07fa894bcd11fe1973

Then there's a patch at the end of this e-mail, which however I doubt would fix
the symptoms you describe.
 

>> khugepaged using CPU also points to either the address space scanning, or
>> compaction going wrong. Since 8b1645685ac it shouldn't hold mmap_sem during
>> compaction, but that still leaves page faulters to possibly hold it.
> 
> So, do you mean I should try reverting 8b1645685ac?

No, not that one. That one should actually reduce the problem you see.

>> So yeah we would need the stacks of processes that do hog the CPU's, not those
>> that sleep. As David suggested, a /proc/pid/stack could work. Also can you
>> please provide /proc/zoneinfo ?
> 
> Again, as I mentioned, I don't have /proc/pid/stack for any "pid", is
> this depending on some specific kerenl option?

Ah I missed that. Should be CONFIG_STACKTRACE to enable that.
 
> /proc/zoneinfo I have and can send you the next time.
> 
> Thanks a lot and all the best

Great, thank you!
Vlastimil

> Norbert
> 
> ------------------------------------------------------------------------
> PREINING, Norbert                               http://www.preining.info
> JAIST, Japan                                 TeX Live & Debian Developer
> GPG: 0x860CDC13   fp: F7D8 A928 26E3 16A1 9FA0  ACF0 6CAC A448 860C DC13
> ------------------------------------------------------------------------
> 

------8<------
>From fe9c963cc665cdab50abb41f3babb5b19d08fab1 Mon Sep 17 00:00:00 2001
From: Vlastimil Babka <vbabka@suse.cz>
Date: Wed, 5 Nov 2014 14:19:18 +0100
Subject: [PATCH] mm, compaction: do not reset deferred compaction
 optimistically

In try_to_compact_pages() we reset deferred compaction for a zone where we
think compaction has succeeded. Although this action does not reset the
counters affecting deferred compaction period, just bumping the deferred order
means that another compaction attempt will be able to pass the check in
compaction_deferred() and proceed with compaction.

This is a problem when try_to_compact_pages() thinks compaction was successful
just because the watermark check is missing proper classzone_idx parameter,
but then the allocation attempt itself will fail due to its watermark check
having the proper value. Although __alloc_pages_direct_compact() will re-defer
compaction in such case, this happens only in the case of sync compaction.
Async compaction will leave the zone open for another compaction attempt which
may reset the deferred order again. This could possibly explain what
P. Christeas reported - a system where many processes include the following
backtrace:

        [<ffffffff813b1025>] preempt_schedule_irq+0x3c/0x59
        [<ffffffff813b4810>] retint_kernel+0x20/0x30
        [<ffffffff810d7481>] ? __zone_watermark_ok+0x77/0x85
        [<ffffffff810d8256>] zone_watermark_ok+0x1a/0x1c
        [<ffffffff810eee56>] compact_zone+0x215/0x4b2
        [<ffffffff810ef13f>] compact_zone_order+0x4c/0x5f
        [<ffffffff810ef2fe>] try_to_compact_pages+0xc4/0x1e8
        [<ffffffff813ad7f8>] __alloc_pages_direct_compact+0x61/0x1bf
        [<ffffffff810da299>] __alloc_pages_nodemask+0x409/0x799
        [<ffffffff8110d3fd>] new_slab+0x5f/0x21c

The issue has been made visible by commit 53853e2d2bfb ("mm, compaction: defer
each zone individually instead of preferred zone"), since before the commit,
deferred compaction for fallback zones (where classzone_idx matters) was not
considered separately.

Although work is underway to fix the underlying zone watermark check mismatch,
this patch fixes the immediate problem by removing the optimistic defer reset
completely. Its usefulness is questionable anyway, since if the allocation
really succeeds, a full defer reset (including the period counters) follows.

Fixes: 53853e2d2bfb748a8b5aa2fd1de15699266865e0
Reported-by: P. Christeas <xrg@linux.gr>
Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
---
 mm/compaction.c | 7 -------
 1 file changed, 7 deletions(-)

diff --git a/mm/compaction.c b/mm/compaction.c
index ec74cf0..f0335f9 100644
--- a/mm/compaction.c
+++ b/mm/compaction.c
@@ -1325,13 +1325,6 @@ unsigned long try_to_compact_pages(struct zonelist *zonelist,
 				      alloc_flags)) {
 			*candidate_zone = zone;
 			/*
-			 * We think the allocation will succeed in this zone,
-			 * but it is not certain, hence the false. The caller
-			 * will repeat this with true if allocation indeed
-			 * succeeds in this zone.
-			 */
-			compaction_defer_reset(zone, order, false);
-			/*
 			 * It is possible that async compaction aborted due to
 			 * need_resched() and the watermarks were ok thanks to
 			 * somebody else freeing memory. The allocation can
-- 
2.1.2



^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: khugepaged / firefox going wild in 3.18-rc
  2014-11-06 13:03             ` Vlastimil Babka
@ 2014-11-07 13:07               ` Norbert Preining
  2014-11-07 13:38                 ` Vlastimil Babka
  0 siblings, 1 reply; 12+ messages in thread
From: Norbert Preining @ 2014-11-07 13:07 UTC (permalink / raw)
  To: Vlastimil Babka; +Cc: David Rientjes, linux-kernel

Hi Vlastimil,

On Thu, 06 Nov 2014, Vlastimil Babka wrote:
> OK, one possibility is to do (it should apply cleanly)
> git revert e14c720efdd73c6d69cd8d07fa894bcd11fe1973

I am running with this reverted now, and I cannot reproduce the
khugepage going overboard anymore.

I tried hard since 2 days now, no chance to reproduce.
Before firefox or shotwell went into boom mode, but not now.
(For now!)

> > Again, as I mentioned, I don't have /proc/pid/stack for any "pid", is
> > this depending on some specific kerenl option?
> 
> Ah I missed that. Should be CONFIG_STACKTRACE to enable that.

If you want, I can compile a "default" kernel without the above commit
reverted, and turn on STACKTRACE (I have turned it one for *all* future
kernels I compile ;-)

I also didn't try the patch you send me, just the revert from above.

Please let me know which other experiments you want to see.

Thanks

Norbert

------------------------------------------------------------------------
PREINING, Norbert                               http://www.preining.info
JAIST, Japan                                 TeX Live & Debian Developer
GPG: 0x860CDC13   fp: F7D8 A928 26E3 16A1 9FA0  ACF0 6CAC A448 860C DC13
------------------------------------------------------------------------

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: khugepaged / firefox going wild in 3.18-rc
  2014-11-07 13:07               ` Norbert Preining
@ 2014-11-07 13:38                 ` Vlastimil Babka
  2014-11-07 13:57                   ` Norbert Preining
  0 siblings, 1 reply; 12+ messages in thread
From: Vlastimil Babka @ 2014-11-07 13:38 UTC (permalink / raw)
  To: Norbert Preining; +Cc: David Rientjes, linux-kernel

On 11/07/2014 02:07 PM, Norbert Preining wrote:
> Hi Vlastimil,
>
> On Thu, 06 Nov 2014, Vlastimil Babka wrote:
>> OK, one possibility is to do (it should apply cleanly)
>> git revert e14c720efdd73c6d69cd8d07fa894bcd11fe1973
>
> I am running with this reverted now, and I cannot reproduce the
> khugepage going overboard anymore.

Great, that's good news if I understand correctly, but ...

> I tried hard since 2 days now, no chance to reproduce.
> Before firefox or shotwell went into boom mode, but not now.
> (For now!)

I suggested the commit to you for revert 1 day ago, and you say you 
can't reproduce it for 2 days already? That's a bit suspicious. Did you 
already tried to revert it before my suggestion, or were you unable to 
reproduce it anymore even before the revert?

>>> Again, as I mentioned, I don't have /proc/pid/stack for any "pid", is
>>> this depending on some specific kerenl option?
>>
>> Ah I missed that. Should be CONFIG_STACKTRACE to enable that.
>
> If you want, I can compile a "default" kernel without the above commit

Hmm it would probably be more useful if I sent you some debug printing 
patches first... the stacktrace won't probably tell us much we don't 
already know.

> reverted, and turn on STACKTRACE (I have turned it one for *all* future
> kernels I compile ;-)

Yeah that's a good idea :)

> I also didn't try the patch you send me, just the revert from above.

Yeah if the revert helped, the other patch probably wouldn't change 
anything. It also didn't help the other guy with similar problem.

> Please let me know which other experiments you want to see.

I'll prepare a debugging patch and send with instructions. Meanwhile you 
could send the /proc/zoneinfo contents? :)

Thanks!
Vlastimil

> Thanks
>
> Norbert
>
> ------------------------------------------------------------------------
> PREINING, Norbert                               http://www.preining.info
> JAIST, Japan                                 TeX Live & Debian Developer
> GPG: 0x860CDC13   fp: F7D8 A928 26E3 16A1 9FA0  ACF0 6CAC A448 860C DC13
> ------------------------------------------------------------------------
>


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: khugepaged / firefox going wild in 3.18-rc
  2014-11-07 13:38                 ` Vlastimil Babka
@ 2014-11-07 13:57                   ` Norbert Preining
  2014-11-07 15:44                     ` Vlastimil Babka
  0 siblings, 1 reply; 12+ messages in thread
From: Norbert Preining @ 2014-11-07 13:57 UTC (permalink / raw)
  To: Vlastimil Babka; +Cc: David Rientjes, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1075 bytes --]

Hi Vlastimil,

On Fri, 07 Nov 2014, Vlastimil Babka wrote:
> Great, that's good news if I understand correctly, but ...

no "but ..."

> I suggested the commit to you for revert 1 day ago, and you say you
> can't reproduce it for 2 days already? That's a bit suspicious. Did

No, you suggested it yesterday during the day, and here in Japan the 
next day is already over, so my feeling is two days ;-)

So all fine ;-)

> I'll prepare a debugging patch and send with instructions. Meanwhile
> you could send the /proc/zoneinfo contents? :)

When? Running which kernel? Anyway, with the current kernel (reverted
commit as before) I get the attached zoneinfo.

Thanks, and waiting for your patches ;-)

Norbert

------------------------------------------------------------------------
PREINING, Norbert                               http://www.preining.info
JAIST, Japan                                 TeX Live & Debian Developer
GPG: 0x860CDC13   fp: F7D8 A928 26E3 16A1 9FA0  ACF0 6CAC A448 860C DC13
------------------------------------------------------------------------

[-- Attachment #2: zoneinfo.txt --]
[-- Type: text/plain, Size: 4639 bytes --]

Node 0, zone      DMA
  pages free     3974
        min      66
        low      82
        high     99
        scanned  0
        spanned  4095
        present  3996
        managed  3974
    nr_free_pages 3974
    nr_alloc_batch 17
    nr_inactive_anon 0
    nr_active_anon 0
    nr_inactive_file 0
    nr_active_file 0
    nr_unevictable 0
    nr_mlock     0
    nr_anon_pages 0
    nr_mapped    0
    nr_file_pages 0
    nr_dirty     0
    nr_writeback 0
    nr_slab_reclaimable 0
    nr_slab_unreclaimable 0
    nr_page_table_pages 0
    nr_kernel_stack 0
    nr_unstable  0
    nr_bounce    0
    nr_vmscan_write 0
    nr_vmscan_immediate_reclaim 0
    nr_writeback_temp 0
    nr_isolated_anon 0
    nr_isolated_file 0
    nr_shmem     0
    nr_dirtied   0
    nr_written   0
    nr_pages_scanned 0
    workingset_refault 0
    workingset_activate 0
    workingset_nodereclaim 0
    nr_anon_transparent_hugepages 0
    nr_free_cma  0
        protection: (0, 3399, 7878, 7878)
  pagesets
    cpu: 0
              count: 0
              high:  0
              batch: 1
  vm stats threshold: 6
    cpu: 1
              count: 0
              high:  0
              batch: 1
  vm stats threshold: 6
    cpu: 2
              count: 0
              high:  0
              batch: 1
  vm stats threshold: 6
    cpu: 3
              count: 0
              high:  0
              batch: 1
  vm stats threshold: 6
  all_unreclaimable: 1
  start_pfn:         1
  inactive_ratio:    1
Node 0, zone    DMA32
  pages free     557017
        min      14552
        low      18190
        high     21828
        scanned  0
        spanned  1044480
        present  889801
        managed  871049
    nr_free_pages 557017
    nr_alloc_batch 3572
    nr_inactive_anon 12444
    nr_active_anon 67252
    nr_inactive_file 86719
    nr_active_file 125886
    nr_unevictable 4
    nr_mlock     4
    nr_anon_pages 67107
    nr_mapped    22262
    nr_file_pages 225198
    nr_dirty     20
    nr_writeback 0
    nr_slab_reclaimable 11794
    nr_slab_unreclaimable 5026
    nr_page_table_pages 2369
    nr_kernel_stack 226
    nr_unstable  0
    nr_bounce    0
    nr_vmscan_write 0
    nr_vmscan_immediate_reclaim 0
    nr_writeback_temp 0
    nr_isolated_anon 0
    nr_isolated_file 0
    nr_shmem     12593
    nr_dirtied   224825
    nr_written   214052
    nr_pages_scanned 0
    workingset_refault 0
    workingset_activate 0
    workingset_nodereclaim 0
    nr_anon_transparent_hugepages 28
    nr_free_cma  0
        protection: (0, 0, 4478, 4478)
  pagesets
    cpu: 0
              count: 159
              high:  186
              batch: 31
  vm stats threshold: 36
    cpu: 1
              count: 145
              high:  186
              batch: 31
  vm stats threshold: 36
    cpu: 2
              count: 99
              high:  186
              batch: 31
  vm stats threshold: 36
    cpu: 3
              count: 65
              high:  186
              batch: 31
  vm stats threshold: 36
  all_unreclaimable: 0
  start_pfn:         4096
  inactive_ratio:    5
Node 0, zone   Normal
  pages free     712051
        min      19172
        low      23965
        high     28758
        scanned  0
        spanned  1179136
        present  1179136
        managed  1146604
    nr_free_pages 712051
    nr_alloc_batch 1771
    nr_inactive_anon 11186
    nr_active_anon 96996
    nr_inactive_file 113106
    nr_active_file 178825
    nr_unevictable 8
    nr_mlock     8
    nr_anon_pages 96917
    nr_mapped    31145
    nr_file_pages 303206
    nr_dirty     13
    nr_writeback 0
    nr_slab_reclaimable 13001
    nr_slab_unreclaimable 5053
    nr_page_table_pages 3211
    nr_kernel_stack 207
    nr_unstable  0
    nr_bounce    0
    nr_vmscan_write 0
    nr_vmscan_immediate_reclaim 0
    nr_writeback_temp 0
    nr_isolated_anon 0
    nr_isolated_file 0
    nr_shmem     11275
    nr_dirtied   327684
    nr_written   314671
    nr_pages_scanned 0
    workingset_refault 0
    workingset_activate 0
    workingset_nodereclaim 0
    nr_anon_transparent_hugepages 45
    nr_free_cma  0
        protection: (0, 0, 0, 0)
  pagesets
    cpu: 0
              count: 170
              high:  186
              batch: 31
  vm stats threshold: 42
    cpu: 1
              count: 134
              high:  186
              batch: 31
  vm stats threshold: 42
    cpu: 2
              count: 136
              high:  186
              batch: 31
  vm stats threshold: 42
    cpu: 3
              count: 97
              high:  186
              batch: 31
  vm stats threshold: 42
  all_unreclaimable: 0
  start_pfn:         1048576
  inactive_ratio:    6

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: khugepaged / firefox going wild in 3.18-rc
  2014-11-07 13:57                   ` Norbert Preining
@ 2014-11-07 15:44                     ` Vlastimil Babka
  0 siblings, 0 replies; 12+ messages in thread
From: Vlastimil Babka @ 2014-11-07 15:44 UTC (permalink / raw)
  To: Norbert Preining; +Cc: David Rientjes, linux-kernel

On 11/07/2014 02:57 PM, Norbert Preining wrote:
> Hi Vlastimil,
> 
> On Fri, 07 Nov 2014, Vlastimil Babka wrote:
>> Great, that's good news if I understand correctly, but ...
> 
> no "but ..."
> 
>> I suggested the commit to you for revert 1 day ago, and you say you
>> can't reproduce it for 2 days already? That's a bit suspicious. Did
> 
> No, you suggested it yesterday during the day, and here in Japan the
> next day is already over, so my feeling is two days ;-)
>
> So all fine ;-)

Ah, good, just wanted to be sure.
 
>> I'll prepare a debugging patch and send with instructions. Meanwhile
>> you could send the /proc/zoneinfo contents? :)
> 
> When? Running which kernel? Anyway, with the current kernel (reverted
> commit as before) I get the attached zoneinfo.

It doesn't matter which kernel. Thanks, but I didn't find anything
suspicious there... expected some oddly aligned zones, but it all seemed
to be aligned to pageblock boundaries.

> Thanks, and waiting for your patches ;-)

Tracing patch attached. You should apply this to the broken kernel, i.e.
without the revert, and have tracing enabled, i.e. CONFIG_FTRACE. There
should be /sys/kernel/debug/tracing directory.
To avoid overhead and noise, I would just run this kernel as usual, and
only when khugepaged/firefox/whatever starts misbehaving, do the following:

cd /sys/kernel/debug/tracing
echo 1 > tracing_on
echo 1 > events/compaction/enable
cat trace_pipe | tee /tmp/trace  #(or somewhere else)

You should see events scrolling on the screen, including the misbehaving
processes. After a minute or something, ctrl+c and send me the trace file.

Thanks a lot!
Vlastimil 


> Norbert
> 

------8<------
>From 59c93237ad2fb2317e61c8f00ea73d93ff8a2813 Mon Sep 17 00:00:00 2001
From: Vlastimil Babka <vbabka@suse.cz>
Date: Fri, 7 Nov 2014 16:12:14 +0100
Subject: [PATCH] compaction: detailed free scanner tracing

---
 include/trace/events/compaction.h | 51 +++++++++++++++++++++++++++++++++------
 mm/compaction.c                   |  9 +++++--
 2 files changed, 50 insertions(+), 10 deletions(-)

diff --git a/include/trace/events/compaction.h b/include/trace/events/compaction.h
index c6814b9..db83ea4 100644
--- a/include/trace/events/compaction.h
+++ b/include/trace/events/compaction.h
@@ -12,38 +12,73 @@
 DECLARE_EVENT_CLASS(mm_compaction_isolate_template,
 
 	TP_PROTO(unsigned long nr_scanned,
-		unsigned long nr_taken),
+		unsigned long nr_taken,
+		unsigned long last_pfn),
 
-	TP_ARGS(nr_scanned, nr_taken),
+	TP_ARGS(nr_scanned, nr_taken, last_pfn),
 
 	TP_STRUCT__entry(
 		__field(unsigned long, nr_scanned)
 		__field(unsigned long, nr_taken)
+		__field(unsigned long, last_pfn)
 	),
 
 	TP_fast_assign(
 		__entry->nr_scanned = nr_scanned;
 		__entry->nr_taken = nr_taken;
+		__entry->last_pfn = last_pfn;
 	),
 
-	TP_printk("nr_scanned=%lu nr_taken=%lu",
+	TP_printk("nr_scanned=%lu nr_taken=%lu last_pfn=%lu",
 		__entry->nr_scanned,
-		__entry->nr_taken)
+		__entry->nr_taken,
+		__entry->last_pfn)
 );
 
 DEFINE_EVENT(mm_compaction_isolate_template, mm_compaction_isolate_migratepages,
 
 	TP_PROTO(unsigned long nr_scanned,
-		unsigned long nr_taken),
+		unsigned long nr_taken,
+		unsigned long last_pfn),
 
-	TP_ARGS(nr_scanned, nr_taken)
+	TP_ARGS(nr_scanned, nr_taken, last_pfn)
 );
 
 DEFINE_EVENT(mm_compaction_isolate_template, mm_compaction_isolate_freepages,
 	TP_PROTO(unsigned long nr_scanned,
-		unsigned long nr_taken),
+		unsigned long nr_taken,
+		unsigned long last_pfn),
 
-	TP_ARGS(nr_scanned, nr_taken)
+	TP_ARGS(nr_scanned, nr_taken, last_pfn)
+);
+
+TRACE_EVENT(mm_compaction_isolate_freepages_loop,
+	TP_PROTO(unsigned long low_pfn,
+		unsigned long block_start_pfn,
+		unsigned long isolate_start_pfn,
+		unsigned long block_end_pfn),
+
+	TP_ARGS(low_pfn, block_start_pfn, isolate_start_pfn, block_end_pfn),
+
+	TP_STRUCT__entry(
+		__field(unsigned long, low_pfn)
+		__field(unsigned long, block_start_pfn)
+		__field(unsigned long, isolate_start_pfn)
+		__field(unsigned long, block_end_pfn)
+	),
+
+	TP_fast_assign(
+		__entry->low_pfn = low_pfn;
+		__entry->block_start_pfn = block_start_pfn;
+		__entry->isolate_start_pfn = isolate_start_pfn;
+		__entry->block_end_pfn = block_end_pfn;
+	),
+
+	TP_printk("low=%lu block_start=%lu isolate_start=%lu block_end=%lu",
+		__entry->low_pfn,
+		__entry->block_start_pfn,
+		__entry->isolate_start_pfn,
+		__entry->block_end_pfn)
 );
 
 TRACE_EVENT(mm_compaction_migratepages,
diff --git a/mm/compaction.c b/mm/compaction.c
index ec74cf0..4931b21 100644
--- a/mm/compaction.c
+++ b/mm/compaction.c
@@ -426,7 +426,8 @@ isolate_fail:
 	/* Record how far we have got within the block */
 	*start_pfn = blockpfn;
 
-	trace_mm_compaction_isolate_freepages(nr_scanned, total_isolated);
+	trace_mm_compaction_isolate_freepages(nr_scanned, total_isolated,
+								blockpfn);
 
 	/*
 	 * If strict isolation is requested by CMA then check that all the
@@ -734,7 +735,8 @@ isolate_success:
 	if (low_pfn == end_pfn)
 		update_pageblock_skip(cc, valid_page, nr_isolated, true);
 
-	trace_mm_compaction_isolate_migratepages(nr_scanned, nr_isolated);
+	trace_mm_compaction_isolate_migratepages(nr_scanned, nr_isolated,
+								low_pfn);
 
 	count_compact_events(COMPACTMIGRATE_SCANNED, nr_scanned);
 	if (nr_isolated)
@@ -838,6 +840,9 @@ static void isolate_freepages(struct compact_control *cc)
 				isolate_start_pfn = block_start_pfn) {
 		unsigned long isolated;
 
+		trace_mm_compaction_isolate_freepages_loop(low_pfn,
+			block_start_pfn, isolate_start_pfn, block_end_pfn);
+
 		/*
 		 * This can iterate a massively long zone without finding any
 		 * suitable migration targets, so periodically check if we need
-- 
2.1.2




^ permalink raw reply related	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2014-11-07 15:44 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-11-04 23:20 khugepaged / firefox going wild in 3.18-rc Norbert Preining
2014-11-05  0:00 ` David Rientjes
2014-11-05  0:10   ` Norbert Preining
2014-11-05  0:12     ` Norbert Preining
2014-11-05  0:20       ` David Rientjes
2014-11-06 12:25         ` Vlastimil Babka
2014-11-06 12:39           ` Norbert Preining
2014-11-06 13:03             ` Vlastimil Babka
2014-11-07 13:07               ` Norbert Preining
2014-11-07 13:38                 ` Vlastimil Babka
2014-11-07 13:57                   ` Norbert Preining
2014-11-07 15:44                     ` Vlastimil Babka

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox