[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference turris::ada

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

3868.0. "Turning off time slicing in shared libraries" by NNTPD::"[email protected]" (David Kubelka) Wed Apr 30 1997 11:03

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.RTitleUserPersonal
Name
DateLines
3868.1diagnosis seems incorrectFLOYD::YODERIt&#039;s 999,943 to 1 but it just might workFri May 02 1997 14:024
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.2SPECXN::DERAMODan D&#039;EramoFri May 02 1997 15:485
        Reply 3794.4 also talks about the mapping between
        default/explicit Ada task priority and DECthreads
        scheduling/priority.
        
        Dan
3868.3main program is not mineDAVIDS::KUBELKADavid Kubelka, Vienna 754-2317Tue May 06 1997 12:346
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.4use threads callsFLOYD::YODERIt&#039;s 999,943 to 1 but it just might workWed May 07 1997 16:067
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).