论文阅读

论文阅读列表

ARXIV

2023

  • Nahida: In-Band Distributed Tracing with eBPF:文章主要是在HTTP的header里面插入context。同时,在线程创建时记录父子关系,并利用这个父子关系处理多线程的context propagation。不同命名空间的线程ID追踪是一个技术点。

ASPLOS

2016

2021

2022

ATC

2006

2015

  • Log2: A Cost-Aware Logging Mechanism for Performance Diagnosis:文章解决一个核心问题:whether to log。这个log和传统的log不一样,这个log的意思是Monitored Code Region的执行时间。论文用了两层filter,本地过滤器负责丢弃琐碎的日志请求,全局过滤器负责将排名靠前的日志请求flush到磁盘上。

2019

2021

EuroSys

2018

2019

  • TAS: TCP Acceleration as an OS Service:本篇文章主要解决RPC场景下的TCP开销太大的问题。解决方法是从内核中提取出TCP最小功能,以用户态形式提供TCP fast-path。将原有功能(连接建立/销毁、拥塞控制和超时重传)留在slow-path(原来的协议栈)里。

2020

2022

FSE/ESEC

2017

2020

ICSE

2015

2021

ICDCS

2013

ISCA

2017

2022

Middleware

2017

  • Sieve: Actionable Insights from Monitored Metrics in Distributed Systems:虽然是middleware的文章,但是比较有意思。两个贡献:基于clustering的metric selection;基于granger和call graph(用sysdig和系统调用得到)的dependency graph。两个有趣的例子:对sharelatex的auto-scaling的设计(指标选择、策略、条件);对openstack的故障根因分析。

2021

NDSS

2020

2022

NSDI

2011

  • Diagnosing performance changes by comparing request flows:论文主要提出的是request-flow comparison,也就是比较两个不同时期的流特征。 论文主要提出两种异常:执行时间异常和执行路径异常。 值得注意的是,request-flow comparison和anomaly detection不一样。 前者主要比较两个不同period的distribution changes,后者主要比较一个period内表现明显不同的flow。

2013

2014

2015

  • Retro: Targeted Resource Management in Multi-tenant Distributed Systems:文章主要介绍的是Retro,一个resource management framework for shared distributed systems。具体而言,就是用AspectJ去提取按workflow抽象的资源用量;提了两个指标slowdown和workload来无单位地表示resource抽象的竞争;用令牌桶实现control points的限速;decouple控制策略,实现了三种策略。

2017

2019

2022

