Re: [PATCH] mm, meminit: Serially initialise deferred memory if trace_buf_size is specified

From: YASUAKI ISHIMATSU
Date: Wed Nov 15 2017 - 14:18:07 EST


Hi Michal and Mel,

To reproduce the issue, I specified the large trace buffer. The issue also occurs with
trace_buf_size=12M and movable_node on 4.14.0.

In my system, there are 384 CPUs and 8 nodes. So when not using movable_node boot option,
kernel can use about 16GB memory for trace buffer. So Kernel boots up with trace_buf_size=12M.
But when using movable_node, 6 nodes are managed as MOVABLE_ZONE in my system and kernel can
use only about 4GB memory for trace buffer. So memory allocation failure of trace buffer occurs
with trace_buf_size=12M and movable_node.

I don't know you still think 12M is large. But the latest Fujitsu server supports 448 CPUs.
The issue may occur with trace_buf_size=10M on the system. Additionally the number of CPU
in a server is increasing year by year. So the issue will occurs even if we don't specify
large trace buffer.

Thanks,
Yasuaki Ishimatsu

On 11/15/2017 09:57 AM, Michal Hocko wrote:
> On Wed 15-11-17 14:43:14, Mel Gorman wrote:
>> On Wed, Nov 15, 2017 at 03:28:16PM +0100, Michal Hocko wrote:
>>> On Wed 15-11-17 14:13:29, Mel Gorman wrote:
>>> [...]
>>>> I doubt anyone well. Even the original reporter appeared to pick that
>>>> particular value just to trigger the OOM.
>>>
>>> Then why do we care at all? The trace buffer size can be configured from
>>> the userspace if it is not sufficiently large IIRC.
>>>
>>
>> I guess there is the potential that the trace buffer needs to be large
>> enough early on in boot but I'm not sure why it would need to be that large
>> to be honest. Bottom line, it's fairly trivial to just serialise meminit
>> in the event that it's resized from command line. I'm also ok with just
>> leaving this is as a "don't set the buffer that large"
>
> I would be reluctant to touch the code just because of insane kernel
> command line option.
>
> That being said, I will not object or block the patch it just seems
> unnecessary for most reasonable setups I can think of. If there is a
> legitimate usage of such a large trace buffer then I wouldn't oppose.
>