[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [RFC PATCH 2/2] gnttab: refactor locking for better scalability
On 12/11/2013 02:03, "Matt Wilson" <msw@xxxxxxxxx> wrote: > + Locking > + ~~~~~~~ > + Xen uses several locks to serialize access to the internal grant table > state. > + > + grant_table->lock : rwlock used to prevent readers from accessing > + inconsistent grant table state such as current > + version, partially initialized active table > pages, > + etc. > + grant_table->maptrack_lock : spinlock used to protect the maptrack state > + active_grant_entry->lock : spinlock used to serialize modifications to > + active entries > + > + The primary lock for the grant table is a read/write spinlock. All > + functions that access members of struct grant_table must acquire a > + read lock around critical sections. Any modification to the members > + of struct grant_table (e.g., nr_status_frames, nr_grant_frames, > + active frames, etc.) must only be made if the write lock is > + held. These elements are read-mostly, and read critical sections can > + be large, which makes a rwlock a good choice. Is there any concern about writer starvation here? I know our spinlocks aren't 'fair' but our rwlocks are guaranteed to starve out writers if there is a steady continuous stream of readers. Perhaps we should write-bias our rwlock, or at least make that an option. We could get fancier but would probably hurt performance. Looks like great work however! -- Keir _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |