论文阅读列表
ARXIV
2023
- Nahida: In-Band Distributed Tracing with eBPF:文章主要是在HTTP的header里面插入context。同时,在线程创建时记录父子关系,并利用这个父子关系处理多线程的context propagation。不同命名空间的线程ID追踪是一个技术点。
ASPLOS
2016
- CloudSeer: Workflow Monitoring of Cloud Infrastructures via Interleaved Logs:获得log的原始数据,用时序关系为边的自动机构造workflow图,获得workflow的异常。难点在于异步和并发带来的interleaved。 通过fork和join解决异步、通过标识符集解决并行问题。
2021
- Sage: practical and scalable ML-driven performance debugging in microservices:用因果贝叶斯网络和GVAE进行微服务perf debug。
2022
- IceBreaker: Warming Serverless Functions Better with Heterogeneity:利用异质化机器的区别来优化serverless function的warmup
- INFless: A Native Serverless System for Low Latency High Throughput Inference:主要对机器学习在serverless上的应用进行了适配
- FaaSFlow: Enable Efficient Workflow Execution for Function-as-a-Service:主要对serverless的workflow进行了优化,改成了分布式函数状态存储和in-memory的数据传输
- Serverless Computing on Heterogeneous Computers:提出了一个FPGA+CPU+DPU的serverless平台,主要工作是做兼容的
ATC
2006
- sMonitor: A Non-Intrusive Client-Perceived End-to-End Performance Monitor of Secured Internet Services:sMonitor,一个非侵入性基于pcap的性能监测器,可以检测HTTPS服务。
2015
- Log2: A Cost-Aware Logging Mechanism for Performance Diagnosis:文章解决一个核心问题:whether to log。这个log和传统的log不一样,这个log的意思是Monitored Code Region的执行时间。论文用了两层filter,本地过滤器负责丢弃琐碎的日志请求,全局过滤器负责将排名靠前的日志请求flush到磁盘上。
2019
- Detecting Asymmetric Application-layer Denial-of-Service Attacks In-Flight with FineLame:eBPF+KMeans基于资源指标检测非对称DoS攻击。
- The Design and Operation of CloudLab:主要是讲分布式实验平台CloudLab的综述
2021
- Argus: Debugging Performance Issues in Modern Desktop Applications with Annotated Causal Tracing:这篇文章主要处理desktop application的各种异步、并发、交互等等操作导致的因果关系存在误差的问题。主要提出了强边/弱边、异常(关键)路径搜索算法、正常/异常执行的比较算法。
EuroSys
2018
- Scrub: Online TroubleShooting for Large Mission-Critical Applications:针对极致的性能需求,对故障排除的query相关进行了优化。
- Universal context propagation for distributed system instrumentation:提出分层和baggage context来解决分布式系统中instrumentation的context propagation问题。核心思想就是分层和解耦。
2019
- TAS: TCP Acceleration as an OS Service:本篇文章主要解决RPC场景下的TCP开销太大的问题。解决方法是从内核中提取出TCP最小功能,以用户态形式提供TCP fast-path。将原有功能(连接建立/销毁、拥塞控制和超时重传)留在slow-path(原来的协议栈)里。
2020
- Analyzing System Performance with Probabilistic Performance Annotations:本文提出了performance annotations的概念(性能Metrics是特征Features的函数)。通过插桩、动态分析得到records,通过回归树和混合模型进行建模。
2022
- DeepRest: Deep Resource Estimation for Interactive Microservices:用深度学习的方法,提出API-based,估计微服务资源使用量
- Fireworks: A Fast, Efficient, and Safe Serverless Framework using VM-level post-JIT Snapshot:serverless加速。通过一个train的过程,在entry point前面JIT再snapshot
- Jiffy: Elastic Far-Memory for Stateful Serverless Analytics:很不错的一篇工作。主要是serverless的analytics任务的far-memory管理,灵感来源于内存的分块管理。比Pocket更精细了。
- Memory Deduplication for Serverless Computing with Medes:感觉很有新意。是从warm的角度来优化serverless冷启动的,也就是warm一部分,总体来说应该是snapshot+diff,然后只保存diff。
- FaaSnap: FaaS Made Fast Using Snapshot-based VMs:把serverless snapshot restore的page fault问题优化到了极致
FSE/ESEC
2017
- Short-Paper-QEMU-based framework for non-intrusive virtual machine instrumentation and introspection:对Qemu的ABI进行hooking进行非侵入式的VM introspection。
2020
- Graph-Based Trace Analysis for Microservice Architecture Understanding and Problem Diagnosis:文章主要提出了eBay的自己实现的一套基于图的微服务跟踪分析方法。图表示增加了business flow和EP chain的概念。存储采用Neo4j作为图数据库、Druid作为分析数据库,两者结合。
ICSE
2015
- A Flexible and Non-intrusive Approach for Computing Complex Structural Coverage Metrics:论文提出基于static partial evaluation of the decisions in the source code和源码到字节码的映射程序,实现软件覆盖率分析。
2021
- MicroHECL: High-Efficient Root Cause Localization in Large-Scale Microservice Systems:阿里的工作。基于service call graph按照anomaly propagation方向对performance anomaly、reliability anomaly和traffic anomaly进行根因localization,还有一些机遇指标的异常判断方法和剪枝之类的。
ICDCS
2013
- Detecting Transient Bottlenecks in n-Tier Applications through Fine-Grained Analysis:论文主要是解决一些transient事件(比如JVM garbage collection)带来的bottleneck。个人认为贡献在于提出了一个新的指标:并发/吞吐。
ISCA
2017
- PowerChief: Intelligent Power Allocation for Multi-Stage Applications to Improve Responsiveness on Power Constrained CMP:PowerChief,识别瓶颈服务、自适应选择boosting技术、动态调整功率。
2022
- HiveMind: A Hardware-Software System Stack for Serverless Edge Swarms:serverless+edge computing优化。主要利用serverless的可扩展性,在集中式和分布式之间取平衡,用serverless去做之前集中式的部分。
- Lukewarm Serverless Functions: Characterization and Optimization:针对serverless的warm instance交互运行导致的cache miss,设计了FIFO的L2 prefetch
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
- CaT: Content-aware Tracing and Analysis for Distributed Systems:用strace/ebpf做tracing,同时采集数据内容。用哈希计算内容的相似性,进行异常/正常的对比。
NDSS
2020
- OmegaLog: High-Fidelity Attack Investigation via Transparent Multi-layer Log Analysis:一篇log causality的文章。
2022
- REPTTACK: Exploiting Cloud Schedulers to Guide Co-Location Attacks:论文主要介绍repttack,利用filter-score调度器和一些user specification可以实现co-location。
NSDI
2011
- Diagnosing performance changes by comparing request flows:论文主要提出的是request-flow comparison,也就是比较两个不同时期的流特征。 论文主要提出两种异常:执行时间异常和执行路径异常。 值得注意的是,request-flow comparison和anomaly detection不一样。 前者主要比较两个不同period的distribution changes,后者主要比较一个period内表现明显不同的flow。
2013
- Improving availability in distributed systems with failure informers:本篇文章提出了Pigeon,用来在end-host的视角监测。系统包括分布在process、操作系统、路由器和ospf的sensor,报告问题是否是永久性的和问题是否已经发生了。
2014
- I Know What Your Packet Did Last Hop: Using Packet Histories to Troubleshoot Networks:在SDN场景下,对数据包和交换机信息进行镜像,重组packet history。
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
- Confluo: Distributed Monitoring and Diagnosis Stack for High-speed Networks:主要是在end-host对10Gbps以上的telemetry data的收集增加支持。
2022
- Efficient Scheduling Policies for Microsecond-Scale Tasks:开源。模拟。对比load balancing策略和core allocation策略对1us级别任务的性能影响。
- Buffer-based End-to-end Request Event Monitoring in the Cloud:以请求粒度捕获请求延迟异常(RLA)相关的事件:缓冲区建模和请求级别的数据包注入
- A Case for Task Sampling based Learning for Cluster Job Scheduling:提出使用空间特性(其实就是sample-based)来预测集群作业的Job Completion Time要比history-based更好。
- Starlight: Fast Container Provisioning on the Edge and over the WAN:重新设计了容器provisioning的协议和流程等,来让在低带宽、高延时的网络中加速容器provisioning
- Closed-loop Network Performance Monitoring and Diagnosis with SpiderMon:基于可编程交换机的网络异常监控。论文的亮点在于针对后验诊断(posterior diagnosis)、解决了现有的监控系统的两个问题:高覆盖率和低开销
- Collie-Finding Performance Anomalies in RDMA Subsystems:使用模拟退火搜索性能异常空间
- Performance Interfaces for Network Functions:提出了performance interface的概念,用符号执行和trace的一个简单执行来生成关于Performance Critical Variances的一个程序,和实际的NF一一对应
- Justitia: Software Multi-Tenancy in Hardware Kernel-Bypass Networks:对RDMA的多租户支持
- Zeta: A Scalable and Robust East-West Communication Framework in Large-Scale Clouds:云网关的设计
- Cocktail: A Multidimensional Optimization for Model Serving in Cloud:针对ensemble learning,在保证机器学习的准确率的情况下设计动态模型选择和购买算法,来保证经济效益
- Evolvable Network Telemetry at Facebook:PCAT,一个production change-aware的遥测系统,处理快速发展的网络中的变化。我们建议使用一个change cube abstraction来系统地跟踪变化,并使用intent-based layering的设计来限制和跟踪变化。
- SketchLib: Enabling Efficient Sketch-based Monitoring on Programmable Switches:这篇文章主要是在p4交换机针对sketch应用进行优化。
- HeteroSketch: Coordinating Network-wide Monitoring in Heterogeneous and Dynamic Networks:主要解决sketch算法的在异质化硬件上的问题。首先用profiler测量硬件性能,再用optimizer根据性能放置sketch算法。
- Packet Order Matters! Improving Application Performance by Deliberately Delaying Packets:实际场景中,混杂流的包是交替到达的。论文提出将同一个流的包buffer一下,然后批处理统一发送,会提高效率。
- How to diagnose nanosecond network latencies in rich end-host stacks:改了基于intel-PT的perf,实现了一个full-stack的网络分析器
- CloudCluster: Unearthing the Functional Structure of a Cloud Service:根据流量矩阵对同一个数据中心内的VM进行聚类
- NetHint: White-Box Networking for Multi-Tenant Data Centers:运营商提供给用户一套简单的拓扑信息,方便他们优化机器学习应用(或者说数据密集型应用)
- Isolation Mechanisms for High-Speed Packet-Processing Pipelines:本文介绍了Menshen,它是可编程交换机的可重构匹配表(RMT)管道的一个扩展,在不同的数据包处理模块之间实施隔离。
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的各种操作对性能的不同影响,并开发了一个测试套件来复现不同种类的影响(其实是攻击)。
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
- lprof: A Non-intrusive Request Flow Profiler for Distributed Systems:lprof通过bytecode的静态分析,从runtime logs里面infers the request-flow来实现zero-instrumentation的性能监测
- The Mystery Machine: End-to-end Performance Analysis of Large-scale Internet Services:通过在全连接图上迭代,得到多服务间因果分析。
2016
- Non-Intrusive Performance Profiling for Entire Software Stacks Based on the Flow Reconstruction Principle:非侵入式根据log推断objects之间的关系,针对这个关系和时间来推断性能异常。 亮点在于关系的定义和处理上,但是objects和type的提取比较工程。
2018
- Capturing and Enhancing In Situ System Observability for Failure Detection:通过inter-process和inter-thread的error log来增加可观测性。一个设计点是indirection的处理。
- μTune: Auto-Tuned Threading for OLDI Microservices:针对On-Line Data Intensive模型中的mid-tier进行线程分析,提出了八个模型。并根据模型选择最优的模型,以实现对微服务性能的优化。
2020
- FIRM: An Intelligent Fine-grained Resource Management Framework for SLO-Oriented Microservices:SLO violation的基于SVMdetection和localization,基于RL的SLO violation的mitigation,还包括了一个fault injection framework
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
- Dapper, a Large-Scale Distributed Systems Tracing Infrastructure:分布式追踪的鼻祖文章。介绍spans、traces的概念。通过对common facilities的手动修改插桩实现分布式追踪。
2013
- Performance troubleshooting in data centers: an annotated bibliography?:这篇文章主要是对performance trouble shooting的一篇综述,分类方法可以参考一下
2014
- So, you want to trace your distributed system? Key design insights from years of practical experience:一篇14年的关于分布式追踪的前瞻式文章,其风格很像综述。
2020
- A protocol-independent container network observability analysis system based on eBPF:使用eBPF的network observability分析系统。
- ViperProbe: Rethinking Microservice Observability with eBPF / ViperProbe: Using eBPF Metrics to Improve Microservice Observability:ViperProbe,一个基于eBPF的微服务收集框架。在副本集群上进行测试,收集metrics。通过eBPF实现动态调整(怎么动态调整没说)。
2022
- Capturing Request Execution Path for Understanding Service Behavior and Detecting Anomalies without Code Instrumentation:论文主要是识别execution path。主要通过对系统调用的拦截实现+一些时序空间关系重构。
- A Qualitative Interview Study of Distributed Tracing Visualisation: A Characterisation of Challenges and Opportunities:本文认为,阻碍现有解决方案adoption的关键缺失一环在于:在分布式追踪中使用可视化解决方案的这一相对较新的过程中,仍然没有一些基础性工作,以了解所面临的挑战和潜在益处。在本文中,作者对两家大型互联网公司的六名分布式追踪从业人员进行了定性访谈研究。通过这些访谈,论文定性分析确定了 DT 工具的关键用例和挑战。最后,文章归纳出了设计 DT 的八项准则。这些成果首次系统地描述了可视化研究的这一丰富问题领域。
2023
- TCP’s Third Eye: Leveraging eBPF for Telemetry-Powered Congestion Control:现有的CC算法受限于操作系统内核的粗粒度信号,需要network fabric的一些visibility。但是,现有的telemetry-based solution需要changes to the end-host。利用eBPF,可以运行telemetry-based CC在内核里面。
- On Augmenting TCP/IP Stack via eBPF:论文认为,现在的TCP/IP协议栈存在无法在动态的网络设置中准确评估网络状态、不能够灵活扩展两个问题。文章提出了Augmenter,利用eBPF收集ongoing flows的信息,并且使用这个信息去manage other flows that are currently active or arriving in the future。
- Schooling NOOBs with eBPF:主要是针对WAN场景,利用eBPF实现了in-band主动被动测量。
- Enabling BPF Runtime policies for better BPF management:以helper函数为中心,对eBPF程序的运行进行static-dynamic混合的最坏情况估计。
Security
2023
- An Efficient Design of Intelligent Network Data Plane:本文实际上是将决策树的inference阶段offload到可编程交换机上,因为大小比较产生的状态爆炸问题是本文最重要的贡献。
SC
2018
- A Year in the Life of a Parallel File System:这篇论文主要是对两个leadership-level的high-performance computing centers的IO性能进行为期一年的测量。
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
- Non-intrusive, Out-of-band and Out-of-the-box Systems Monitoring in the Cloud:通过利用VMI技术,抓取目标VM的内存和磁盘信息,实现non-intrusive的监测。
- IntroPerf: Transparent Context-Sensitive Multi-Layer Performance Inference using System Stack Traces:核心观点是OS tracer一般是由系统调用触发的,系统调用和函数调用之间有gap。 文章主要是通过Event Tracing Framework for Windows(ETW)采集的system call stack去反向构造延时,通过call stack来推断函数调用,基于此进行分析。
SoCC
2016
- Automating Failure Testing Research at Internet Scale:netflix的fault injection框架。
2019
- Sifter: Scalable Sampling for Distributed Traces, without Feature Engineering:本篇文章用prediction error来表示一条trace是否“有趣”。prediction error大,意味着模型没法很好地预测这条trace,因此这条trace是有趣的。然后基于此做tail-based sampling。
- An automated, cross-layer instrumentation framework for diagnosing performance problems in distributed applications:Pythia,基于OSProfiler,通过辨别本该差不多、但是却表现出了high variance within the workflows of requests,来实现自动化插桩。
2020
- Sequoia: Enabling Quality-of-Service in Serverless Computing:论文提出了一个针对serverless functions和chains的、以QoS为优化目标的调度器
2021
- 3MileBeach: A Tracer with Teeth:3MileBeach通过在消息序列化库层插桩,透明地提供细粒度的跟踪和故障注入功能。
- Automating instrumentation choices for performance problems in distributed applications with VAIF:论文提出了VAIF (Variance-driven Automated Instrumentation Framework)。根据variance来自动搜索可能的插桩选择空间,来实现自动插桩。针对Openstack改了OSProfiler,针对HDFS改了X-Trace。
- tprof: Performance profiling via structural aggregation and automated analysis of distributed systems traces:本文基于分布式跟踪系统(Jaeger)实现了一种新的performance profiling,把trace分成四层进行分析。
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
- Stealing Webpages Rendered on Your Browser by Exploiting GPU Vulnerabilities:论文主要针对GPU memory可能存在的data exfiltration提出攻击。
SOSP
2015
- Pivot Tracing: Dynamic Causal Monitoring for Distributed Systems:distributed tracing,贡献点在于dynamic instrumentation + happened-before join关系。
2019
- The Inflection Point Hypothesis: A Principled Debugging Approach for Locating the Root Cause of a Failure:基于故障/非故障执行的最长公共前缀的分布式系统根因分析。
2021
- ghOSt: Fast & Flexible User-Space Delegation of Linux Scheduling:kernel scheduling mechanism和policy definition分开,将Linux的调度策略部分delegate到用户态,实现user-defined的linux调度策略。
- Syrup: User-Defined Scheduling Across the Stack:基于eBPF和ghOSt,在用户态实现用户自定义的数据包调度算法。核心思想是map work to execution resources。用户定义自己需要的数据包调度算法,并在应用中调用API实现部署和交互。
2023
- XFaaS: Hyperscale and Low Cost Serverless Functions at Meta:主要介绍了Meta在FaaS上、站在provider角度的优化。具体包括,消除函数的冷启动时间、在不过度配置资源的情况下处理负载峰值、防止函数对下游服务造成过载。
TON
2018
- Root Cause Analysis of Anomalies of Multitier Services in Public Clouds:主要是用similarity和random walk去做根因分析,同时也提出了internal contention(函数本身layer之间故障的传播)和external contention(资源竞争)。
TPDS
2012
- Precise, Scalable, and Online Request Tracing for Multitier Services of Black Boxes:本文是基于kprobe的一个tracing工作。一个新颖点在于除了普通的逻辑之外还提出了一些新的图关系和图表示。
2013
- Toward Fine-Grained, Unsupervised, Scalable Performance Diagnosis for Production Cloud Computing Systems:文章主要是用插桩去采样信息(基本还是执行时间),用call tree去做分类,通过CoV找到异常分类,通过RPCA在异常分类中找到异常组件。
2015
- Wait Analysis of Distributed Systems Using Kernel Tracing:这篇文章核心是在对distributed system里面的等待原因进行根因分析。主要是看因为什么wait了、wait了几次。
2017
- Diagnosing Performance Variations by Comparing Multi-Level Execution Traces:本篇文章更像是大杂烩(因为很多在引自己组里的文章)。提了一个ECCT,把分布式系统的线程之间的等待原因也标注出来了。
- Failure Diagnosis for Distributed Systems Using Targeted Fault Injection:针对分布式系统的特点提出了Target Fault Injection,通过利用分布式组件的执行流知识来控制注入位置。
2022
- An In-Depth Study of Microservice Call Graph and Runtime Performance:论文分析了阿里巴巴集群中近两万个微服务在7天内超过100亿次的调用trace。是这篇socc改的Characterizing microservice dependency and performance: Alibaba trace analysis。
WWW
2013
- Understanding latency variations of black box services:框架采集对一个给定服务的请求流,以及它们的监测属性,还有为每个请求提供服务的延迟。最终目的是给定延迟间隔,找到解释它的监测属性的子集。
2022
Accelerating Serverless Computing by Harvesting Idle Resources:使用RL对serverless资源用量进行建模,把over-provisioned的function的资源给under-provisioned的function
CMDiagnostor: An Ambiguity-Aware Root Cause Localization Approach Based on Call Metric Data:用历史数据的线性回归求上游流量对下游流量的映射,得到“无歧义的call graph”,以实现剪枝的一部分。