Writing data to a page not present in the file-system page cache causes the operating system to synchronously fetch the page into memory before it can be written into. {\em Synchronous} page fetch defines both policy (when) and mechanism (how). However, its read-before-write behavior blocks the writing process. Non-blocking writes eliminate such blocking by buffering the written data elsewhere in memory and unblocking the writing process immediately. Subsequent reads to the updated page locations are also made non-blocking. This new handling of writes to non-cached pages allow processes to overlap more computation with I/O and improves page fetch I/O throughput by increasing fetch parallelism.
This work is supported in part by the National Science Foundation under grant CNS-1320426 and by a NetApp Faculty Fellowship.