2023

  • SRNIC: A Scalable Architecture for RDMA NICs:通过实现RDMA协议和架构的co-design,最小化片上数据结构和内存需求,解决高网络可扩展性(大规模必丢包数据中心网络)与高连接可扩展性(per-server大量高性能连接)问题。

  • Hostping: Diagnosing Intra-host Network Bottlenecks in RDMA Servers:利用拨测,采集intra-host的带宽、延迟与各种总线利用率,判断RDMA服务器中intra-host瓶颈的位置。

  • Understanding RDMA Microarchitecture Resources for Performance Isolation:通过耗尽RDMA的共享微架构,一个租户能对另一个租户施加大幅性能影响。文章分析了RDMA的各种操作对性能的不同影响,并开发了一个测试套件来复现不同种类的影响(其实是攻击)。

  • Empowering Azure Storage with RDMA

  • Transparent GPU Sharing in Container Clouds for Deep Learning Workloads:现有的GPU任务常常会在容器环境中由不同的用户部署,因此底层的GPU资源通常会被多租户共享。在现有的GPU资源共享方法下,GPU的利用率很低。现有的应用层方案缺乏transparency,use cases非常有限,同时operation的开销也非常大。NVIDIA MPS提供的OS-level的解决方案仍不能实现高GPU利用率、并不支持GPU memory oversubscription、需要应用知识、并不提供很强的fault isolation。NVIDIA MIG的limitation则主要在于性能隔离和compatibility上。相比于之前的应用层方案,本文提出了OS-level的GPU共享方案TGS。TGS的核心是一个中间层 。利用自适应速率控制和透明的统一内存,同时实现transparency、高GPU利用率、性能隔离和故障隔离。

  • ARK: GPU-driven Code Execution for Distributed Deep Learning:跨GPU的集体通信开销往往是限制分布式DL性能的关键因素。它通过频繁地传输小数据块而未充分利用网络带宽,这也在GPU上产生了大量的I/O开销,干扰了GPU的计算(两个缺点:event handling和io interference overhead)。其根本原因在于基于CPU的通信事件处理效率低下,以及无法用GPU线程控制GPU的内部DMA引擎。本文提出了一个GPU驱动的代码执行系统,利用GPU控制的硬件DMA引擎进行I/O卸载。两个核心design是:GPU-controlled DMA(提供fast event handling和minimal IO overhead)和autonomous GPU Execution Control(提供fast event handling和efficient computation)。

  • BGL: GPU-Efficient GNN Training by Optimizing Graph Data I/O and Preprocessing:GNN的Sampling-based training主要包括存储图结构和特征的graph store、生成subgraph的sampler和具体运行任务的worker。一个sampling-based training的主要步骤包括三个:subgraph sampling、feature retrieving和model computation。现在的GNN系统倍受前两个阶段的影响:真正的model computation可能只占一小部分的时间。减少这部分的bottleneck包括三个挑战:ineffective caching for node feature retrieving(hit ratios和overhead的trade-off,也是static和dynamic caching的trade-off);existing partition algorithm is not scalable and friendly for GNN(具体有三个小的requirements,现有的工作没法同时满足三个);training pipeline of GNN is much more complex than DNN(主要解决不同stages之间(?)的资源竞争问题)。针对以上三个问题,BGL分别提出了feature cache engine with algorithm-system co-design(比了一下FIFO、LRU、LFU,最后用了proximity-aware ordering(PO)+FIFO)【这里大概讲一下,PO主要是利用nearby batches会共享一些东西的原理,来进行避免cache新的东西的。论文中的图很形象】、一个新的graph partition算法(包括multi-level coarsening、block collection和assignment、uncoarsening三个步骤)和资源隔离(和profiling-based resource allocation)。

  • Zeus: Understanding and Optimizing GPU Energy Consumption of DNN Training:文章发现,提高DNN训练性能的常见做法往往会导致能源使用效率低下(已经有一些energy-efficient的DNN架构、硬件架构和基于profiling的工作,但是它们难以被企业马上采纳)。更重要的是,文章证明了能耗和性能优化之间存在权衡。文章提出了Energy to Accuracy(ETA)的概念,用来代表energy needed to reach the user-specified target 任意DNN model、GPU type的开销,而不需要任何的offline profiling、硬件修改或者精度下降。zeus使用多臂老虎机优化batch size,并基于batch size,不断调整、profile、并优化power limit。

  • Remote Procedure Call as a Managed System Service:通过dynamic binding、将marshalling放在每台机器的一个集中服务上、架构设计,改变了原有的RPC库+sidecar的实现,实现热更新、RPC-as-a-Service、模块化policy enforcement。

  • Canvas: Isolated and Adaptive Swapping for Multi-Applications on Remote Memory:文章主要解决多应用在remote memory system中的multi-tenancy的interference问题。这个interference的主要原因是shared remote memory data path(比如swap cache和remote memory的swap partition里面alloc和free时候的lock contention、混合的access patterns给swap prefetcher带来的影响、应用之间/应用和prefetcher之间的RDMA的竞争,这些都是linux cgroup管不到的)。canvas将prefetcher、swap cache、RDMA bandwidth和swap partition都隔离了。同时,canvas在这个基础上还进行了adaptive optimization(提供two-tier prefetcher、two-dimentional RDMA scheduler、adaptive entry allocator)。

  • Hermit: Low-Latency, High-Throughput, and Transparent Remote Memory via Feedback-Directed Asynchrony:主要是提出adaptive, feedback-directed asynchrony的技术,针对remote memory重新设计了swap system。它将非紧急但耗时的操作(如swap-out、cgroup charge、I/O deduplication等)从故障处理路径中移除,并以异步方式执行。与Fastswap等之前的工作不同,Hermit会收集运行时反馈,并利用这些反馈来指导异步操作的执行方式,即是否应启用异步操作、异步操作的级别以及异步操作的调度方式(ppt中是回答两个问题:When to start reclamation?How many cores for reclamation?)。关于remote memory的延迟分解值得借鉴。

  • NetRPC: Enabling In-Network Computation in Remote Procedure Calls:现有的网内计算(INC)编程对普通应用程序开发人员来说并不友好,它要求繁琐的网络工程细节,如流量控制、数据包组织、芯片专用编程语言和ASIC架构等,并有许多限制。我们提出了一种支持INC的通用RPC系统NetRPC。NetRPC为软件开发人员提供了一套熟悉的轻量级接口,以便使用传统的RPC编程模型来描述INC应用程序。NetRPC还提出了一种通用INC实现方法和一套优化技术,以保证在共享INC数据平面上运行的各类INC应用程序的效率。(文章的主要论点是,RPC adapts INC functions better than other models,比如MPI)。

  • Bolt: Sub-RTT Congestion Control for Ultra-Low Latency:为了适应200Gbpf以上的CC,文章主要解决两部分的问题:the use of precise congestion signals and minimization of the control loop delay。文章提出的Bolt 基于三个核心理念:(i) Sub-RTT 控制(SRC)对拥塞的反应速度比 RTT 控制环路延迟更快(如果我没理解错,是在ingress而不是传统的egress采集信号);(ii) Proactive Ramp-Up(PRU)预测未来流量完成情况,及时占用释放的带宽(某个sender快结束的时候在自己的包里面mark一下);(iii) Supply matching(SM)明确匹配带宽需求和供应,最大限度地提高利用率。这篇文章是斯坦福和google的工作。

  • Understanding the impact of host networking elements on traffic bursts:基于eBPF和可编程交换机采集in-host和in-network的per-packet时间戳。在此基础上进行了一些针对burst的分析工作。

  • Poseidon: Efficient, Robust, and Practical Datacenter CC via Deployable INT:主要希望解决几个问题:现有的CC react to every congestion,在多条流经过不同的多跳的场景下这会破坏max-min fairness; 没达到fair-share的也会减少自己的流量,这会导致收敛速度慢;convergence和stable rate之间有一个trade-off。作者认为,这是因为两个基本原因:一方面,现在的CC react to every congestion;另一方面,CC算法假设信号是binary的(拥塞/非拥塞),这导致AIMD demands same reaction from all flows。为此,文章提出了以下几个设计:提供maximum per-hop delay作为low-overhead quantitative signal;rate-adaptive target enables different reactions,每条流都计算自己的max per-hop delay target(MPT);adaptive MIMD rate update,每个流计算自己的update ratio。

  • Rearchitecting the TCP Stack for I/O-Offloaded Content Delivery:作者观察到,CPU是IO-bound workload的瓶颈,这是因为所有的内容都需要经过memory。作者提出使用P2PDMA,让网卡从disk上面直接抓数据。这带来了一个核心问题:TCP stack怎么办?TCP不能够放在CPU上了,因为disk content根本不走CPU;也不能放在smartNIC上,因为性能太低。论文提出一个混合的方案,separate IO-intensive data plane from TCP stack。CPU上的TCP stack负责控制平面逻辑(reliable data delivery、congestion control、flow control和header generation);smartNIC上的TCP stack负责从disk中读数据、发包。

  • Hydra: Serialization-Free Network Ordering for Strongly Consistent Distributed Applications:分布式应用通过sharding(Transaction Protocol如2PC)提供scalability、通过replication(Replication Protocol如Paxos)提供fault tolerance。在这过程中,人们提出使用dedicated的sequencer(通常是可编程交换机)来实现consistent ordering,来降低分布式系统中coordination的开销。但是现在的sequencer只有一台机器,很容易导致很多问题(延迟、可扩展性、failover)。文章的主要idea是结合每个sequencer自己上面的sequencer编号和physical timestamp来解决使用多个sequencer时需要serialization的问题。

  • The Benefit of Hindsight: Tracing Edge-Cases in Distributed Systems:针对利用tracing检测symptomatic edge cases存在的specificity和overhead的trade-off问题,本篇论文提出了retroactive sampling。所有trace data都被记录在本地,只有检测到symptoms的时候才ingest/report。

  • Invisinets: Removing Networking from Cloud Networks:本篇文章基本上是一篇API的工作。云租户网络的供应、配置和管理非常复杂。租户必须弄清楚如何组装、配置、测试等大量低级building blocks,以实现其高级目标。由于这些网络越来越多地跨越多个云和企业内部基础设施,其复杂性很难扩展。作者认为,当前的云抽象给租户带来了不必要的负担,使其无法成为经验丰富的网络运营商。因此,论文为云提供商的网络资源提供了一个替代接口,租户的连接需求被简化为一组与计算端点相关的参数。(这篇文章的说理和叙述部分非常流畅!作为一篇几乎是纯API设计的文章,设计其实没有很复杂)

  • Poseidon: Efficient, Robust, and Practical Datacenter CC via Deployable INT

  • Doing More with Less: Orchestrating Serverless Applications without an Orchestrator:以库的形式,给每个function部署ingress和egress控制,实现分布式的串链调度。

  • Following the Data, Not the Function: Rethinking Function Orchestration in Serverless Computing:创建了数据桶来存储中间数据(比如函数返回的结果),并将orchestration的功能变成由桶触发。

  • Unlocking unallocated cloud capacity for long, uninterruptible workloads:文章初步解决了long-running任务在HVM上的运行问题。通过对Harvest VM的特征分析发现,虽然HVM的资源空间和时间多样性很大,但是资源inter-change时间分布在一段时间内是相对稳定的。因此,即使不知道资源变化的确切时间,但变化之间的时间分布是已知的。主要包括以下几个核心设计点:预测资源变少的概率;将长任务与更稳定的HVM相匹配、将短任务与不稳定的HVM相匹配;维护一个相对稳定的HVM池。

  • Formal Methods for Network Performance Analysis:使用形式化方法搜索traffic pattern空间,以queuing modules的形式对网络组件建模,并获得满足查询条件的工作负载描述。

