• P
    kfence: test: try to avoid test_gfpzero trigger rcu_stall · 3cb1c962
    Peng Liu 提交于
    When CONFIG_KFENCE_NUM_OBJECTS is set to a big number, kfence
    kunit-test-case test_gfpzero will eat up nearly all the CPU's resources
    and rcu_stall is reported as the following log which is cut from a
    physical server.
    
      rcu: INFO: rcu_sched self-detected stall on CPU
      rcu: 	68-....: (14422 ticks this GP) idle=6ce/1/0x4000000000000002
      softirq=592/592 fqs=7500 (t=15004 jiffies g=10677 q=20019)
      Task dump for CPU 68:
      task:kunit_try_catch state:R  running task
      stack:    0 pid: 9728 ppid:     2 flags:0x0000020a
      Call trace:
       dump_backtrace+0x0/0x1e4
       show_stack+0x20/0x2c
       sched_show_task+0x148/0x170
       ...
       rcu_sched_clock_irq+0x70/0x180
       update_process_times+0x68/0xb0
       tick_sched_handle+0x38/0x74
       ...
       gic_handle_irq+0x78/0x2c0
       el1_irq+0xb8/0x140
       kfree+0xd8/0x53c
       test_alloc+0x264/0x310 [kfence_test]
       test_gfpzero+0xf4/0x840 [kfence_test]
       kunit_try_run_case+0x48/0x20c
       kunit_generic_run_threadfn_adapter+0x28/0x34
       kthread+0x108/0x13c
       ret_from_fork+0x10/0x18
    
    To avoid rcu_stall and unacceptable latency, a schedule point is
    added to test_gfpzero.
    
    Link: https://lkml.kernel.org/r/20220309083753.1561921-4-liupeng256@huawei.comSigned-off-by: NPeng Liu <liupeng256@huawei.com>
    Reviewed-by: NMarco Elver <elver@google.com>
    Tested-by: NBrendan Higgins <brendanhiggins@google.com>
    Cc: Alexander Potapenko <glider@google.com>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: Wang Kefeng <wangkefeng.wang@huawei.com>
    Cc: Daniel Latypov <dlatypov@google.com>
    Cc: David Gow <davidgow@google.com>
    Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    3cb1c962
kfence_test.c 24.2 KB