A buffer cache management structure, or metadata, for a computer system
such as a NUMA (non-uniform memory access) machine, wherein physical main
memory is distributed and shared among separate memories. The memories
reside on separate nodes that are connected by a system interconnect. The
buffer cache metadata is partitioned into portions that each include a set
of one or more management data structures such as hash queues that keep
track of disk blocks cached in the buffer cache. Each set of management
data structures is stored entirely within one memory. A first process
performs operations on the buffer cache metadata by determining, from an
attribute of a data block requested by the process, in which memory a
portion of the metadata associated with the data block is stored. The
process then determines if the memory containing the metadata portion is
local to the process. If so, the first process performs the operation. If
not, the first process requests that a second process that is local to the
memory perform the operation. The second process then performs the
operation and notifies the first process of the operation results.