RE: Bug 71331 - mlock yields processor to lower priority process

From: Motohiro Kosaki
Date: Fri Mar 21 2014 - 11:25:21 EST


> Mike,
>
> There are several problem domains where you protect critical sections by assigning multiple threads to a single CPU and use priorities
> and SCHED_FIFO to ensure data integrity.
>
> In this kind of design you don't make many syscalls. The ones you do make, have to be clearly understood
> if they block.
>
> So, yes, I expect that a SCHED_FIFO task, that uses a subset of syscalls known to be non-blocking, will not block.
>
> If it is not 'unstoppable', then there is a defect in the OS.
>
> In the past, a call to mlock() was known to be OK. It would not block. It might take a while, but it would run to completion. It does not
> do that any more.

False. Mlock is blockable since it was born.
Mlock and mlockall need memory allocate by definition. And it could lead to run VM activity and it may block. At least, on Linux.

lru_add_drain_all() is not only place to wait. Even if we remove it, mlock can still block. I don't think this discussion make sense.

> If mlock() is now a blocking call, then fine. It only needs to be called on occasion, and this can be accounted for in the application

Now? I have not seen any recent change.

Note: I'm not sure Artem's use-case is good or bad. I only say the false assumption don't make a good discussion.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/