## parallelvm

#### OS/161 Reference Manual

### Name

parallelvm - concurrent VM system test

### Synopsis

`/testbin/parallelvm` [`-w`]

### Description

`parallelvm` runs a fairly large number (24) of fairly small processes in parallel to stress your VM system. The processes perform aimless matrix operations.

Before attempting `parallevm` make sure the `zero` test passes; `parallelvm` will fail with wrong answers if its BSS doesn't start out zeroed. Also, it may be helpful to get it running successfully purely in RAM before cutting back the memory size so it swaps.

If your VM system's fork is particularly slow, you will probably find that the early processes exit before the later ones finish forking. This reduces the total memory load and can easily cause `parallelvm` to run completely in RAM without needing to swap; this in turn makes it a much less effective stress test.

For this reason, the `-w` option can be used to make all the subprocesses sync up before starting to compute. They use user-level semaphores for coordination.

If benchmarking, always use `-w`.

### Requirements

`parallelvm` uses the following system calls:

- getpid
- fork
- waitpid
- write
- _exit

Adding the `-w` option also uses:

- open
- read
- close
- remove

`parallelvm` should run properly once your VM system is complete.

Until the remove system call has been implemented, which is typically not part of the basic system calls assignment, `parallelvm -w` will be unable to clean up its semaphores. This is merely untidy and not a real problem.