Operating System - OpenVMS
cancel
Showing results for 
Search instead for 
Did you mean: 

Sysman scheduling class

Wim Van den Wyngaert
Honored Contributor

Sysman scheduling class

On can do :

$ mc sysman class add ftp /cpu=0-23=1%
$ set proc /class=ftp
and then cpu usage will be limited to 1%.

But one can also do :
$ mc sysman class add ftp /cpu=0-23=1%/WINDFALL

Then the iddle cpu can still be given to the process.

Is this the same as 1% at prio of the the process (e.g. 4) and 99% at prio 0 ?

Anyone using it and found disadvantages ?

Wim (without problem to solve, yet)


Wim
6 REPLIES
Wim Van den Wyngaert
Honored Contributor

Re: Sysman scheduling class

I was thinking of using it for running my system monitoring. that now runs on prio 2.
With prio 5 and a limit of a few percent, it would continue at low speed without disturbing busy applications.

Wim
Wim
Fekko Stubbe
Valued Contributor

Re: Sysman scheduling class

Wim

Be aware of the (special)system MAXCLASSPRI.
A process with a (base)priority>MAXCLASSSPRI will not be eligable for class scheduling

Fekko
John Gillings
Honored Contributor

Re: Sysman scheduling class

Wim,

Scheduling classes are a really silly concept. Back before anyone really understood about timesharing, IBM came up with this warped concept for scheduling processes. It appealed to accountant mindset people, in that it allowed the CPU resource to be carved up according to the proportion of payment for the resource. So if a system was shared between four departments, it allowed limiting each to exactly 25% of the system.

The enormous hole in this concept was that the limit was still 25%, even if the other 3 departments didn't actually need the resource at the time. Thus it allows for the resource to be wasted, even when it's in high demand. "It's my CPU time and you can't have it, I'll waste it if I want to"

So then they tack on the concept of "windfall" to reduce the waste, but it's a crock! Lots of management effort to fiddle the numbers, when all you're really achieving is wasting CPU, and all in order to appease accountant mindsets.

Why does OpenVMS even have this "feature"? - it was found to be a check box on RFC documents (RF?) placed there to bias tenders towards IBM. In retalliation, OpenVMS implemented it (back in the V5.0 timeframe) to say "us too" and help win tenders.

In practice it was almost never used, It's one of those "solutions in search of a problem". It's hard to imagine any real problem that it actually solves, and really didn't work properly anyway!

For several years one tenacious Australian customer persisted in hassling OpenVMS engineering to fix it, but it took a very long time, and I'm still not convinced it really does what it claims to do. Making OpenVMS throw away CPU when there's a computable process waiting is trickier than it seems. I'm also far from convinced that the reason that particular customer thought they wanted it were worthwhile.

These days with multi CPU, multi core, multi thread SMP systems, the whole concept of class sheduling is even more stupid than it was with a single CPU. CPU time is so rarely saturated, that the idea of putting up artifical barriers to prevent processes from executing is just insane. You paid good money for the CPU, why waste it?

If the objective is to ensure a particular process gets CPU when it needs it, the solution is NOT to prevent other processes from using an available CPU. Instead, give the critical process a higher priority.

I strongly recommend you avoid class scheduling. It's almost guaranteed to cause you more problems than it solves.
A crucible of informative mistakes
Wim Van den Wyngaert
Honored Contributor

Re: Sysman scheduling class

John,

Thanks for the story. But remember I have no multiple cpu's (except in the GS160 which has 2). For an application, it's very easy to get the complete cpu thus blocking the others (happened a lot in the past). It seems that the sched class would be a perfect solution (if it works). Idem to make sure that some mionitor gets the cpu (thanks to its prio) while not getting to much when other need it (thanks to the cpu sched class).

Ir's only an idea. Within 6-9 months it should be finished over here (only have about 5% of the payme of 2 years ago left, still a nice sum of money).

Wim
Wim
Wim Van den Wyngaert
Honored Contributor

Re: Sysman scheduling class

Note that there's a type. set proc/class must be set proc/sched.

It also seems that system UIC users can not be put in a scheduling class.

WIm
Wim
Wim Van den Wyngaert
Honored Contributor

Re: Sysman scheduling class

I created a procedure that does
$ b: goto b

and started it all kind of comination (limits 10%, 50%, 90% and no limits).

1) it can take a few seconds before the situations gets stable (giving up the cpu is not that easy)
2) there is some rounding. Expect an error of about 5%.
3) when multiple processes for 1 class are started, 1 gets the max, others about 3%. So this is not ok.
4) the windfall works as expected
5) when a 10% and a 50% are started you get about 20 + 70. But when the prio of 10% is reasied, it's the 10% that gets the remaining time (thus 49 - 49).
5) perfectly usable for limiting a process to about 10% when others wants the cpu but making sure it gets the 10%.

I see as usage :
database servers on cpu poor systems
monitoring processes
bad users

In fact, not yet seen a reason not to use it.
Overhead is unclear.

Wim
Wim