2008-02-08 18:18:24

by Eugene Teo

[permalink] [raw]
Subject: [PATCH] proc: Add RLIMIT_RTTIME to /proc/<pid>/limits

RLIMIT_RTTIME was introduced to allow the user to set a runtime timeout on
real-time tasks: http://lkml.org/lkml/2007/12/18/218. This patch updates
/proc/<pid>/limits with the new rlimit.

Signed-off-by: Eugene Teo <[email protected]>
---
fs/proc/base.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/fs/proc/base.c b/fs/proc/base.c
index c59852b..dcf7be8 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -412,6 +412,7 @@ static const struct limit_names lnames[RLIM_NLIMITS] = {
[RLIMIT_MSGQUEUE] = {"Max msgqueue size", "bytes"},
[RLIMIT_NICE] = {"Max nice priority", NULL},
[RLIMIT_RTPRIO] = {"Max realtime priority", NULL},
+ [RLIMIT_RTTIME] = {"Max realtime timeout", "us"},
};

/* Display limits for a process */
--


2008-02-08 15:11:27

by Peter Zijlstra

[permalink] [raw]
Subject: Re: [PATCH] proc: Add RLIMIT_RTTIME to /proc/<pid>/limits


On Fri, 2008-02-08 at 22:59 +0800, Eugene Teo wrote:
> RLIMIT_RTTIME was introduced to allow the user to set a runtime timeout on
> real-time tasks: http://lkml.org/lkml/2007/12/18/218. This patch updates
> /proc/<pid>/limits with the new rlimit.

Ah, didn't know about that file, thanks!

> Signed-off-by: Eugene Teo <[email protected]>

Acked-by: Peter Zijlstra <[email protected]>

> ---
> fs/proc/base.c | 1 +
> 1 files changed, 1 insertions(+), 0 deletions(-)
>
> diff --git a/fs/proc/base.c b/fs/proc/base.c
> index c59852b..dcf7be8 100644
> --- a/fs/proc/base.c
> +++ b/fs/proc/base.c
> @@ -412,6 +412,7 @@ static const struct limit_names lnames[RLIM_NLIMITS] = {
> [RLIMIT_MSGQUEUE] = {"Max msgqueue size", "bytes"},
> [RLIMIT_NICE] = {"Max nice priority", NULL},
> [RLIMIT_RTPRIO] = {"Max realtime priority", NULL},
> + [RLIMIT_RTTIME] = {"Max realtime timeout", "us"},
> };
>
> /* Display limits for a process */

Subject: Re: [PATCH] proc: Add RLIMIT_RTTIME to /proc/<pid>/limits

Peter,

Could you please provide some text describing RLIMIT_RTTIMEfor the
getrlimit.2 man page.

Cheers,

Michael

On Fri, Feb 8, 2008 at 4:10 PM, Peter Zijlstra <[email protected]> wrote:
>
> On Fri, 2008-02-08 at 22:59 +0800, Eugene Teo wrote:
> > RLIMIT_RTTIME was introduced to allow the user to set a runtime timeout on
> > real-time tasks: http://lkml.org/lkml/2007/12/18/218. This patch updates
> > /proc/<pid>/limits with the new rlimit.
>
> Ah, didn't know about that file, thanks!
>
> > Signed-off-by: Eugene Teo <[email protected]>
>
> Acked-by: Peter Zijlstra <[email protected]>
>
>
> > ---
> > fs/proc/base.c | 1 +
> > 1 files changed, 1 insertions(+), 0 deletions(-)
> >
> > diff --git a/fs/proc/base.c b/fs/proc/base.c
> > index c59852b..dcf7be8 100644
> > --- a/fs/proc/base.c
> > +++ b/fs/proc/base.c
> > @@ -412,6 +412,7 @@ static const struct limit_names lnames[RLIM_NLIMITS] = {
> > [RLIMIT_MSGQUEUE] = {"Max msgqueue size", "bytes"},
> > [RLIMIT_NICE] = {"Max nice priority", NULL},
> > [RLIMIT_RTPRIO] = {"Max realtime priority", NULL},
> > + [RLIMIT_RTTIME] = {"Max realtime timeout", "us"},
> > };
> >
> > /* Display limits for a process */
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>



--
I'll likely only see replies if they are CCed to mtk.manpages at gmail dot com

2008-02-28 15:21:53

by Peter Zijlstra

[permalink] [raw]
Subject: Re: [PATCH] proc: Add RLIMIT_RTTIME to /proc/<pid>/limits


On Thu, 2008-02-28 at 16:12 +0100, Michael Kerrisk wrote:
> Peter,
>
> Could you please provide some text describing RLIMIT_RTTIMEfor the
> getrlimit.2 man page.

The rlimit sets a timeout in [us] for SCHED_RR and SCHED_FIFO tasks.
This time is measured between sleeps, so a schedule in RR or a
preemption in either is not a sleep - the task needs to be dequeued and
enqueued for the timer to reset.

Upon reaching the cur limit we start giving SIGXCPU every second, upon
reaching the hard limit we give SIGKILL - matching RLIMIT_CPU.

Time is measured in tick granularity (for now).

> Cheers,
>
> Michael
>
> On Fri, Feb 8, 2008 at 4:10 PM, Peter Zijlstra <[email protected]> wrote:
> >
> > On Fri, 2008-02-08 at 22:59 +0800, Eugene Teo wrote:
> > > RLIMIT_RTTIME was introduced to allow the user to set a runtime timeout on
> > > real-time tasks: http://lkml.org/lkml/2007/12/18/218. This patch updates
> > > /proc/<pid>/limits with the new rlimit.
> >
> > Ah, didn't know about that file, thanks!
> >
> > > Signed-off-by: Eugene Teo <[email protected]>
> >
> > Acked-by: Peter Zijlstra <[email protected]>
> >
> >
> > > ---
> > > fs/proc/base.c | 1 +
> > > 1 files changed, 1 insertions(+), 0 deletions(-)
> > >
> > > diff --git a/fs/proc/base.c b/fs/proc/base.c
> > > index c59852b..dcf7be8 100644
> > > --- a/fs/proc/base.c
> > > +++ b/fs/proc/base.c
> > > @@ -412,6 +412,7 @@ static const struct limit_names lnames[RLIM_NLIMITS] = {
> > > [RLIMIT_MSGQUEUE] = {"Max msgqueue size", "bytes"},
> > > [RLIMIT_NICE] = {"Max nice priority", NULL},
> > > [RLIMIT_RTPRIO] = {"Max realtime priority", NULL},
> > > + [RLIMIT_RTTIME] = {"Max realtime timeout", "us"},
> > > };
> > >
> > > /* Display limits for a process */
> >
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> > the body of a message to [email protected]
> > More majordomo info at http://vger.kernel.org/majordomo-info.html
> > Please read the FAQ at http://www.tux.org/lkml/
> >
>
>
>

2008-02-28 15:44:26

by Michael Kerrisk

[permalink] [raw]
Subject: Re: [PATCH] proc: Add RLIMIT_RTTIME to /proc/<pid>/limits

Peter,

Thanks for the text.

On Thu, Feb 28, 2008 at 4:21 PM, Peter Zijlstra <[email protected]> wrote:
>
> On Thu, 2008-02-28 at 16:12 +0100, Michael Kerrisk wrote:
> > Peter,
> >
> > Could you please provide some text describing RLIMIT_RTTIMEfor the
> > getrlimit.2 man page.
>
> The rlimit sets a timeout in [us] for SCHED_RR and SCHED_FIFO tasks.
> This time is measured between sleeps, so a schedule in RR or a
> preemption in either is not a sleep - the task needs to be dequeued and
> enqueued for the timer to reset.

Just to clarify: sleep here means a call to some blocking syscall
(e.g., nanosleep(), read(), select(), etc.), right? Is there anything
else that falls under the category of "sleep"? What about a call to
sched_yield() where the process explicitly lets go of the CPU?

Also, is this limit per-thread or per-process? I assume the latter --
but can you confirm please.

Cheers,

Michael

> Upon reaching the cur limit we start giving SIGXCPU every second, upon
> reaching the hard limit we give SIGKILL - matching RLIMIT_CPU.
>
> Time is measured in tick granularity (for now).
>
>
>
> > Cheers,
> >
> > Michael
> >
> > On Fri, Feb 8, 2008 at 4:10 PM, Peter Zijlstra <[email protected]> wrote:
> > >
> > > On Fri, 2008-02-08 at 22:59 +0800, Eugene Teo wrote:
> > > > RLIMIT_RTTIME was introduced to allow the user to set a runtime timeout on
> > > > real-time tasks: http://lkml.org/lkml/2007/12/18/218. This patch updates
> > > > /proc/<pid>/limits with the new rlimit.
> > >
> > > Ah, didn't know about that file, thanks!
> > >
> > > > Signed-off-by: Eugene Teo <[email protected]>
> > >
> > > Acked-by: Peter Zijlstra <[email protected]>
> > >
> > >
> > > > ---
> > > > fs/proc/base.c | 1 +
> > > > 1 files changed, 1 insertions(+), 0 deletions(-)
> > > >
> > > > diff --git a/fs/proc/base.c b/fs/proc/base.c
> > > > index c59852b..dcf7be8 100644
> > > > --- a/fs/proc/base.c
> > > > +++ b/fs/proc/base.c
> > > > @@ -412,6 +412,7 @@ static const struct limit_names lnames[RLIM_NLIMITS] = {
> > > > [RLIMIT_MSGQUEUE] = {"Max msgqueue size", "bytes"},
> > > > [RLIMIT_NICE] = {"Max nice priority", NULL},
> > > > [RLIMIT_RTPRIO] = {"Max realtime priority", NULL},
> > > > + [RLIMIT_RTTIME] = {"Max realtime timeout", "us"},
> > > > };
> > > >
> > > > /* Display limits for a process */
> > >
> > > --
> > > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> > > the body of a message to [email protected]
> > > More majordomo info at http://vger.kernel.org/majordomo-info.html
> > > Please read the FAQ at http://www.tux.org/lkml/
> > >
> >
> >
> >
>
>



--
Michael Kerrisk
Maintainer of the Linux man-pages project
http://www.kernel.org/doc/man-pages/
Want to report a man-pages bug? Look here:
http://www.kernel.org/doc/man-pages/reporting_bugs.html

2008-02-28 15:50:46

by Peter Zijlstra

[permalink] [raw]
Subject: Re: [PATCH] proc: Add RLIMIT_RTTIME to /proc/<pid>/limits


On Thu, 2008-02-28 at 16:44 +0100, Michael Kerrisk wrote:
> Peter,
>
> Thanks for the text.
>
> On Thu, Feb 28, 2008 at 4:21 PM, Peter Zijlstra <[email protected]> wrote:
> >
> > On Thu, 2008-02-28 at 16:12 +0100, Michael Kerrisk wrote:
> > > Peter,
> > >
> > > Could you please provide some text describing RLIMIT_RTTIMEfor the
> > > getrlimit.2 man page.
> >
> > The rlimit sets a timeout in [us] for SCHED_RR and SCHED_FIFO tasks.
> > This time is measured between sleeps, so a schedule in RR or a
> > preemption in either is not a sleep - the task needs to be dequeued and
> > enqueued for the timer to reset.
>
> Just to clarify: sleep here means a call to some blocking syscall
> (e.g., nanosleep(), read(), select(), etc.), right? Is there anything
> else that falls under the category of "sleep"? What about a call to
> sched_yield() where the process explicitly lets go of the CPU?

Yes, and yes, others would be blocking on futexes and the like.

> Also, is this limit per-thread or per-process? I assume the latter --
> but can you confirm please.

Per process. Requests have been made to allow for per thread, but
rlimits are not.

Its really not meant as a fine-grained deadline notification mechanism,
we have posix timers for that, but as a watchdog to ensure we behave
'well'.

2008-02-29 12:33:29

by Neil Horman

[permalink] [raw]
Subject: Re: [PATCH] proc: Add RLIMIT_RTTIME to /proc/<pid>/limits

On Thu, Feb 28, 2008 at 04:21:40PM +0100, Peter Zijlstra wrote:
>
> On Thu, 2008-02-28 at 16:12 +0100, Michael Kerrisk wrote:
> > Peter,
> >
> > Could you please provide some text describing RLIMIT_RTTIMEfor the
> > getrlimit.2 man page.
>
> The rlimit sets a timeout in [us] for SCHED_RR and SCHED_FIFO tasks.
> This time is measured between sleeps, so a schedule in RR or a
> preemption in either is not a sleep - the task needs to be dequeued and
> enqueued for the timer to reset.
>
> Upon reaching the cur limit we start giving SIGXCPU every second, upon
> reaching the hard limit we give SIGKILL - matching RLIMIT_CPU.
>
> Time is measured in tick granularity (for now).
>
> > Cheers,
> >
> > Michael
> >
> > On Fri, Feb 8, 2008 at 4:10 PM, Peter Zijlstra <[email protected]> wrote:
> > >
> > > On Fri, 2008-02-08 at 22:59 +0800, Eugene Teo wrote:
> > > > RLIMIT_RTTIME was introduced to allow the user to set a runtime timeout on
> > > > real-time tasks: http://lkml.org/lkml/2007/12/18/218. This patch updates
> > > > /proc/<pid>/limits with the new rlimit.
> > >
> > > Ah, didn't know about that file, thanks!
> > >
> > > > Signed-off-by: Eugene Teo <[email protected]>
> > >
> > > Acked-by: Peter Zijlstra <[email protected]>
Acked-by: Neil Horman <[email protected]>


--
/****************************************************
* Neil Horman <[email protected]>
* Software Engineer, Red Hat
****************************************************/