Cray User Group Directory of User-submitted Software

Title itime
Revision 1.0
Purpose scheduler modification
Package type Unicos /usr/src/uts source mods and /usr/src/cmd source mods
Application area operating system
Abstract Itime/swapcount is a modification to the UNICOS scheduler for Y-MP machines. Analysis at our site showed that the scheduler would swap small interactive process which lead to poor interactive response. This mod allows the system administrator to control small process swapping by adding two parameters to nschedv. This mod was found to be quite effective in reducing small interactive process swapping.
Submittor Bob Ciotti
Contact Bob Ciotti
Phone (415)604-4408
Email ciotti@nas.nasa.gov
Company/
Institution
Numerical Aerodynamic Simulation - NASA Ames Research Ctr
CUG Site Code
Distribution method contact:
Documentation Librarian
M/S N258-6
NASA Ames Research Center
Moffett Field, CA, 95035-1000
URL
Distribution restrictions UNICOS sites only, US sites only
Copyright NASA Development Software - not for export from US
License required UNICOS Source License
License fee n.a.
Hardware Y-MP
Operating System UNICOS 6.0
Compiler(s) scc, install tool
Program support when schedule permits
Documentation
Portability to other UNIX systems Not Portable
Additional comments The mod is a combination of what we call smallproc and itime. These scheduler parameters have been added to nschedv. itime is a kernel variable (maintained in standard UNICOS) that indicates how long since the last interactive keyboard input. smallproc is the inverse of bigproc. So, any process smaller than smallproc *and* had an interactive input in less that itime seconds is excluded from swapout. Unfortunately, the scheduler loop I made the mod in also excludes consideration for pacmem. So if itime is too large (i.e. > 40 seconds) memory fragmentation can occur. Here are our current (daytime) nschedv settings
[-H] hog_max_mem....     440000 clicks (214.8M)
[-h] memhog.........      10000 clicks (4.9M)
[-c] cpuhog.........         90 Secs   (15000000030 clocks)
[-f] fit_boost......  -2.000000
[-M] mfactor_in.....3200.000000         [-m] mfactor_out....-3200.000000
[-T] tfactor_in.....  -1.000000         [-t] tfactor_out....   1.000000
[-P] pfactor_in.....   3.000000         [-p] pfactor_out....   3.000000
[-N] nfactor_in.....   0.000000         [-n] nfactor_out....   0.000000
[-G] in_guarantee...   5.000000         [-g] out_guarantee..   0.000000
                   ,  60.000000                            ,  10.000000
[-K] constant_in....   0.000000         [-k] constant_out...   0.000000
[-R] thrash-inter...          0         [-B] thrash-blks....          0
[-C] compress_intv..         30         [-r] cpu_factor.....         18
[-L] big proc.......      32768         [-Z] itime..........         19
[-z] smallproc......       1024         [-x] max_outage.....          0
[-i] intrctve prfrd.          1
Setting itime to 19 seconds has not caused us any problems with fragmentation. When I looked at this (well over 1 year ago) it seems that the scheduler very prejudicially swaps out very small processes trying to create swapin space, only to be forced to swap them back in immediately. Then on swapin, the small processes get stuck in line waiting on sequential swapin - the solution was just not to swapout something that is very likely to want back in real soon and that has little or no benefit in doing so. Another thing I noticed was that some processes would be swapped in and out on the order of 10-30 times/second! The mods significantly improved interactive response, but there were still other conditions that would cause poor response. This mod used in conjunction with the swap count utility (also in CUGDUS) can help to track swapping problems.

Back to the CUGDUS home page
Copyright © 1999 by Cray User Group Inc. All rights reserved.
Last update: July 7, 1999