Adaptive Placement for In-memory Storage Functions

Adaptive Placement for In-memory Storage Functions
复制标题

DOI:
--
复制
发表时间:
2020
期刊:
--
影响因子:
--
通讯作者:
Ankit Bhardwaj;C. Kulkarni;Ryan Stutsman
Ankit Bhardwaj;C. Kulkarni;Ryan Stutsman
中科院分区:
其他
文献类型:
--
作者:
Ankit Bhardwaj;C. Kulkarni;Ryan Stutsman

文献摘要

被引文献

相似文献

快速网络以及对数据中心和云的高资源利用率的渴望推动了数据分解。应用程序计算与存储分离,但当数据必须通过网络移动以对其进行简单操作时,这会导致较高的开销。或者,系统可以允许应用程序通过User-defiNed函数在存储中运行应用程序逻辑。遗憾的是,这再次将存储和计算资源的调配和利用捆绑在一起。我们提出了一种在内存中的键值存储中执行存储级别函数的新方法,该方法通过动态决定在哪里对数据执行函数来避免这个问题。用户编写逻辑上与存储分离的存储函数,但存储服务器选择在哪里物理地运行这些函数的调用。通过使用服务器内部成本模型并观察功能执行,服务器选择直接运行低成本的功能,而倾向于在客户端机器上执行CPU成本较高的功能。结果表明,使用这种方法,存储服务器可以降低网络请求处理成本,避免服务器计算瓶颈,并提高聚合存储系统的吞吐量。我们在内存中的键值存储上实现了我们的方法,该存储每秒执行320万个严格可序列化的User-defiNed存储函数,S的响应时间为100微米。当混合运行来自不同应用程序的逻辑时,它提供的吞吐量比仅在存储服务器上运行该逻辑(多85%)或仅在客户端(多10%)运行该逻辑要好。对于我们的工作负载,它还比纯客户端执行减少了延迟(高达2倍)和事务中止(高达33%)。
Fast networks and the desire for high resource utilization in data centers and the cloud have driven disaggregation. Application compute is separated from storage, but this leads to high overheads when data must move over the network for simple operations on it. Alternatively, systems could allow applications to run application logic within storage via user-defined functions. Unfortunately, this ties provisioning and utilization of storage and compute resources together again. We present a new approach to executing storage-level functions in an in-memory key-value store that avoids this problem by dynamically deciding where to execute functions over data. Users write storage functions that are logically decoupled from storage, but storage servers choose where to run invocations of these functions physically . By using a server-internal cost model and observing function execution, servers choose to directly run inexpensive functions, while preferring to execute functions with high CPU-cost at client machines. We show that with this approach storage servers can reduce network request processing costs, avoid server compute bottlenecks, and improve aggregate storage system throughput. We realize our approach on an in-memory key-value store that executes 3.2 million strict serializable user-defined storage functions per second with 100 µs response times. When running a mix of logic from different applications, it provides throughput better than running that logic purely at storage servers (85% more) or purely at clients (10% more). For our workloads, it also reduces latency (up to 2 × ) and transactional aborts (up to 33%) over pure client-side execution.