On 2020/8/26 下午7:00, Michal Hocko wrote: > On Wed 26-08-20 18:41:18, xunlei wrote: >> On 2020/8/26 下午4:11, Michal Hocko wrote: >>> On Wed 26-08-20 15:27:02, Xunlei Pang wrote: >>>> We've met softlockup with "CONFIG_PREEMPT_NONE=y", when >>>> the target memcg doesn't have any reclaimable memory. >>> >>> Do you have any scenario when this happens or is this some sort of a >>> test case? >> >> It can happen on tiny guest scenarios. > > OK, you made me more curious. If this is a tiny guest and this is a hard > limit reclaim path then we should trigger an oom killer which should > kill the offender and that in turn bail out from the try_charge lopp > (see should_force_charge). So how come this repeats enough in your setup > that it causes soft lockups? > oom_status = mem_cgroup_oom(mem_over_limit, gfp_mask, get_order(nr_pages * PAGE_SIZE)); switch (oom_status) { case OOM_SUCCESS: nr_retries = MAX_RECLAIM_RETRIES; goto retry; It retries here endlessly, because oom reaper has no cpu to schedule.