University of Southern California

ITS Information Technology Services

A division of the Office of the Chief Information Officer

Managing Jobs and Processes

Determining current system load

Load average is probably the best guide to use for anticipating the amount of delay to expect when running your jobs. A load average value of 10 is definitely a heavily loaded system and you can expect delays. Of course, it's not possible to know how long a heavily loaded system will stay that way; only experience with daily usage patterns will help there.

The command uptime gives one line of stats for current machine, including the load average.

The last three numbers are the average number of jobs in the run queue for last 1, 5, and 15 minutes.

On RCF, the command /usr/rcf/bin/rcf-load will give load averages for all RCF machines, exactly as seen when you first log in. All RCF machines are not equally usable for a given purpose, so you will have to apply that load information to your particular use.

The top command displays currently running jobs ranked in order of CPU usage and shows various stats for each, including CPU %, CPU time, resident memory size, nice value (to be explained below), load averages, etc. By default it updates every 5 seconds and shows all users.

Example, showing top niced to +19, to reduce impact on the system:

almaak.usc.edu(36): nice +19 top last pid: 19097; load averages: 7.03, 7.12, 7.46 14:56:47 625 processes: 581 sleeping, 22 zombie, 15 stopped, 7 on cpu CPU states: 0.0% idle, 69.1% user, 14.1% kernel, 16.7% iowait, 0.0% swap Memory: 2005M real, 32M free, 902M swap, 2807M free swap

PID USERNAME PRI NICE SIZE RES STATE TIME WCPU  CPU COMMAND 
 19728  guanggon  -25 10  1016K 744K cpu  27.1H 12.48% 12.50% a.out 
22826 potatov  -25   10   52M 8928K cpu   138:08 12.50% 12.50% Readncm 
25370 mitaim   -25   10  912K  832K cpu   124:51 12.50% 12.50% gaussh10 
11848 poller   -25   10 7160K 3560K cpu    41:11 12.50% 12.50% matlab 
16838 shariati -25    0   17M 2576K cpu    12:42 12.50% 12.50% vfehs.out 
16793 perryros -25   11   12M   11M cpu    12:22 12.10% 11.96% sht3ell2dprmn2

Options include restricting output to one user only, to a fixed number of processes, etc. Use <Control>-C to exit top.

Server status may also be found at Systems Status.

Running jobs sequentially

You can combine commands so that they run sequentially rather than simultaneously, thereby avoiding competing with yourself for computing cycles. Do this by stacking them with a semi-colon on the same command line:

Long command lines may be wrapped by continuing to type without pressing the newline key (up to 256 characters) or by typing a backslash (\) immediately before the newline and between words.

Delaying command execution

With the at command you can delay execution of commands with slightly reduced priority. This can be done either interactively from the command line or from commands contained in a file, called a shell script (see below). Mail is automatically sent by the system to the user upon completion (jobs with standard output send the results in this mail).

The at command executes your commands at a specified later time by putting them into queue a, which has a nice value of 1 (see nicing below). You can only submit up to 4 simultaneous jobs. The following example demonstrates how to execute the commands contained in the file myscript at 5pm on Friday:

The next example shows how to execute commands interactively from the command line (you will need the double quotes), in this case, at 3am on Sunday:

Lowering job priority

You can reduce the priority level of your job in several ways.

Using the nice Command

The nice command allows you to lower the priority of your command by a specific value. By default, the nice value is zero (20 under Solaris 2.5). Niceness represents a scheduling priority based on cpu usage, wait time, etc. A nice value of zero (20 under Solaris) is high priority, while a value of 19 is the lowest (39 under Solaris). Processes with a high nice value will run slower when the system is busy, but of course will run faster when fewer jobs are running. The following are some examples (system prompts are omitted for clarity; C Shell usage shown):

Solaris 2.5:

Using the renice Command

The renice command can be used on currently running processes only to decrease priority; you cannot increase it even though you are the user who decreased it originally. The PID number is the process id as seen with the ps command.

Solaris 2.5:

Using the batch Command

The batch command executes your commands by placing them in batch queue b, which has a nice value of 2 and a maximum number of simultaneous jobs of 2. The following example shows how to batch commands contained in the file called myscript:

The next example shows how to batch commands given interactively at the command line:

almaak.usc.edu(36): batch at> sas house1
at> sas house2
at> sas house3
at> speakez model1
at> sas house4
at> ^D

C Shell Scripts (command files)

You can place your command or series of commands into an executable file which can be "run" just as system commands are run.

UNIX Documentation

The use of all USC computing resources is governed by the USC Computing Policies.