parallelvm - concurrent VM system test
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.
parallelvm uses the following system calls:
Adding the -w option also uses:
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.