Vinsamlegast notið þetta auðkenni þegar þið vitnið til verksins eða tengið í það: http://hdl.handle.net/1946/32216
The revolutionary change that Solid State Disks (SSDs) have introduced to the storage space industry has added many new challenges for data-driven application developers when developing execution planners. Traditionally the application, operating system, and storage controller have all separately handled the storage access pattern optimization and scheduling. Despite successful use for decades, due to the predictable behavior of the spinning disks, finding similar guidelines for optimizing access to SSDs has proven much harder. The problem is in part due to their increased performance but mostly due to their unpredictable behavior and black box nature. The key to addressing this issue is to open up the black-box, exposing the internal complexity of maintaining a healthy SSD, such that the schedulers can take the actual cost of all operations into account in their planning. The first contribution of this thesis is a user-space library called LightNVM-Direct that uses the Open-Channel SSD protocol to expose the internals of a compliant SSD device. The direct communication allows LightNVM-Direct to bypass the kernel entirely and eliminate all of its overhead. This bypass leaves the optimization and scheduling solely in the hands of the developer of the data-driven user-space application. We used the uFLIP-OC benchmark to evaluate LightNVM-Direct using an SSD device called Dragon Fire Card. The results were inconclusive, however, as little gain was observed in overall throughput despite the lower kernel overhead. The second contribution is a proposal of a new protocol we called RNVMe, that adds near-data processing capabilities by allowing part of the application to run on the SSD in the form of Remote Procedure Calls (RPC). This RPC mechanism would enable applications to run simple functions, such as filters and data pre-processing, before delivering the final result to the host computer.