* [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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox