我们提出了 NVLog,一个基于 NVM 的磁盘文件系统的核前置日志,旨在透明地利用传统存储堆栈中 NVM 的高性能。 NVLog提供按需字节粒度同步吸收,为异步操作保留快速DRAM路径,同时仅暂时占用NVM空间。 为了实现这一目标,我们设计了一个高效的日志结构,开发了解决异构崩溃一致性的机制,针对小写进行了优化,并实现了强大的崩溃恢复和垃圾收集方法。 与以前的解决方案相比,NVLog更轻,更稳定,并提供更高的性能,同时利用成熟的内核软件堆栈并避免数据迁移开销。 实验结果表明,NVLog可以加速磁盘文件系统高达15.09倍,并在各种情况下分别超过NOVA和SPFS,最高可达3.72x和324.11x。
内存带宽调节和缓存分区是广泛使用的技术,用于在实时计算系统中实现可预测的时间。 结合分区调度,这些方法需要将任务和资源与核心进行仔细的共分配,因为任务执行时间在很大程度上取决于可用的分配资源。 为了应对这一挑战,本文提出了任务资源共分配的0-1线性程序,以及一个多目标启发式,旨在最大限度地减少资源使用,同时保证在抢先EDF调度策略下的可调度性。 我们的启发式使用多层框架,其中外层使用帕累托修剪的搜索来探索资源分配,内层通过使用动态编程解决背包问题来优化任务分配。 为了评估拟议优化算法的性能,我们在嵌入式 AMD UltraScale+ ZCU102 平台上对真实世界基准进行了分析,通过 Jailhouse 虚拟机管理程序启用了细粒度的资源分区,利用缓存集分区和 MemGuard 进行内存带宽调节。 基于基准测试结果的实验表明,拟议的0-1线性程序通过在同一时限内找到更优化的解决方案,优于现有的混合整数程序。 此外,拟议的多目标多层启发式在可调度性、资源使用、非主导解决方案数量和计算效率方面的表现一直优于最先进的多资源任务共分配算法。
访问控制错误配置是当今 Web 应用程序数据泄露的主要原因之一。 然而,很少有技术可用于支持对访问控制变化的自动和系统测试,并检测风险变化以防止严重后果。 因此,这些关键安全配置通常缺乏测试,或者以临时方式手动测试。 本文主张应为用户提供测试,以测试访问控制配置更改。 关键挑战是此类测试需要与生产环境(推理端到端行为)一起运行,并且需要具有性能效率。 我们提出了一种新的方法来创建这样的测试,作为一个包含生产程序和数据的迷你测试环境,称为ACtests。 ACtests报告访问控制更改的影响,即被拒绝但在更改后允许的请求,反之亦然。 用户可以验证更改的请求是否有意或无意,并识别潜在的安全漏洞。 我们评估具有 Dockerhub 上广泛使用的 Web 应用程序的 193 个公共配置的 ACtests。 ACtests从72个配置图像中检测到168个新漏洞。 我们向图像维护者报告:其中54个已经确认,44个已经修复。 我们还对五个真实世界部署的系统进行了深入实验,包括维基百科和一家商业公司的网络代理。 我们的结果表明,ACtests可以有效有效地检测所有变化的影响。
欧盟技术主权战略围绕RISC-V指令集架构,欧洲处理器计划领导构建生产就绪处理器的努力。 专注于实现功能性RISC-V生态系统,BZL计划(www.bzl.es)正在努力创建一个软件堆栈以及硬件。 在这项工作中,我们详细介绍了在移植一个广泛使用的 syscall 拦截库(主要用于 AdHocFS,即 DAOS、GekkoFS))到 RISC-V 方面所做的努力,以及我们如何克服遇到的一些限制。
无电池物联网可能会通过从环境中收集所需的操作能量来彻底改变我们对连接设备的理解。 这些系统附带了系统软件的挑战,即间歇供电的物联网设备必须在非易失性存储器中检查其状态,以便在有足够的能量时恢复这种状态。 稀缺的能源资源需求仅在断电前持续存在修改数据,这需要精确的修改跟踪。 我们提供vNV-Heap,第一个基于所有权的几乎非易失性Heap,用于间歇性动力系统,保证电力故障弹性。 堆利用所有权系统,例如 Rust 实现的零成本(即编译时)抽象,以跟踪修改和虚拟化对象持久性。 为了实现功率故障弹性,我们的堆被设计和实现,通过静态程序代码分析来保证有限制的操作:例如,堆允许确定对持久修改和当前易失性对象的操作的最坏能耗。 对嵌入式硬件平台(即ESP32-C3)的开源实现进行评估后,表明使用我们的堆抽象比现有方法更节能,同时还通过静态最坏情况提供运行时保证。
由快速小内存和慢速大内存组成的分层内存系统已经出现,以具有成本效益的方式提供高容量内存。 分层内存系统的有效性依赖于通过页面迁移快速一线存储器可以吸收多少内存访问。 最近的研究提出了几种不同的方法来检测热点页面并有效地迁移它们。 然而,我们的调查显示,页面迁移并不总是有益的,因为它具有检测和迁移热点页面的相关成本。 当应用程序对迁移不友好时,通常最好不要迁移页面。 基于对迁移友好性的观察,本文提出了多租户分层内存系统的迁移控制框架。 首先,它提出了迁移友好性的检测机制,使用每页乒乓球状态。 在短时间内反复推广和降级的乒乓球页面告诉迁移有效性。 根据他们的变化行为,迁移被阻止或继续。 页面迁移停止后,第二种机制以低成本的方式检测内存访问模式的变化,以确定是否需要恢复迁移。 最后,由于每个应用程序都有不同的行为,我们的框架提供每个进程迁移控制,根据应用程序特性选择性地停止和启动迁移。 我们在 Linux 内核中实现框架。 使用基于商业 CXL 的分层内存系统的评估表明,它有效地控制了单租户和多租户环境中的迁移。
Bauplan是一个基于FaaS的湖景,专门为数据管道而建:其执行引擎使用Apache Arrow进行数据传递在DAG中的节点之间。 虽然Arrow被称为“零复制格式”,但实际上,对共享内存的Linux内核支持有限,因此很难避免完全复制。 在这项工作中,我们引入了几种新技术来消除几乎所有从管道复制:特别是,我们实现了一个新的内核模块,该模块执行去匿名化,从而消除了复制到中间数据。 最后,我们分享了我们对不同工作负载类型的初步评估,并讨论了我们未来改进计划。
Autoware是在机器人操作系统(ROS)2上实现的自动驾驶系统,其中端到端的定时保证对于确保安全至关重要。 然而,用于分析端到端延迟的现有ROS 2 cause-effect chain模型难以准确代表Autoware的复杂性,特别是在同步回调,队列消耗模式和反馈循环方面。 为了解决这些问题,我们提出了一种新的调度模型,将Autoware的端到端时间约束分解为每个子DAG的本地相对截止日期。 这种多期限的DAG调度模型避免了对通过队列和循环的数据流进行复杂分析的需要,同时确保所有回调在正确的间隔内接收数据。 此外,我们还扩展了拟议模型的全球最早截止日期第一(GEDF)算法,并使用来自Autoware的合成工作负载评估其有效性。
检索增强生成(RAG)已成为通过与外部知识源集成增强大语言模型可靠性的新范式。 然而,这些系统的高效部署带来了重大的技术挑战,因为它们本质上是由LLM,数据库和专门处理组件组成的异构计算管道。 我们引入了 Patchwork,这是一个全面的端到端 RAG 服务框架,旨在解决这些效率瓶颈。 Patchwork的架构提供了三个关键创新:首先,它提供了一个灵活的规范界面,使用户能够实现自定义RAG管道。 其次,它将这些管道部署为分布式推理系统,同时针对单个RAG组件的独特可扩展性特性进行优化。 第三,Patchwork 包含一个在线调度机制,可持续监控请求负载和执行进度,通过战略请求优先级和资源自动缩放,动态地将 SLO 违规行为降至最低。 我们在四个不同的RAG实现中进行的实验评估表明,Patchwork比商业替代品提供了实质性的性能改进,实现了超过48的吞吐量提升
在诸如 Linux 上的 ROS 2 系统等商品化组件化实时系统中,实时调度已被研究于嵌套调度之下:操作系统线程调度和中间件层调度(例如,ROS 2 Executor)。然而,通过建立回调与操作系统线程之间持久的一一对应关系,我们可以忽略中间件层,并将操作系统调度参数(例如,调度策略、优先级和亲和性)直接应用于各个回调。我们提出了一种能够实现这一想法的中间件模型,并将其实现为新型 ROS 2 Executor,即 CallbackIsolatedExecutor。我们证明,无论回调数量如何,CallbackIsolatedExecutor 的成本(用户-内核切换、上下文切换和内存使用)均低于 MultiThreadedExecutor。此外,CallbackIsolatedExecutor 相对于 SingleThreadedExecutor 的成本保持在固定比例之内(对于进程间通信为 1.4 倍,对于进程内通信为 5 倍)。未来的 ROS 2 实时调度研究可以避免嵌套调度,忽略中间件层。
由于其重要的资源和基础设施需求,可转换为云服务。 量子多编程并行运行多个量子作业,是最大限度地利用此类系统的一种有希望的方法。 此设置的一个关键挑战是需要一个在线调度程序,能够处理动态提交的工作,而其他程序已经在运行。 在这项研究中,我们为基于晶格手术的容错量子计算系统制定了在线工作调度问题,并提出了一个高效的调度程序来解决它。 为了满足在线环境中所需的响应能力,我们的调度器通过使用更简单的立方体表示来近似格子手术程序,最初表示为多立方体。 这种近似值可实现高效的调度,同时提高整体吞吐量。 此外,我们在调度过程中加入了分流机制,证明它可以进一步提高QPU利用率。
缩小带宽问题是当前实时操作系统的长期扩展问题,其特征是系统中的任务数量与与外围设备相关的最大带宽之间的表面依赖。 在最坏的情况下,这种恶魔般的缺陷将继续降低外围设备的最大带宽,因为应用程序增加了更多的任务。 如果不考虑这一点,如果添加更多任务,例如实现新功能,则以前功能的应用程序可能会遇到数据丢失。 指定并讨论了解决缩小带宽问题的三个新颖的RTOS架构:递延结构RTOS架构,障碍和请求RTOS架构和严格原子RTOS架构。 最后,还介绍了两个硬件解决方案,以减小带宽问题。
随着DNN应用程序的快速发展,多租户执行(其中多个DNN位于单个SoC上)正在成为主流趋势。 虽然在以前的工程中提出了许多方法来提高多租户的性能,但共享缓存的影响并没有很好地研究。 本文提出了CaMDN,这是一种架构调度共同设计,旨在提高集成NPU上多租户DNN的缓存效率。 具体来说,建议使用轻量级架构支持共享缓存中的模型专用、NPU控制的区域,以消除意外的缓存争抢。 此外,还提出了缓存调度方法以提高共享缓存利用率。 特别是,它包括一个缓存感知映射方法,用于适应不同的可用缓存容量,以及一个动态分配算法,以调整运行时位于同一位置的DNN之间的使用情况。 与之前的作品相比,CaMDN将内存访问减少了33.4,达到2.56×(平均1.88×)。
基于LLM的智能代理面临着重大的部署挑战,特别是与资源管理相关的挑战。 允许不受限制地访问LLM或工具资源可能会导致代理商的低效甚至潜在的有害资源分配和利用。 此外,当前代理设计中缺乏适当的调度和资源管理机制阻碍了并发处理,限制了整个系统的效率。 随着代理的多样性和复杂性不断增长,解决这些资源管理问题对基于LLM的代理系统变得越来越重要。 为了应对这些挑战,本文提出了基于LLM的AI Agent Operating System(基于LLM的AI Agent Operating System)的架构。 它引入了一种新的架构,通过将资源和LLM特定服务从代理应用程序隔离到AIOS内核中来服务基于LLM的代理。 此 AIOOS 内核为运行时代理提供基本服务(例如,调度、上下文管理、内存管理、存储管理、访问控制)和高效的资源管理(例如 LLM 和外部工具)。 为了提高可用性,AIX 还包括一个 AIOS-Agent SDK,这是一套全面的 API,专为利用 AIOOS 内核提供的功能而设计。 实验结果表明,使用AIOS可以为各种代理框架构建的服务代理实现高达2.1倍的执行。 源代码可在https://github.com/agiresearch/AIOS查阅。
弹性是云计算的基础,因为它能够快速分配资源,以满足每个工作负载的需求,而不是预先提供资源以满足性能目标。 然而,即使是无服务器平台 - 在10到100毫秒内启动沙箱 - 也没有足够的弹性来避免过度提供昂贵的资源。 今天的FaaS平台依靠预先提供内存中的许多空闲沙箱,以减少缓慢,寒冷的启动的发生。 高弹性的一个关键障碍是引导来宾操作系统并配置沙箱中网络等功能,这些功能需要将隔离的POSIX类接口暴露给用户功能。 我们的关键见解是,重新设计云原生时代的应用程序界面,可以共同设计一个更高效、更具弹性的执行系统。 现在是重新思考云抽象的好时机,因为开发人员正在构建应用程序,以实现云原生。 云原生应用程序通常由用户提供的计算逻辑与通过REST API暴露的云服务(用于存储,AI推理,查询处理等)进行交互。 因此,我们提出了蒲公英,一个具有声明式编程模型的弹性云平台,将应用程序表示为纯计算函数和更高层次通信功能的 DAG。 蒲公英可以在数百微秒内冷启动的轻量级沙箱中安全地执行不受信任的用户计算功能,因为纯函数不依赖于额外的软件环境,如来宾操作系统。 蒲公英使每个请求按需启动沙箱变得实用,与爆竹相比,性能可变性降低了两到三个数量级,并将提交内存减少了96
尽管无服务器计算提供了引人注目的成本和部署简单性优势,但在安全管理敏感数据方面仍然存在重大挑战,因为它在不受信任的云中无服务器计算环境中通过短暂的功能执行网络流动。 虽然机密虚拟机(CVM)提供了一个有前途的安全执行环境,但它们与无服务器架构的集成目前在关键领域面临根本性的限制:安全性、性能和资源效率。 我们介绍了Hacher,一个用于安全无服务器部署的机密计算系统,以克服这些限制。 通过在 CVM 中使用嵌套的机密执行和解耦的来宾操作系统,Hacher 以最小的“trustlet”运行每个函数,通过减少的可信计算库(TCB)显著提高安全性。 此外,通过利用基于轻量级 LibOS 的数据为中心的 I/O 架构,Hacher 优化了网络通信,以应对性能和资源效率挑战。 我们的评估表明,与基于CVM的部署相比,Hacher具有4.3倍的较小TCB,改善了端到端延迟(15-93密度(高达907x),并减少了功能间通信(高达27倍)和功能链延迟(16.7-30.2x);因此,Hacher为保密无服务器计算提供了一个实用的系统。
具有混合专家(MoE)架构的大型语言模型(LLM)在各种任务上显示出有希望的性能。 然而,由于模型尺寸巨大,在GPU内存不丰富的资源受限环境中运行它们具有挑战性。 一些现有系统建议使用CPU资源来解决这个问题,但它们要么受到CPU和GPU之间频繁移动数据的重大开销的影响,要么没有考虑CPU和GPU的明显特征。 本文提出了 Fiddler,一个用于具有有限 GPU 资源的 MoE 模型的资源效率推理系统。 Fiddler通过确定最佳执行策略战略性地利用CPU和GPU资源。 我们的评估表明,与针对特定场景(如单批次推理或长预填充)优化的最先进的系统不同,Fiddler在所有场景中的表现都更好。 与不同的基线相比,Fiddler在单批次推断中实现了1.26倍的速度,在长预填充处理中实现了1.30倍的速度,在光束搜索推理中实现了11.57倍。 Fiddler的代码可在https://github.com/efeslab/fiddler上公开。
并发对于我们满足现代性能要求的关键软件至关重要,但并发错误是出了名的难以检测和重现。 控制并发测试(CCT)可以通过控制线程交错,并通过调度算法系统地探索交错空间,使错误更容易暴露。 然而,现有的内核代码CCT解决方案是重量级的,导致显著的性能、可维护性和可扩展性问题。 在这项工作中,我们引入了LACE,这是一个由eBPF授权的内核代码轻量级CCT框架。 在没有修改虚拟机管理程序的情况下,LACE 会为 CCT 算法量身定制的自定义调度器,将非确定性线程执行序列化为受控排序。 LACE还提供了一种机制,可以安全地将调度点注入内核,以便进行细粒度控制。 此外,LACE采用两阶段突变策略将调度器与并发模糊器集成,从而可以自动探索输入和调度空间。 在我们的评估中,LACE与最先进的内核并发模糊器相比,在bug曝光方面实现了38%的分支,57%的开销减少和11.4倍的速度加快。 我们的定性分析也证明了LACE的可扩展性和可维护性。 此外,LACE在Linux内核中发现了八个以前未知的错误,其中六个得到了开发人员的确认。
持久性是大内存系统的第一原则。 我们全面分析了现有内存层次结构的垂直和横向扩展。 网络正在扁平化传统的存储层次结构。 我们介绍了关于大内存系统的最先进的研究,以及设计方法和实现。 我们讨论全栈和移动的坚持。 为了实现成本效益和提供高性能,我们提出了投机性和确定性的持久性。
我们介绍了OSVBench,这是评估大型语言模型(LLM)的新基准,用于生成与操作系统内核验证任务相关的完整规范代码。 基准首先通过向LLM提供编程模型,将规范生成问题定义为语法和语义的有限范围内的程序合成问题。 LLM需要理解提供的验证假设以及搜索的潜在语法和语义空间,然后在操作系统的高级功能描述的指导下生成潜在bug操作系统代码实现的完整规范。 该基准基于真实世界的操作系统内核Hyperkernel构建,总共由245个复杂的规范生成任务组成,每个任务都是大约20k-30k令牌的长时间上下文任务。 我们对12个LLM的全面评估显示了当前LLM在操作系统验证的规范生成任务上的有限性能。 在基准测试中,他们的表现存在显著差异,突出了他们处理长语境代码生成任务的能力差异。 评价工具包和基准可在https://github.com/lishangyu-hkust/OSVBench查阅。