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 |
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. 1Setting 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. |