Peter Zijlstra (email@example.com)
In this paper we present a concurrent pagecache for Linux, which is a continuation of the existing lockless pagecache work (N. Piggin OLS'06).
Currently the pagecache is protected by a reader/writer lock. The lockless pagecache work focusses on removing the reader lock, however, this paper presents a method to break the write side of the lock. Firstly, since the pagecache is centered around the radix tree, it is necessary to alter the radix tree in order to support concurrent modifications of the data structure. Secondly, we adapt the pagecache, by removing all non-radix tree consumers of the lock's protection, and extend the pageflag, introduced by the lockless pagecache, into a second per page lock. Then we can fully utilize the radix tree's new functionality to obtain a concurrent pagecache. Finally, we analyze the improvements in performance and scalability.