OSDI

2014

2016

2018

2020

2022

  • Hubble: Performance Debugging with In-Production, Just-In-Time Method Tracing on Android:Hubble是一个method-tracing系统,在所有支持的和即将由华为制造的安卓设备上运行,以帮助调试性能问题。Hubble instruments every non-inlined bytecode method’s entry and exit,以记录method的名称和时间戳。trace points被记录到一个内存中的环形缓冲器中,旧的数据会不断被覆盖。这些数据只有在检测到性能问题时才会被保存下来,使工程师在检测到异常情况之前就能及时获得宝贵的、详细的运行时间数据。
  • XRP: In Kernel Storage Functions with eBPF:当一个查找需要一连串的前置查询的时候,可能会产生一系列最后并没有用到的数据,这些查询可以被BPF加速。实现resubmission logic来增强NVMe驱动中的interrupt handler,包括一个BPF hook、一个file translation step、the construction and resubmission of the next NVMe request at the new physical offset。

Others

2010

2013

2014

2020

2022

2023

Security

2023

SC

2018

SIGCOMM

2016

  • WebPerf: Evaluating What-If Scenarios for Cloud-hosted Web Applications:azure的性能预测工具,主要解决改资源配置之后的性能预测。用插桩和一些定制化操作得到包含了TAP异步调用的依赖图,offline进行profile得到与应用无关的、和资源有关的、不同配置的API调用延迟分布,直接执行得到与应用有关的、和资源无关的延迟分布。what-if中变了哪些资源,就用对应的延迟替换掉资源发生变化的部分。

