SearcharxivSearch

arXiv subjects

Ed Zhu

Publications and source records attributed to Ed Zhu.

3 recordsLinked to original sources

Medical Bill Shock and Imperfect Moral Hazard

Consumers are sensitive to medical prices when consuming care, but delays in price information may distort moral hazard. We study how medical bills affect household spillover spending following utilization, leveraging variation in insurer claim processing times. Households increase spending by 22\% after a scheduled service, but then reduce spending by 11\% after the bill arrives. Observed bill effects are consistent with resolving price uncertainty; bill effects are strongest when pricing information is particularly salient. A model of demand for healthcare with delayed pricing information suggests households misperceive pricing signals prior to bills, and that correcting these perceptions reduce average (median) spending by 16\% (7\%) annually.

econ.GN

Highly-Concurrent Doubly-Linked Lists

As file systems are increasingly being deployed on ever larger systems with many cores and multi-gigabytes of memory, scaling the internal data structures of file systems has taken greater importance and urgency. A doubly-linked list is a simple and very commonly used data structure in file systems but it is not very friendly to multi-threaded use. While special cases of lists, such as queues and stacks, have lock-free versions that scale reasonably well, the general form of a doubly-linked list offers no such solution. Using a mutex to serialize all operations remains the de-facto method of maintaining a doubly linked list. This severely limits the scalability of the list and developers must resort to ad-hoc workarounds that involve using multiple smaller lists (with individual locks) and deal with the resulting complexity of the system. In this paper, we present an approach to building highly concurrent data structures, with special focus on the implementation of highly concurrent doubly-linked lists. Dubbed "advanced doubly-linked list" or "adlist" for short, our list allows iteration in any direction, and insert/delete operations over non-overlapping nodes to execute in parallel. Operations with common nodes get serialized so as to always present a locally consistent view to the callers. An adlist node needs an additional 8 bytes of space for keeping synchronization information. The Data Domain File System makes extensive use of adlists which has allowed for significant scaling of the system without sacrificing simplicity.

cs.DS

Light-weight Locks

In this paper, we propose a new approach to building synchronization primitives, dubbed "lwlocks" (short for light-weight locks). The primitives are optimized for small memory footprint while maintaining efficient performance in low contention scenarios. A read-write lwlock occupies 4 bytes, a mutex occupies 4 bytes (2 if deadlock detection is not required), and a condition variable occupies 4 bytes. The corresponding primitives of the popular pthread library occupy 56 bytes, 40 bytes and 48 bytes respectively on the x86-64 platform. The API for lwlocks is similar to that of the pthread library but covering only the most common use cases. Lwlocks allow explicit control of queuing and scheduling decisions in contention situations and support "asynchronous" or "deferred blocking" acquisition of locks. Asynchronous locking helps in working around the constraints of lock-ordering which otherwise limits concurrency. The small footprint of lwlocks enables the construction of data structures with very fine-grained locking, which in turn is crucial for lowering contention and supporting highly concurrent access to a data structure. Currently, the Data Domain File System uses lwlocks for its in-memory inode cache as well as in a generic doubly-linked concurrent list which forms the building block for more sophisticated structures.

cs.OS