![](https://d3ilqtpdwi981i.cloudfront.net/hO73F1hD04aK4p3H3q1D_a3LZVA=/425x550/smart/https://bepress-attached-resources.s3.amazonaws.com/uploads/29/a6/12/29a612cd-0263-46bc-bed2-0369fe25263b/thumbnail_ae2e0713-610a-4bad-8296-5e3857a756c6.jpg)
Scalable atomic and parallel access to noncontiguous regions of a file is essential to exploit high performance I/O as required by large-scale applications. Parallel I/O frameworks such as MPI I/O conceptually allow I/O to be defined on regions of a file using derived datatypes. Access to regions of a file can be automatically computed on a perprocessor basis using the datatype, resulting in a list of (offset, length) pairs. We describe three approaches for implementing lock serving (whole file, region locking, and byterange locking) and compare the various approaches using three noncontiguous I/O benchmarks. We present the details of the lock server architecture and describe the implementation of a fully-functional prototype that makes use of a lightweight message passing library and red/black trees.