2018

2020

  • PINT: Probabilistic In-band Network Telemetry:通过概率overwrite的方式,解决了传递消息随path变长而越来越多的问题,降低了开销。还基于此,提出了分布式encode和牺牲精度压缩空间的算法。

2022

  • [SPRIGHT: Extracting the Server from Serverless Computing! High-performance eBPF-based Event-driven, Shared-memory Processing](https://datawine.github.io/sigcomm22-

SIGMETRICS

2014

SoCC

2016

2019

2020

2021

2022

  • See it to Believe it? The Role of Visualisation in Systems Research:计算机系统研究中的一个常见设施是Visualisation-in-the-loop工具:这些工具产生复杂的输出数据,并需要人类用户视觉解读数据。然而,系统研究经常忽略或将必要的可视化组件的细节放在次要位置。通过调查1274篇近期的系统论文,论文发现至少有7.7%(98篇)的论文介绍了Visualisation-in-the-loop工具。我们还发现,这些出版物中的大多数没有关注并且很少解释实施的可视化。论文提出,当对可视化进行阐述时,循环可视化系统研究的影响力和覆盖范围可以大大增强,并提出了一套具体的步骤清单,供作者实现这一机会。

S&P

2014

SOSP

2015

2019

2021

2023

TON

2018

TPDS

2012

2013

2015

2017

2022

WWW

2013

2022