Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!csd4.csd.uwm.edu!cs.utexas.edu!uunet!mcsun!sunic!iclswe!gmb From: gmb@iclswe.UUCP (Grahame Budd) Newsgroups: comp.arch Subject: Re: Memory utilization & inter-process Message-ID: <201@iclswe.UUCP> Date: 25 Aug 89 10:25:39 GMT References: <3332@blake.acs.washington.edu> <261500008@S34.Prime.COM> Reply-To: gmb@iclswe.UUCP (Grahame Budd) Organization: ICL Data AB S-194 85 Upplands-Vasby SWEDEN Lines: 21 In article <261500008@S34.Prime.COM> BEAR@S34.Prime.COM writes: > > I believe what you're looking for is a working set scheduler. In a >nutshell, this type of scheduler pages a job against itself rather than >against the system (i.e. the pool of available pages belongs to the process >(rather than the system) and is of a size set by the system when then process >is created). Unfortunately, I can't think of an available OS that uses a WS >scheduler off the top of my head (that doesn't mean they don't exist!). Good >luck. > >Bob Beckwith The VME operating system from ICL(UK) uses this technique and extends it by maintaining working set 'quota's for both jobs and classes of jobs. For example all interactive development work has a store 'quota' which is the sum of the quotas of the active, (i.e. paged in, ready to run), work in that class. The total of all quotas is normally less than the total available real store, the rest is then shared between needy processes by priority. When a process is created it has a start quota which can be modified, (within limits), as the work runs to reflect changing demands. Processes work well when the actual working set is less than the working set quota. The technique is refined by the concept of 'policy'. A policy is a set of scheduling values which define processor priority, store priority, timeslice values, comms priority and quotas. Each class of work is assigned to a policy which then defines how work of a given class competes against other classes of work. Work which exceeds the values set in its policy is demoted so that, for example, an interactive user who starts doing long compilations in foreground will have his process demoted s o that it runs in a batch-like rather than interactive-like way. The actual system is more detailed than this, for example a process which holds a resource required by a higher priority process is given the higher priority until the resource is released. However for a system which makes decisions at the kernel level on a milisecond by milisecond basis, and as such cannot use toomuch system resource, it works very well. Together with higher level schedulers, which adjust policy values, assign work to classes and adjust quotas, the system as a whole gives very good mixed workload performance.