Non-uniformity of memory access is an almost inevitable feature of the memory architecture in shared memory multiprocessor designs that can scale to large numbers of processors. One implication of NUMA architectures is that the placement and movement of code and data are crucial to performance. As memory architectures become more complex and the non-uniformity becomes less well hidden, system software must assume a larger role in providing memory management support for the programmer. This paper investigates the role of the operating system. We take an experimental approach to evaluating a wide-range of memory management policies. The target NUMA environment is BBN's GP-1000 multiprocessor. Extensive local modifications have been made to the memory management subsystem of BBN's nX operating system to support multiple policy implementations. Policy comparisons are based on the measured performance of real parallel applications. Our results show that there are memory manageme...