-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Latency analysis does not interpret execution time on feature (entrypoint) of thread #1940
Comments
The compute execution time property on a port indicates the compute execution time for a thread when dispatched on a particular port. In other words, a (aperiodic, sporadic, hybrid) thread could be dispatched through different ports and each dispatch could result in a different compute execution time. Note that for periodic threads only the compute execution time of the thread should be used. For latency analysis we have a flow through ports. If an incoming port of the flow has a compute execution time property then its value should be used instead of the value associated with the thread. For an example just use an existing latency test example and add the compute execution time property to a port involved in a flow when the thread is not periodic. |
This change is conceptually simple: when getting the execution time of thread, if the thread is periodic, use the Some issues though:
If I understand the standard correctly,
Going through the code in |
I believe I just need to change the lines
in |
I'm wondering if
It only scales the result if the named element is a |
Regarding computation of latency, |
Changed
to
where
|
Created test cases
They are the same except that The My changes seems to work. I'm still pretty sure the processing scaling factor stuff is not going to work correctly for ports. I have to test this and then probably fix it. |
Execution times from the features are not scaled when there is a bound processor. This needs to be fixed. I have the additional examples
and
|
In case the port on which the WCET is given dispatches the thread for each received data/event/eventdata, I agree with this assertion. This seems to be the assumption on examples given hereabove. Otherwise, I think it requires to pay more attention. What if the dispatch occurs when the thread has received at least two items (e.g. Input_rate says two items per dispatch) ? What if the port does not dispatch the execution of the thread (e.g. not referenced in the Dispatch_Trigger property)? Last remark, I still think it is odd to use the compute execution time (i.e. WCET) as if it was the response time of the task. I already filed an issue about this some time ago. I think it is on the former repo of analysis plugins. Hope this helps ;) Etienne. |
@Etienne13 , you are right. I was making the assumption the system was locally (per process) schedulable. If we want instead to use response time, we must revisit the whole machinery and address osate/osate2-plugins#81 |
@Etienne13 Some comments after talking to Peter about this:
|
Fixed
Also fixed |
Added unit tests. |
AADL allows users to specify compute execution time for specific features, e.g., specific ports.
Similarly the execution time of a subprogram should be used as value for remote subprogram calls.
The text was updated successfully, but these errors were encountered: