CrossPrefetch: Accelerating I/O Prefetching for Modern Storage——论文泛读
ASPLOS 2024 Paper 论文阅读笔记整理
问题
目前计算设备和存储设备之间的性能差距仍然很大。因此,主内存缓存和缓冲区被广泛用于操作系统、用户级文件系统[32]和I/O运行时,在隐藏性能差距和减少I/O瓶颈方面发挥关键作用[23,26,30,37]。现有的操作系统缓存和预取设计都是应用程序透明的[21,24,31,33],旨在优化计算和I/O之间的重叠。缓存的有效性在很大程度上取决于底层I/O预取机制的有效性,通过预测即将到来的I/O访问,并及时加载相应的I/O操作。在Linux等操作系统中,预取是通过虚拟文件系统(VFS)层实现的通用预读组件[19]来实现的。
但现有预取设计主要关注提高预测准确性,忽略了跨层协调和预取的有效性,无法从I/O预取中获得更高的性能,也无法充分利用SSD等现代快速存储设备中的可用带宽。
挑战
-
当前操作系统预取器的有效性低,受限于严格的接口和保守的策略,使得很难有效地利用缓存状态(即缓存中的页面)。readahead、fadvice和madvise等系统调用无法提供预取总字节数等信息,导致预取不足或预取过度。

-
当前的预取操作面临着严重的并发瓶颈。因为预取和常规I/O操作(如读取)使用相同的数据结构(如Xarray[17]),导致锁争用。当多个线程共享一个文件时,它们会争用文件级锁(如inode读写锁),并由于缺乏缓存感知而冗余地发出预取操作。
-
现有的操作系统不能有效地协调操作系统和应用程序之间的缓存状态。难以充分利用可用内存容量和I/O带宽资源,导致应用程序性能不佳。
本文方法
本文提出了CrossPrefetch,一种跨层I/O预取机制,可在操作系统和用户级运行时运行。通过在操作系统和运行时之间划分责任来解决限制,最大限度地减少开销,并实现高缓存命中、低锁争用和高I/O性能。

-
在用户空间和操作系统之间分解和分配任务,以提高预取精度,最大限度地减少不必要的I/O操作,并解决缓存状态可见性难题。操作系统组件(Cross-OS)在操作系统的文件缓存树旁,维护每个inode位图,以评估预取的有效性。通过新的readahead_info系统调用,将信息传递给用户级运行时(Cross-Lib),用于执行预读操作、导出文件的操作系统级缓存位图状态、导出操作系统级遥测。通过这些信息,Cross-Lib优化并减少了预取系统调用,改进专用文件和共享文件的应用程序线程级预取,并实现了预取自定义,绕过复杂的操作系统缓存层修改。
-
为了增强可扩展性并缓解并发瓶颈,将常规I/O和预取操作的I/O路径隔离。便于通过readahead_info系统调用快速查找缓存状态。为了适应线程共享和对文件区域的非冲突访问,通过范围树采用细粒度索引,使线程能够查询其缓存状态并同时启动通知预取请求。通过轻量级访问模式预测,Cross-Lib根据每个索引节点的缓存状态调整预取请求,从而减少了对过多预取系统调用的需求。
-
为了最大限度地利用可用内存资源,基于可用空闲内存实施了积极的预取/逐出策略。通过每文件缓存感知,根据可用的空闲内存在主动预取和逐出之间切换,提高了整体性能。
-
Cross-OS允许更大的预取请求,根据可用内存动态调整预取限制,来优化I/O路径,提高系统性能。
实验评估包括微基准、宏基准和真实工作负载,表明CrossPrefetch使I/O吞吐量的性能提高高达1.22x-3.7x。
总结
针对缓存预取,现有方法受限于接口有效性低、存在并发瓶颈、难以协调操作系统和应用程序间缓存状态。本文提出CrossPrefetch,跨层I/O预取机制,在操作系统和用户运行时之间设计跨层堆栈,操作系统向用户运行时提供缓存可见性,用户运行时提供并发和细粒度的预取。包括三个技术:(1)在用户空间和操作系统间分解任务:Cross-OS在文件缓存树旁维护每个inode位图,以评估预取的有效性;Cross-Lib接收信息,执行预读、导出文件的缓存位图状态、导出操作系统级遥测,通过信息优化并减少了预取系统调用。(2)将常规I/O和预取I/O隔离。为了适应线程共享和对文件区域的非冲突访问,通过范围树,使线程能够查询缓存状态,通过轻量级访问模式预测,Cross-Lib根据每个索引节点的缓存状态调整预取请求。(3)通过每文件缓存感知,根据可用的空闲内存在主动预取和逐出之间切换。Cross-OS允许更大的预取请求,根据可用内存动态调整预取限制。
相关文章:
CrossPrefetch: Accelerating I/O Prefetching for Modern Storage——论文泛读
ASPLOS 2024 Paper 论文阅读笔记整理 问题 目前计算设备和存储设备之间的性能差距仍然很大。因此,主内存缓存和缓冲区被广泛用于操作系统、用户级文件系统[32]和I/O运行时,在隐藏性能差距和减少I/O瓶颈方面发挥关键作用[23,26,3…...
详解 Spark Streaming 的 DStream 对象
一、DStream 的创建 1. 通过 RDD 队列 DStream 在内部实现上是一系列连续的 RDD 来表示。每个 RDD 包含有采集周期内的数据 /** 基本语法:StreamingContext.queueStream(queueOfRDDs: Queue, oneAtATime false) */ object DStreamFromRddQueue {def main(args: Ar…...
QT常用控件
目录 1.控件概述 2. QWidget 核⼼属性 设置组件是否可用 获取组件当前位置和尺⼨ QWidget的图标 组件的透明度设置 QWidget光标的设置 字体的设置 组件提示 设置组件获取到焦点的策略 stylesheet样式表 3.常用组件 QPushButton RadioButton Check Box QLabel …...
如何解决chatgpt出现503 bad gateway的问题
昨日,ChatGPT官网挂了,也就是使用web网页端访问的用户,会出现 bad gateway 情况。我们去ChatGPT官方的监控查看,已经展示相关错误。 影响的范围有: 影响了 ChatGPT 所有计划的所有用户。影响包括所有与 ChatGPT 相关…...
Halcon 双相机标定与拼图(二)
一、概述 这种标定有两种模式,有一个标定板和多个标定板两种 一个标定板 两个相机的重叠区域比较大,那么我们可以把标定板放到那个重叠区域来统一坐标系,如下 这种是只需要一个标定板,这种是推荐的方式 。这种是比较简单的&…...
【加密与解密】【04】Java安全架构
JAVA安全模块划分 JCA,Java Cryptography Architecture,Java加密体系结构JCE,Java Cryptography Extension,Java加密扩展包JSSE,Java Secure Sockets Extension,Java安全套接字扩展包JAAS,Java…...
论文阅读:Neural Scene Flow Prior
目录 概要 Motivation 整体架构流程 技术细节 小结 论文地址:...
如何通过 6 种简单方法将照片从华为转移到 PC?
华为作为全球领先的智能手机供应商之一,最近推出了其自主研发的操作系统——HarmonyOS 2.0,旨在为智能手机、平板电脑和智能手表等设备提供更流畅的用户体验。随着Mate 40/P40等系列手机计划升级到HarmonyOS 2.0,用户可能需要将手机中的文件备…...
QtCharts使用
1.基础配置 1.QGraphicsView提升为QChartView#include <QtCharts> QT_CHARTS_USE_NAMESPACE #include "ui_widget.h"2. QT charts 2.柱状图 2.1QBarSeries //1.创建Qchart对象QChart *chart new QChart();chart->setTitle("直方图演示");//设…...
深入分析 Flink SQL 工作机制
摘要:本文整理自 Flink Forward 2020 全球在线会议中文精华版,由 Apache Flink PMC 伍翀(云邪)分享,社区志愿者陈婧敏(清樾)整理。旨在帮助大家更好地理解 Flink SQL 引擎的工作原理。文章主要分…...
Spring Bean参数校验Validator
Spring Bean参数校验Validator 以下2种方式可以用于所有的 Spring bean 不仅仅是 Controller 控制器。 一、原始类型参数 在控制器(或者其他Bean)上使用Validated注解。 控制器类 RestController RequestMapping("account") Validated pub…...
AOP案例
黑马程序员JavaWeb开发教程 文章目录 一、案例1.1 案例1.2 步骤1.2.1 准备1.2.2 编码 一、案例 1.1 案例 将之前案例中增、删、改相关节后的操作日志记录到数据库表中。 操作日志:日志信息包含:操作人、操作时间、执行方法的全类名、执行方法名、方法…...
Facebook海外户Facebook广告被暂停的原因
有很多伙伴在Facebook广告时,有时会遇到账号被暂停,并通知你违反了哪些规则,那么Facebook广告被暂停的原因有哪些呢?今天小编详细梳理了一些原因,可以往下看哦~ 您的Facebook广告被暂停可能有以下几个原因:…...
网站企业需要适用于什么服务器?
对于网站企业会选择什么样的服务器呢? 为了保证网站能够稳定的运行需要选择高可用性和可靠性的网站服务器,选择具备高可用性架构的云服务器供应商,能够提供多可用区部署、自动故障转移和备份恢复等功能,保障网站在各种故障情况下的…...
winscp无法上传,删除,修改文件并提示权限不够的分析
使用winscp删除文件,报了个错如下 根据这个错就去百度,网上大部分都是通过下面这种方法解决: 在winscp端进行设置 输入主机名(即IP地址)、用户名和密码,然后点击高级 在箭头所指位置输入sudo + sftp应用程序的路径 先查询 sudo find / -name sftp-server -print点击Sh…...
Hadoop3:MapReduce之InputFormat数据输入过程整体概览(0)
一、MapReduce中数据流向 二、MapTask并行度 1、原理概览 数据块:Block是HDFS物理上把数据分成一块一块。数据块是HDFS存储数据单位。 数据切片:数据切片只是在逻辑上对输入进行分片,并不会在磁盘上将其切分成片进行存储。数据切片是MapRed…...
【Leetcode Python】70.爬楼梯
麻烦大家要自己去leetcode看题目 第一个思路 用递归会超时 return self.climbStairs(n - 1) self.climbStairs(n - 2)第二个思路 滚动数组思想 class Solution(object):def climbStairs(self, n):""":type n: int:rtype: int"""if(n<2)…...
深度学习 - 张量的广播机制和复杂运算
张量的广播机制(Broadcasting)是一种处理不同形状张量进行数学运算的方式。通过广播机制,PyTorch可以自动扩展较小的张量,使其与较大的张量形状兼容,从而进行元素级的运算。广播机制遵循以下规则: 如果张量…...
【CSS】will-change 属性详解
目录 基本语法属性值常见用途will-change 如何用于优化动画效果示例: will-change 是一个 CSS 属性,用于告诉浏览器某个元素在未来可能会发生哪些变化。这可以帮助浏览器优化渲染性能,提前做一些准备工作,从而提高性能。 基本语法…...
linux安装mysql后,配置mysql,并连接navicat软件
Xshell连接登陆服务器 输入全局命令 mysql -u root -p 回车后,输入密码,不显示输入的密码 注意mysql服务状态,是否运行等 修改配置文件my.cnf,这里没找到就找my.ini,指定有一个是对的 find / -name my.cnf 接下…...
C++的std--format编译期检查与类型安全输出在模板中的实现
C20引入的std::format为现代C带来了类型安全的格式化输出能力,其编译期检查机制与模板的结合更是为开发者提供了强大的工具。本文将深入探讨std::format在模板中的实现原理,揭示其如何通过编译期检查确保类型安全,并展示其在泛型编程中的独特…...
EF Core 拦截器实战:SaveChangesInterceptor、CommandInterceptor 与审计落地
一、背景与问题缘起 MySQL 5.6.51 版本下 2000 万行核心业务表开展新增字段操作,需求为新增BIGINT(19) NOT NULL DEFAULT 0 COMMENT 注释(因业务实际需要存储大数值关联字段)。 表的核心特性为Java 多线程密集读写,业务请求持续高…...
技术解析:ncmdump如何破解网易云音乐NCM格式加密机制
技术解析:ncmdump如何破解网易云音乐NCM格式加密机制 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 在数字音乐版权保护日益严格的今天,网易云音乐采用NCM格式对下载的音乐文件进行加密保护,这种…...
macOS极简部署:OpenClaw与Qwen3-14B镜像云端联调指南
macOS极简部署:OpenClaw与Qwen3-14B镜像云端联调指南 1. 为什么选择云端联调 去年冬天,当我第一次尝试在本地MacBook Pro上部署OpenClaw时,整整两天时间都耗在了环境配置上。从Homebrew版本冲突到Node.js权限问题,再到CUDA驱动不…...
Pixel Script Temple多场景落地:政务宣传短视频、乡村振兴纪录片脚本生成
Pixel Script Temple多场景落地:政务宣传短视频、乡村振兴纪录片脚本生成 1. 专业剧本创作工具介绍 Pixel Script Temple(像素剧本圣殿)是一款基于Qwen2.5-14B-Instruct大模型深度优化的专业剧本创作工具。它将先进的AI推理能力与独特的8-B…...
保姆级教程:用LangFlow可视化工具3步搭建智能问答机器人,无需代码
保姆级教程:用LangFlow可视化工具3步搭建智能问答机器人,无需代码 1. 为什么选择LangFlow? 想象一下,你有一个绝妙的AI应用创意,但面对复杂的代码和API文档却无从下手。LangFlow就是为解决这个问题而生的可视化工具&…...
Qwen3.5-9B-AWQ-4bit Anaconda环境管理大师:依赖冲突解决与虚拟环境配置
Qwen3.5-9B-AWQ-4bit Anaconda环境管理大师:依赖冲突解决与虚拟环境配置 1. 为什么需要环境管理助手 Python开发中最让人头疼的问题之一就是依赖冲突。当你兴冲冲地准备运行一个新项目时,却看到满屏红色错误提示:"Could not find a ve…...
Ostrakon-VL-8B终端部署详解:CSS像素级修复+终端打印效果实现原理
Ostrakon-VL-8B终端部署详解:CSS像素级修复终端打印效果实现原理 1. 项目概述与核心价值 Ostrakon-VL-8B是一款专为零售与餐饮场景优化的多模态大模型,我们将其能力封装成了一个具有独特像素艺术风格的Web交互终端。这个终端将复杂的图像识别任务转化为…...
网站SEO优化有哪些技巧
网站SEO优化有哪些技巧 在当前数字化时代,拥有一个高效的网站SEO优化策略至关重要。无论你是新手还是资深网站管理者,了解网站SEO优化的技巧都能帮助你在百度等搜索引擎上获得更高的排名,从而吸引更多的流量。本文将详细探讨网站SEO优化的一…...
别再只刷固件了!深入解读BLheli电调硬件:从XP-12A电路到全N管驱动设计
深入解析BLheli电调硬件架构:从XP-12A经典设计到全N管驱动方案 在无刷电机控制领域,BLheli电调固件因其出色的性能和开源特性广受开发者青睐。然而,许多用户仅停留在刷写固件的层面,对硬件设计原理知之甚少。本文将带您深入剖析基…...
