Small-scale shared-memory multiprocessors are commonly used in a workgroup environment where multiple applications, both parallel and sequential, are executed concurrently while sharing the processors and other system resources. To utilize the processors efficiently, an effective scheduling strategy is required. We use performance data obtained from an SGI multiprocessor to evaluate several processor scheduling strategies. We examine gang scheduling (coscheduling), static space sharing (space partitioning), and a dynamic allocation scheme called loop-level process control (LLPC) with three new dynamic allocation heuristics. We use regression analysis to quantify the measured data and thereby explore the relationship between the degree of parallelism of the application, the size of the system, the processor allocation strategy and the resulting performance. We also attempt to predict the performance of an application in a multiprogrammed environment. While the execution time predictions are relatively coarse, the models produce a reasonable rank-ordering of the scheduling strategies for each application. This study also shows that dynamically partitioning the system using LLPC or similar heuristics provides better performance for applications with a high degree of parallelism than either gang scheduling or static space sharing.