Version 1.1 of ai05s/ai05-0169-1.txt
!standard D.14.2(4/2) 09-10-22 AI05-0169-1/01
!reference AI05-0167-1
!class Amendment 09-10-22
!status work item 09-10-22
!status received 09-10-22
!priority Low
!difficulty Easy
!subject Defining group budgets for multiprocessor platforms
!summary
Group budgets are defined to be tied to a single processor.
!problem
Ada 2005 does not fully define how group budgets should be implemented
on multiprocessor platforms.
!proposal
The definition of group budgets should be changed to include
a processor. A task will only consume budget if it is executing
on the processor defined for that budget. The use of a
default processor will mean that single processor programs
will be unchanged.
In D.14.2(4/2) change:
with System;
package Ada.Execution_Time.Group_Budgets is
type Group_Budget is tagged limited private;
...
to
with System;
with Ada.System.Multiprocessors;
package Ada.Execution_Time.Group_Budgets is
type Group_Budget(P : Ada.System.Multiprocessors.CPU :=
Ada.System.Multiprocessors.Default_CPU)
is tagged limited private
Note that this definition depends on the definition of CPU from
AI05-0167-1.
Other parts of the package remain unchanged.
A task will only consume the budget of a Group Budget if it is
executing on the defined processor for that Group Budget. This
applies to tasks assigned to specific processors, or those that
are globally scheduling within an allocation domain.
!wording
** TBD **
!discussion
Whilst a task can only execute on one processor at a time, a group
of tasks may execute in parallel. This makes it difficult for an
implementation to support the execution of a handler at the
point the group budget does to zero. It also makes it difficult for
the programmer to construct useful multiprocessor 'execution-time
servers'. Indeed the whole concept of such servers is single
processor based. The workshop (IRTAW) therefore concluded that
the existing definition of group budget be changed to make it
explicitly a per-processor provision.
Examples were discussed at the workshop that showed that a program
could move tasks between processors and group budget is a way
to exploit 'reserved' budgets on each processor of an allocation
domain.
!example
** TBD **
--!corrigendum D.14.2(4/2)
!ACATS test
Add an ACATS C-Test of this package.
!appendix
****************************************************************
Questions? Ask the ACAA Technical Agent