* [PATCH v2 1/2] sched_setattr: Break EINVAL into separate blocks
@ 2024-06-12 20:44 Brian Norris
2024-06-12 20:44 ` [PATCH v2 2/2] sched_setattr.2: Document sched_util_{min,max} Brian Norris
2024-06-13 0:02 ` [PATCH v2 1/2] sched_setattr: Break EINVAL into separate blocks Alejandro Colomar
0 siblings, 2 replies; 7+ messages in thread
From: Brian Norris @ 2024-06-12 20:44 UTC (permalink / raw)
To: Alejandro Colomar
Cc: Dietmar Eggemann, Patrick Bellasi, Peter Zijlstra, Brian Norris,
linux-man
The current EINVAL description has a complex boolean expression, and I'm
planning to add one more condition to it. Let's separate it into
different EINVAL descriptions to make it easier to read. Tweak the
punctuation a bit too while I'm at it.
Signed-off-by: Brian Norris <briannorris@chromium.org>
---
v2:
* split out from patch 2 and reworked
man/man2/sched_setattr.2 | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/man/man2/sched_setattr.2 b/man/man2/sched_setattr.2
index 5d7061bd6e3a..0c866a786748 100644
--- a/man/man2/sched_setattr.2
+++ b/man/man2/sched_setattr.2
@@ -349,16 +349,21 @@ .SH ERRORS
.TP
.B EINVAL
.I attr.sched_policy
-is not one of the recognized policies;
+is not one of the recognized policies.
+.TP
+.B EINVAL
.I attr.sched_flags
contains a flag other than
-.BR SCHED_FLAG_RESET_ON_FORK ;
-or
+.BR SCHED_FLAG_RESET_ON_FORK .
+.TP
+.B EINVAL
.I attr.sched_priority
-is invalid; or
+is invalid.
+.TP
+.B EINVAL
.I attr.sched_policy
is
-.B SCHED_DEADLINE
+.BR SCHED_DEADLINE ,
and the deadline scheduling parameters in
.I attr
are invalid.
--
2.45.2.505.gda0bf45e8d-goog
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 2/2] sched_setattr.2: Document sched_util_{min,max}
2024-06-12 20:44 [PATCH v2 1/2] sched_setattr: Break EINVAL into separate blocks Brian Norris
@ 2024-06-12 20:44 ` Brian Norris
2024-06-12 22:15 ` Alejandro Colomar
2024-06-13 0:02 ` [PATCH v2 1/2] sched_setattr: Break EINVAL into separate blocks Alejandro Colomar
1 sibling, 1 reply; 7+ messages in thread
From: Brian Norris @ 2024-06-12 20:44 UTC (permalink / raw)
To: Alejandro Colomar
Cc: Dietmar Eggemann, Patrick Bellasi, Peter Zijlstra, Brian Norris,
linux-man
Utilization attributes were added in Linux v5.3 via commit a509a7cd7974
("sched/uclamp: Extend sched_setattr() to support utilization
clamping"). Borrow some documentation from there, with a bit of
editorial trimming and augmentation.
The "reset" (-1 / UINT32_MAX) behavior was added in Linux 5.11 via
commit 480a6ca2dc6e ("sched/uclamp: Allow to reset a task uclamp
constraint value").
Cc: Dietmar Eggemann <dietmar.eggemann@arm.com>
Cc: Patrick Bellasi <patrick.bellasi@arm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Brian Norris <briannorris@chromium.org>
---
v2:
* address various style, linter review comments
man/man2/sched_setattr.2 | 67 +++++++++++++++++++++++++++++++++++++++-
1 file changed, 66 insertions(+), 1 deletion(-)
diff --git a/man/man2/sched_setattr.2 b/man/man2/sched_setattr.2
index 0c866a786748..c3b2cc5be6f1 100644
--- a/man/man2/sched_setattr.2
+++ b/man/man2/sched_setattr.2
@@ -94,10 +94,14 @@ .SS sched_setattr()
SCHED_BATCH) */
u32 sched_priority; /* Static priority (SCHED_FIFO,
SCHED_RR) */
- /* Remaining fields are for SCHED_DEADLINE */
+ /* For SCHED_DEADLINE */
u64 sched_runtime;
u64 sched_deadline;
u64 sched_period;
+\&
+ /* Utilization hints */
+ u32 sched_util_min;
+ u32 sched_util_max;
};
.EE
.in
@@ -186,6 +190,23 @@ .SS sched_setattr()
On the other hand, if the process-directed signal is delivered to
a thread inside the process other than the one that had a run-time overrun,
the application has no way of knowing which thread overran.
+.TP
+.B SCHED_FLAG_UTIL_CLAMP_MIN
+.TQ
+.BR SCHED_FLAG_UTIL_CLAMP_MAX " (both since Linux 5.3)"
+These flags indicate that the
+.I
+sched_util_min
+or
+.I
+sched_util_max
+fields, respectively, are present,
+representing the expected minimum and maximum utilization of the thread.
+.IP
+The utilization attributes provide the scheduler with boundaries
+within which it should schedule the thread,
+potentially informing its decisions
+regarding task placement and frequency selection.
.RE
.TP
.I sched_nice
@@ -228,6 +249,33 @@ .SS sched_setattr()
.I sched_period
This field specifies the "Period" parameter for deadline scheduling.
The value is expressed in nanoseconds.
+.TP
+.IR sched_util_min ", " sched_util_max " (since Linux 5.3)"
+These fields specify the expected minimum and maximum utilization, respectively.
+They are ignored unless their corresponding
+.I SCHED_FLAG_UTIL_CLAMP_MIN
+or
+.I SCHED_FLAG_UTIL_CLAMP_MAX
+are set in
+.IR sched_flags .
+.IP
+Utilization is a value in the range [0, 1024], representing the percentage of
+CPU time used by a task when running at the maximum frequency on the highest
+capacity CPU of the system.
+This is a fixed point representation, where 1024 corresponds to 100%, and 0
+corresponds to 0%.
+For example, a 20% utilization task is a task running for 2ms every 10ms at
+maximum frequency and is represented by a utilization value of
+0.2 * 1024 = 205.
+.IP
+A task with a minimum utilization value larger than 0 is more likely scheduled
+on a CPU with a capacity big enough to fit the specified value.
+A task with a maximum utilization value smaller than 1024 is more likely
+scheduled on a CPU with no more capacity than the specified value.
+.IP
+A task utilization boundary can be reset by setting its field to
+.B UINT32_MAX
+(new in Linux 5.11).
.P
The
.I flags
@@ -368,6 +416,23 @@ .SH ERRORS
.I attr
are invalid.
.TP
+.B EINVAL
+.I attr.sched_flags
+contains
+.B SCHED_FLAG_UTIL_CLAMP_MIN
+or
+.BR SCHED_FLAG_UTIL_CLAMP_MAX ,
+and
+.I attr.sched_util_min
+or
+.I attr.sched_util_max
+are out of bounds.
+.TP
+.B EOPNOTSUPP
+SCHED_FLAG_UTIL_CLAMP was provided, but the kernel was not built with
+.B CONFIG_UCLAMP_TASK
+support.
+.TP
.B EPERM
The caller does not have appropriate privileges.
.TP
--
2.45.2.505.gda0bf45e8d-goog
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/2] sched_setattr.2: Document sched_util_{min,max}
2024-06-12 20:44 ` [PATCH v2 2/2] sched_setattr.2: Document sched_util_{min,max} Brian Norris
@ 2024-06-12 22:15 ` Alejandro Colomar
2024-06-13 20:29 ` Brian Norris
0 siblings, 1 reply; 7+ messages in thread
From: Alejandro Colomar @ 2024-06-12 22:15 UTC (permalink / raw)
To: Brian Norris; +Cc: Dietmar Eggemann, Patrick Bellasi, Peter Zijlstra, linux-man
[-- Attachment #1: Type: text/plain, Size: 5105 bytes --]
Hi Brian,
On Wed, Jun 12, 2024 at 01:44:53PM GMT, Brian Norris wrote:
> Utilization attributes were added in Linux v5.3 via commit a509a7cd7974
> ("sched/uclamp: Extend sched_setattr() to support utilization
> clamping"). Borrow some documentation from there, with a bit of
> editorial trimming and augmentation.
>
> The "reset" (-1 / UINT32_MAX) behavior was added in Linux 5.11 via
> commit 480a6ca2dc6e ("sched/uclamp: Allow to reset a task uclamp
> constraint value").
>
> Cc: Dietmar Eggemann <dietmar.eggemann@arm.com>
> Cc: Patrick Bellasi <patrick.bellasi@arm.com>
> Cc: Peter Zijlstra <peterz@infradead.org>
> Signed-off-by: Brian Norris <briannorris@chromium.org>
> ---
> v2:
> * address various style, linter review comments
>
> man/man2/sched_setattr.2 | 67 +++++++++++++++++++++++++++++++++++++++-
> 1 file changed, 66 insertions(+), 1 deletion(-)
>
> diff --git a/man/man2/sched_setattr.2 b/man/man2/sched_setattr.2
> index 0c866a786748..c3b2cc5be6f1 100644
> --- a/man/man2/sched_setattr.2
> +++ b/man/man2/sched_setattr.2
> @@ -94,10 +94,14 @@ .SS sched_setattr()
> SCHED_BATCH) */
> u32 sched_priority; /* Static priority (SCHED_FIFO,
> SCHED_RR) */
> - /* Remaining fields are for SCHED_DEADLINE */
> + /* For SCHED_DEADLINE */
> u64 sched_runtime;
> u64 sched_deadline;
> u64 sched_period;
> +\&
> + /* Utilization hints */
> + u32 sched_util_min;
> + u32 sched_util_max;
> };
> .EE
> .in
> @@ -186,6 +190,23 @@ .SS sched_setattr()
> On the other hand, if the process-directed signal is delivered to
> a thread inside the process other than the one that had a run-time overrun,
> the application has no way of knowing which thread overran.
> +.TP
> +.B SCHED_FLAG_UTIL_CLAMP_MIN
> +.TQ
> +.BR SCHED_FLAG_UTIL_CLAMP_MAX " (both since Linux 5.3)"
> +These flags indicate that the
> +.I
> +sched_util_min
> +or
> +.I
> +sched_util_max
> +fields, respectively, are present,
> +representing the expected minimum and maximum utilization of the thread.
> +.IP
> +The utilization attributes provide the scheduler with boundaries
> +within which it should schedule the thread,
> +potentially informing its decisions
> +regarding task placement and frequency selection.
> .RE
> .TP
> .I sched_nice
> @@ -228,6 +249,33 @@ .SS sched_setattr()
> .I sched_period
> This field specifies the "Period" parameter for deadline scheduling.
> The value is expressed in nanoseconds.
> +.TP
> +.IR sched_util_min ", " sched_util_max " (since Linux 5.3)"
This should use .TP and .TQ as above.
> +These fields specify the expected minimum and maximum utilization, respectively.
> +They are ignored unless their corresponding
> +.I SCHED_FLAG_UTIL_CLAMP_MIN
> +or
> +.I SCHED_FLAG_UTIL_CLAMP_MAX
> +are set in
With 'or', here corresponds 'is', not 'are'. For 'are' we'd need 'and',
to get a plural.
> +.IR sched_flags .
> +.IP
> +Utilization is a value in the range [0, 1024], representing the percentage of
Break after ','.
> +CPU time used by a task when running at the maximum frequency on the highest
> +capacity CPU of the system.
> +This is a fixed point representation, where 1024 corresponds to 100%, and 0
Break after ','.
> +corresponds to 0%.
> +For example, a 20% utilization task is a task running for 2ms every 10ms at
Break after ',', and after 'is'.
> +maximum frequency and is represented by a utilization value of
> +0.2 * 1024 = 205.
This should go in italics.
$ MANWIDTH=72 man man-pages | sed -n '/Expressions/,/^$/p'
Expressions, if not written on a separate indented line, should be
specified in italics. Again, the use of nonbreaking spaces may be
appropriate if the expression is inlined with normal text.
> +.IP
> +A task with a minimum utilization value larger than 0 is more likely scheduled
> +on a CPU with a capacity big enough to fit the specified value.
> +A task with a maximum utilization value smaller than 1024 is more likely
> +scheduled on a CPU with no more capacity than the specified value.
Please break both sentences at consistent points, since they have
symmetric wording.
> +.IP
> +A task utilization boundary can be reset by setting its field to
> +.B UINT32_MAX
> +(new in Linux 5.11).
s/new in/since/
> .P
> The
> .I flags
> @@ -368,6 +416,23 @@ .SH ERRORS
> .I attr
> are invalid.
> .TP
> +.B EINVAL
> +.I attr.sched_flags
> +contains
> +.B SCHED_FLAG_UTIL_CLAMP_MIN
> +or
> +.BR SCHED_FLAG_UTIL_CLAMP_MAX ,
> +and
> +.I attr.sched_util_min
> +or
> +.I attr.sched_util_max
> +are out of bounds.
> +.TP
> +.B EOPNOTSUPP
> +SCHED_FLAG_UTIL_CLAMP was provided, but the kernel was not built with
Missing bold.
Have a lovely day!
Alex
> +.B CONFIG_UCLAMP_TASK
> +support.
> +.TP
> .B EPERM
> The caller does not have appropriate privileges.
> .TP
> --
> 2.45.2.505.gda0bf45e8d-goog
>
>
--
<https://www.alejandro-colomar.es/>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 1/2] sched_setattr: Break EINVAL into separate blocks
2024-06-12 20:44 [PATCH v2 1/2] sched_setattr: Break EINVAL into separate blocks Brian Norris
2024-06-12 20:44 ` [PATCH v2 2/2] sched_setattr.2: Document sched_util_{min,max} Brian Norris
@ 2024-06-13 0:02 ` Alejandro Colomar
1 sibling, 0 replies; 7+ messages in thread
From: Alejandro Colomar @ 2024-06-13 0:02 UTC (permalink / raw)
To: Brian Norris; +Cc: Dietmar Eggemann, Patrick Bellasi, Peter Zijlstra, linux-man
[-- Attachment #1: Type: text/plain, Size: 1466 bytes --]
Hi Brian,
On Wed, Jun 12, 2024 at 01:44:52PM GMT, Brian Norris wrote:
> The current EINVAL description has a complex boolean expression, and I'm
> planning to add one more condition to it. Let's separate it into
> different EINVAL descriptions to make it easier to read. Tweak the
> punctuation a bit too while I'm at it.
>
> Signed-off-by: Brian Norris <briannorris@chromium.org>
Patch applied. Thanks!
Have a lovely night!
Alex
> ---
> v2:
> * split out from patch 2 and reworked
>
> man/man2/sched_setattr.2 | 15 ++++++++++-----
> 1 file changed, 10 insertions(+), 5 deletions(-)
>
> diff --git a/man/man2/sched_setattr.2 b/man/man2/sched_setattr.2
> index 5d7061bd6e3a..0c866a786748 100644
> --- a/man/man2/sched_setattr.2
> +++ b/man/man2/sched_setattr.2
> @@ -349,16 +349,21 @@ .SH ERRORS
> .TP
> .B EINVAL
> .I attr.sched_policy
> -is not one of the recognized policies;
> +is not one of the recognized policies.
> +.TP
> +.B EINVAL
> .I attr.sched_flags
> contains a flag other than
> -.BR SCHED_FLAG_RESET_ON_FORK ;
> -or
> +.BR SCHED_FLAG_RESET_ON_FORK .
> +.TP
> +.B EINVAL
> .I attr.sched_priority
> -is invalid; or
> +is invalid.
> +.TP
> +.B EINVAL
> .I attr.sched_policy
> is
> -.B SCHED_DEADLINE
> +.BR SCHED_DEADLINE ,
> and the deadline scheduling parameters in
> .I attr
> are invalid.
> --
> 2.45.2.505.gda0bf45e8d-goog
>
--
<https://www.alejandro-colomar.es/>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/2] sched_setattr.2: Document sched_util_{min,max}
2024-06-12 22:15 ` Alejandro Colomar
@ 2024-06-13 20:29 ` Brian Norris
2024-06-13 20:41 ` G. Branden Robinson
2024-06-13 21:31 ` Alejandro Colomar
0 siblings, 2 replies; 7+ messages in thread
From: Brian Norris @ 2024-06-13 20:29 UTC (permalink / raw)
To: Alejandro Colomar
Cc: Dietmar Eggemann, Patrick Bellasi, Peter Zijlstra, linux-man
On Thu, Jun 13, 2024 at 12:15:55AM +0200, Alejandro Colomar wrote:
> On Wed, Jun 12, 2024 at 01:44:53PM GMT, Brian Norris wrote:
> > +maximum frequency and is represented by a utilization value of
> > +0.2 * 1024 = 205.
>
> This should go in italics.
>
> $ MANWIDTH=72 man man-pages | sed -n '/Expressions/,/^$/p'
> Expressions, if not written on a separate indented line, should be
> specified in italics. Again, the use of nonbreaking spaces may be
> appropriate if the expression is inlined with normal text.
Regarding the nonbreaking spaces part: I'm not too practiced with groff,
but the wording around the \[ti] character is confusing. AFAICT, I
actually need to spell my expression like the following?
0.2\~*\~1024\~=\~205
At least, with trial and error, that's what appears to render correctly,
whereas \[ti] renders as a literal tilde. Is man-pages.7 [1] incorrect?
Brian
[1] from `man man-pages`:
"In this case, it may be worth using nonbreaking spaces (\[ti]) at
suitable places in the command."
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/2] sched_setattr.2: Document sched_util_{min,max}
2024-06-13 20:29 ` Brian Norris
@ 2024-06-13 20:41 ` G. Branden Robinson
2024-06-13 21:31 ` Alejandro Colomar
1 sibling, 0 replies; 7+ messages in thread
From: G. Branden Robinson @ 2024-06-13 20:41 UTC (permalink / raw)
To: Brian Norris
Cc: Alejandro Colomar, Dietmar Eggemann, Patrick Bellasi,
Peter Zijlstra, linux-man
[-- Attachment #1: Type: text/plain, Size: 907 bytes --]
Hi Brian,
At 2024-06-13T13:29:44-0700, Brian Norris wrote:
> Regarding the nonbreaking spaces part: I'm not too practiced with
> groff, but the wording around the \[ti] character is confusing.
> AFAICT, I actually need to spell my expression like the following?
>
> 0.2\~*\~1024\~=\~205
Yes, that puts nonbreaking (but adjustable) spaces between the numeric
literals and operators.
> At least, with trial and error, that's what appears to render correctly,
> whereas \[ti] renders as a literal tilde.
Yes.
> Is man-pages.7 [1] incorrect?
[...]
> [1] from `man man-pages`:
> "In this case, it may be worth using nonbreaking spaces (\[ti]) at
> suitable places in the command."
It looks that way.
I suspect that, in the man-pages.7 source, something much like...
nonbreaking spaces
.RB ( \[rs]\[ti] )
at suitable places
...was meant.
Regards,
Branden
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/2] sched_setattr.2: Document sched_util_{min,max}
2024-06-13 20:29 ` Brian Norris
2024-06-13 20:41 ` G. Branden Robinson
@ 2024-06-13 21:31 ` Alejandro Colomar
1 sibling, 0 replies; 7+ messages in thread
From: Alejandro Colomar @ 2024-06-13 21:31 UTC (permalink / raw)
To: Brian Norris; +Cc: Dietmar Eggemann, Patrick Bellasi, Peter Zijlstra, linux-man
[-- Attachment #1: Type: text/plain, Size: 1861 bytes --]
Hi Brian,
On Thu, Jun 13, 2024 at 01:29:44PM GMT, Brian Norris wrote:
> On Thu, Jun 13, 2024 at 12:15:55AM +0200, Alejandro Colomar wrote:
> > On Wed, Jun 12, 2024 at 01:44:53PM GMT, Brian Norris wrote:
> > > +maximum frequency and is represented by a utilization value of
> > > +0.2 * 1024 = 205.
> >
> > This should go in italics.
> >
> > $ MANWIDTH=72 man man-pages | sed -n '/Expressions/,/^$/p'
> > Expressions, if not written on a separate indented line, should be
> > specified in italics. Again, the use of nonbreaking spaces may be
> > appropriate if the expression is inlined with normal text.
>
> Regarding the nonbreaking spaces part: I'm not too practiced with groff,
> but the wording around the \[ti] character is confusing. AFAICT, I
> actually need to spell my expression like the following?
>
> 0.2\~*\~1024\~=\~205
>
> At least, with trial and error, that's what appears to render correctly,
> whereas \[ti] renders as a literal tilde. Is man-pages.7 [1] incorrect?
>
> Brian
>
> [1] from `man man-pages`:
> "In this case, it may be worth using nonbreaking spaces (\[ti]) at
> suitable places in the command."
Yup; that's a bug. I introduced it by accident in
commit 36f73ba37945c7ff4aa2d8383f831519a38e3f27
Author: Alejandro Colomar <alx@kernel.org>
Date: Sun Feb 5 22:59:22 2023 +0100
man-pages.7: Recommend using \[..] instead of \(.. escapes
They are more readable.
Signed-off-by: Alejandro Colomar <alx@kernel.org>
Which did:
-(\e\(ti) at suitable places in the command.
+(\e[ti]) at suitable places in the command.
but it should have been (\e\[ti]). The intention was to render as (\~).
Would you mind sending a fix as part of your patch set?
Have a lovely night!
Alex
--
<https://www.alejandro-colomar.es/>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2024-06-13 21:31 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-12 20:44 [PATCH v2 1/2] sched_setattr: Break EINVAL into separate blocks Brian Norris
2024-06-12 20:44 ` [PATCH v2 2/2] sched_setattr.2: Document sched_util_{min,max} Brian Norris
2024-06-12 22:15 ` Alejandro Colomar
2024-06-13 20:29 ` Brian Norris
2024-06-13 20:41 ` G. Branden Robinson
2024-06-13 21:31 ` Alejandro Colomar
2024-06-13 0:02 ` [PATCH v2 1/2] sched_setattr: Break EINVAL into separate blocks Alejandro Colomar
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.