Re: [PATCH] ipv4: Namespaceify tcp_max_orphans knob

From: 严海双
Date: Sat Sep 09 2017 - 06:22:11 EST




> On 2017年9月9日, at 下午1:16, David Miller <davem@xxxxxxxxxxxxx> wrote:
>
> From: 严海双 <yanhaishuang@xxxxxxxxxxxxxxxxxxxx>
> Date: Sat, 9 Sep 2017 13:09:57 +0800
>
>>
>>
>>> On 2017年9月9日, at 下午12:35, Cong Wang <xiyou.wangcong@xxxxxxxxx> wrote:
>>>
>>> On Fri, Sep 8, 2017 at 6:25 PM, 严海双 <yanhaishuang@xxxxxxxxxxxxxxxxxxxx> wrote:
>>>>
>>>>
>>>>> On 2017年9月9日, at 上午6:13, Cong Wang <xiyou.wangcong@xxxxxxxxx> wrote:
>>>>>
>>>>> On Wed, Sep 6, 2017 at 8:10 PM, Haishuang Yan
>>>>> <yanhaishuang@xxxxxxxxxxxxxxxxxxxx> wrote:
>>>>>> Different namespace application might require different maximal number
>>>>>> of TCP sockets independently of the host.
>>>>>
>>>>> So after your patch we could have N * net->ipv4.sysctl_tcp_max_orphans
>>>>> in a whole system, right? This just makes OOM easier to trigger.
>>>>>
>>>>
>>>> From my understanding, before the patch, we had N * net->ipv4.sysctl_tcp_max_orphans,
>>>> and after the patch, we could have ns1.sysctl_tcp_max_orphans + ns2.sysctl_tcp_max_orphans
>>>> + ns3.sysctl_tcp_max_orphans, is that right? Thanks for your reviewing.
>>>
>>> Nope, by N I mean the number of containers. Before your patch, the limit
>>> is global, after your patch it is per container.
>>>
>>
>> Yeah, for example, if there is N containers, before the patch, I mean the limit is:
>>
>> N * net->ipv4.sysctl_tcp_max_orphans
>>
>> After the patch, the limit is:
>>
>> ns1. net->ipv4.sysctl_tcp_max_orphans + ns2. net->ipv4.sysctl_tcp_max_orphans + …
>
> Not true.
>
> Please remove "N" from your equation of the current situation.
>
> "sysctl_tcp_max_orphans" applies to entire system, it is a global limit,
> comparing one limit against all orphans in the system, there is no N.

Yes, it’s right. I browse the source code and found that it’s a global limit,
sorry for my mistake.

Thanks David and Cong.