Messages in this thread | | | Date | Tue, 23 Nov 2021 13:36:20 +0100 | From | Frederic Weisbecker <> | Subject | Re: [patch v7 02/10] add prctl task isolation prctl docs and samples |
| |
On Fri, Nov 12, 2021 at 09:35:33AM -0300, Marcelo Tosatti wrote: > +**PR_ISOL_CFG_SET**: > + > + Set task isolation configuration. > + The general format is:: > + > + prctl(PR_ISOL_CFG_SET, what, arg3, arg4, arg5); > + > + The 'what' argument specifies what to configure. Possible values are: > + > + - ``I_CFG_FEAT``: > + > + Set configuration of task isolation features. 'arg3' specifies > + the feature. Possible values are: > + > + - ``ISOL_F_QUIESCE``: > + > + If arg4 is QUIESCE_CONTROL, set the control structure > + for quiescing of background kernel activities, from > + the location pointed to by ``(int *)arg5``:: > + > + struct task_isol_quiesce_control { > + __u64 flags; > + __u64 quiesce_mask; > + __u64 quiesce_oneshot_mask; > + __u64 pad[5]; > + }; > + > + Where: > + > + *flags*: Additional flags (should be zero). > + > + *quiesce_mask*: A bitmask containing which kernel > + activities to quiesce. > + > + *quiesce_oneshot_mask*: A bitmask indicating which kernel > + activities should behave in oneshot mode, that is, quiescing > + will happen on return from prctl(PR_ISOL_ACTIVATE_SET), but not > + on return of subsequent system calls. The corresponding bit(s) > + must also be set at quiesce_mask. > + > + *pad*: Additional space for future enhancements. > + > + For quiesce_mask (and quiesce_oneshot_mask), possible bit sets are: > + > + - ``ISOL_F_QUIESCE_VMSTATS`` > + > + VM statistics are maintained in per-CPU counters to > + improve performance. When a CPU modifies a VM statistic, > + this modification is kept in the per-CPU counter. > + Certain activities require a global count, which > + involves requesting each CPU to flush its local counters > + to the global VM counters. > + > + This flush is implemented via a workqueue item, which > + might schedule a workqueue on isolated CPUs. > + > + To avoid this interruption, task isolation can be > + configured to, upon return from system calls, synchronize > + the per-CPU counters to global counters, thus avoiding > + the interruption.
Sorry I know this is already v7 but we really don't want to screw up this interface.
What would be more simple and flexible for individual features to quiesce:
arg3 = ISOL_F_QUIESCE arg4 = which feature to quiesce (eg: ISOL_F_QUIESCE_VMSTATS) arg5 =
struct task_isol_quiesce_control { __u64 flags; //with ONESHOT as the first and only possible flag for now __u64 pad[5]; };
This way we can really do a finegrained control over each feature to quiesce.
Thanks.
| |