  The MPI standard has long included one-sided communication abstractions
through the MPI Remote Memory Access (RMA) interface. Unfortunately, the MPI
RMA chapter in the 4.0 version of the MPI standard still contains both
well-known and lesser known short-comings for both implementations and users,
which lead to potentially non-optimal usage patterns. In this paper, we
identify a set of issues and propose ways for applications to better express
anticipated usage of RMA routines, allowing the MPI implementation to better
adapt to the application's needs. In order to increase the flexibility of the
RMA interface, we add the capability to duplicate windows, allowing access to
the same resources encapsulated by a window using different configurations. In
the same vein, we introduce the concept of MPI memory handles, meant to provide
life-time guarantees on memory attached to dynamic windows, removing the
overhead currently present in using dynamically exposed memory. We will show
that our extensions provide improved accumulate latencies, reduced overheads
for multi-threaded flushes, and allow for zero overhead dynamic memory window
usage.
