Title: | DEC Ada |
Notice: | Ada is no longer a trademark of the US Government |
Moderator: | KMOOSE::CMCCUTCHEON |
Created: | Mon Jan 27 1986 |
Last Modified: | Fri Jun 06 1997 |
Last Successful Update: | Fri Jun 06 1997 |
Number of topics: | 3874 |
Total number of notes: | 16668 |
For performance reasons I either need to turn of timeslicing or set the scheduling policy attribute from cma_c_sched_default to cma_c_sched_fifo. Is there a way to do this for $ ACS EXPORT <unit> objects? SYSTEM_RUNTIME_TUNING.REQUEST_TIME_SLICE only seems to be able to enable timeslicing and not disable it. The performance implications are dramatic. For this application, which is an ACMS application the time spend for a roundtrip goes from 500 ms to 100ms as soon as I disable timeslicing. Unfortunalty there are ACMS server executeables that have main units generated by ACMS and therefor I can not disable timeslicing with the TIME_SLICE pragma. Please note that I do not have tasks of equal priority that compete for the CPU. I also do not have tasks with the default prority all tasks have explicit priorities. The problems only comes from the scheduling policy which by default is cma_c_sched_throughput and therefor execution time is given to tasks even if they have a lower priority (a default that must have been choosen for programmers unable to code clean multithreaded programs so that they don't run into problems of starvation or priority inversion but maybe not the best choice for performance reasons). So if there is any way to change the scheduling policy please let me know. Please help, I need a workaround urgently. best regards David Kubelka [Posted by WWW Notes gateway]
T.R | Title | User | Personal Name | Date | Lines |
---|---|---|---|---|---|
3868.1 | diagnosis seems incorrect | FLOYD::YODER | It's 999,943 to 1 but it just might work | Fri May 02 1997 14:02 | 4 |
If you specify explicit priorities for an Ada task or main program, the "throughput" policy is never used. The policy is always a FIFO one (there are two such policies, cma_c_sched_fifo and cma_c_sched_ada_low). The throughput policy is only used for tasks which default their priority. | |||||
3868.2 | SPECXN::DERAMO | Dan D'Eramo | Fri May 02 1997 15:48 | 5 | |
Reply 3794.4 also talks about the mapping between default/explicit Ada task priority and DECthreads scheduling/priority. Dan | |||||
3868.3 | main program is not mine | DAVIDS::KUBELKA | David Kubelka, Vienna 754-2317 | Tue May 06 1997 12:34 | 6 |
re .1: Yes, the problems is gone as soon as I have the main unit under my control but my question is how can I set this attributes if the main unit is not under my control, for example ACS EXPORT linked with ACMS stubs. cheers david kubelka | |||||
3868.4 | use threads calls | FLOYD::YODER | It's 999,943 to 1 but it just might work | Wed May 07 1997 16:06 | 7 |
Any such threads are unaffected by anything you would do within normal Ada code. You can change the policy for your main thread, or threads created by non-Ada code, by calls to the appropriate threads routines (see the DECthreads documentation). Of course, it is easy to use pragma Interface to make such routines callable in your Ada code (in particular, if your Ada code includes tasks, you don't need to go to extra trouble to be sure they're defined at link time). |