Clarify "Task: Running body" subsystem state
This commit is contained in:
parent
8cab61bc62
commit
0fea805b44
@ -11,23 +11,27 @@ The library is instrumented to track the execution of tasks and also the
|
|||||||
execution path inside the runtime library to identify what is happening.
|
execution path inside the runtime library to identify what is happening.
|
||||||
This information is typically used by both the users and the developers
|
This information is typically used by both the users and the developers
|
||||||
of the Nanos6 library to analyze problems and unwanted behaviors.
|
of the Nanos6 library to analyze problems and unwanted behaviors.
|
||||||
Towards this goal, four different Paraver views are generated, which are
|
Towards this goal, five different Paraver views are generated, which are
|
||||||
explained below.
|
explained below.
|
||||||
|
|
||||||
The state of each task is modelled in a simple finite state machine,
|
The state of each task is modelled in a simple finite state machine,
|
||||||
which identifies the main state changes of the task. The task is set to
|
which identifies the main state changes of the task. The task is set to
|
||||||
the *Running* state only when is executing the body of the task,
|
the *Running* state when it begins executing the body of the task,
|
||||||
consisting of user defined code. The states can be observed in the
|
consisting of user defined code. The states can be observed in the
|
||||||
following diagram:
|
following diagram:
|
||||||
|
|
||||||
![Nanos6 task states](fig/nanos6-task-model.svg)
|
![Nanos6 task states](fig/nanos6-task-model.svg)
|
||||||
|
|
||||||
|
A thread can only execute one task at a time, but multiple tasks can be
|
||||||
|
nested and only the topmost one will actually run. When a view presents
|
||||||
|
the running task of a thread, that one is always the top of the stack.
|
||||||
|
|
||||||
## Task ID view
|
## Task ID view
|
||||||
|
|
||||||
The task ID view represents the ID of the Nanos6 task instance that is
|
The task ID view represents the numeric ID of the Nanos6 task that is
|
||||||
currently executing on each thread. This ID is a monotonically
|
currently running on each thread. The ID is a monotonically increasing
|
||||||
increasing identifier assigned on task creation. Lower IDs correspond to
|
identifier assigned on task creation. Lower IDs correspond to tasks
|
||||||
tasks created at an earlier point than higher IDs.
|
created at an earlier point than higher IDs.
|
||||||
|
|
||||||
## Task type view
|
## Task type view
|
||||||
|
|
||||||
@ -38,8 +42,8 @@ in a program, every created task will have a different ID, but the same
|
|||||||
type.
|
type.
|
||||||
|
|
||||||
In the view, each type is shown with a label declared in the source with
|
In the view, each type is shown with a label declared in the source with
|
||||||
the label attribute of the task. If no label was specified, one is
|
the label attribute of the running task. If no label was specified, one
|
||||||
automatically generated for each type.
|
is automatically generated for each type.
|
||||||
|
|
||||||
Note that in this view, the numeric event value is a hash function of
|
Note that in this view, the numeric event value is a hash function of
|
||||||
the type label, so two distinct types (tasks declared in different parts
|
the type label, so two distinct types (tasks declared in different parts
|
||||||
@ -111,7 +115,7 @@ The complete list of subsystems and sections is shown below.
|
|||||||
|
|
||||||
- **Task subsystem**: Controls the life cycle of tasks
|
- **Task subsystem**: Controls the life cycle of tasks
|
||||||
|
|
||||||
- **Body**: Executing the body of the task (user defined code).
|
- **Running body**: Executing the body of the task (user defined code).
|
||||||
|
|
||||||
- **Spawning function**: Spawning a function as task that will be submitted
|
- **Spawning function**: Spawning a function as task that will be submitted
|
||||||
for later execution.
|
for later execution.
|
||||||
@ -178,3 +182,10 @@ The complete list of subsystems and sections is shown below.
|
|||||||
|
|
||||||
- **Wait for deadline**: Blocking a deadline task, which will be
|
- **Wait for deadline**: Blocking a deadline task, which will be
|
||||||
re-enqueued when a certain amount of time has passed
|
re-enqueued when a certain amount of time has passed
|
||||||
|
|
||||||
|
!!! remark
|
||||||
|
|
||||||
|
Notice that tasks in the running state will display the "Task: Running
|
||||||
|
body" subsystem only when the task has not called any other instrumented
|
||||||
|
subsystem in Nanos6. Tasks will continue to be in the running state until
|
||||||
|
paused or finished.
|
||||||
|
Loading…
Reference in New Issue
Block a user