[Devel] [PATCH rh7 2/2] exit: clear TIF_MEMDIE after exit_task_work

Kirill Tkhai ktkhai at virtuozzo.com
Tue Mar 1 07:30:24 PST 2016



On 01.03.2016 16:49, Vladimir Davydov wrote:
> On Tue, Mar 01, 2016 at 12:21:20PM +0300, Kirill Tkhai wrote:
>>
>>
>> On 01.03.2016 12:16, Kirill Tkhai wrote:
>>> On 29.02.2016 18:58, Vladimir Davydov wrote:
>>>> An mm_struct may be pinned by a file. An example is vhost-net device
>>>> created by a qemu/kvm (see vhost_net_ioctl -> vhost_net_set_owner ->
>>>> vhost_dev_set_owner). If such process gets OOM-killed, the reference to
>>>> its mm_struct will only be released from exit_task_work -> ____fput ->
>>>> __fput -> vhost_net_release -> vhost_dev_cleanup, which is called after
>>>> exit_mmap, where TIF_MEMDIE is cleared. As a result, we can start
>>>> selecting the next victim before giving the last one a chance to free
>>>> its memory. In practice, this leads to killing several VMs along with
>>>> the fattest one.
>>>
>>> Do we have the same issue when group_leader's threads are owning the mm?
>>
>> I.e. !group_leader, but threads in its group.
> 
> No. In this case next time oom is invoked, we will select another thread
> sharing the same mm and so forth until the whole thread group exits, so
> no needless kills should happen.

//Oom may select another thread group, but we skip this case as unlikely.

For {1,2}/2:

Reviewed-by: Kirill Tkhai <ktkhai at virtuozzo.com>


More information about the Devel mailing list