zIO: Accelerating IO-Intensive Applications with Transparent Zero-Copy IO——论文泛读

OSDI 2022 Paper 论文阅读笔记整理

问题

零拷贝IO一直是一个长期的性能目标。复制会引入内存和CPU开销,限制IO密集型应用程序的性能。IO数据复制在IO堆栈内、通过其应用程序编程接口(API)和应用程序内执行。现有工作的重点是开发零拷贝IO API [1,11,12,15,17,28,32]来消除IO堆栈[27,28]和IO堆栈API内的拷贝,但IO的数据仍然被复制。

挑战

IO密集型应用程序为每个IO请求执行多达8个请求数据副本。其中许多副本发生在应用程序本身的子系统之间(应用程序副本)。在IO堆栈API上只执行一部分(例如,在系统和用户提供的缓冲区之间复制数据)。因为使用副本可以简化开发,便于子系统内部处理,简化异步IO,简化数据处理。

本文方法

本文提出了zIO,用于IO密集型应用程序的透明零拷贝IO机制。关键思路是:应用程序通常只修改其处理的数据的一部分。

  • zIO乐观地假设大多数数据保持不变,通过插入IO系统调用和C标准库调用(如memcpy和memmove)来消除副本。为了保持一致性,中间数据区域都保持未映射状态。如果应用程序试图修改任何中间数据区域,zIO会通过页面故障拦截访问,并对页面执行复制和重映射。为了处理未对齐的内存区域,zIO执行未对齐区域的复制,只保留未映射的页面对齐部分。因为未对齐的节很小,复制它们不会损害性能。

  • 为了避免数据跟踪开销损害应用程序性能,zIO根据每个IO动态决定何时跟踪和何时复制。如果IO缓冲区的大小小于16KB,则zIO会复制该缓冲区。zIO还跟踪页面错误的平均数量,并消除每个缓冲区的复制字节。如果访问的字节与从副本中消除的字节的比率超过6%,zIO会复制缓冲区。

  • 为了消除跨IO堆栈API的副本,使用内核旁路IO堆栈。内核旁路堆栈使用共享内存来实现它们的API,允许zIO在IO从IO设备到达时跟踪,并消除副本。

  • 利用非易失性存储器(NVM)实现了进一步的优化:乐观输入持久化。如果从IO堆栈接收的输入由应用程序通过存储堆栈持久化在NVM中,则乐观输入持久化可以实现副本到存储的端到端透明消除。为此扩展了zIO以识别NVM映射。如果原始数据已经存在于NVM中,则可以消除到NVM的数据拷贝。否则,拷贝是强制持久性所必需的。

通过Redis、Icecast、MongoDB等IO密集型应用程序来评估zIO。zIO将应用程序吞吐量提高了1.8倍,使用内核旁路IO堆栈和乐观的网络接收器持久性将应用程序吞吐率提高了2.5倍。与常见的零拷贝IO堆栈API(如内存映射文件)相比,由于减少了TLB未命中开销,zIO可以将性能提高17%。

实验

实验环境:在双插槽Intel Cascade Lake SP系统的单个插槽上评估,系统运行频率为2.2GHz,每个插槽有24个内核,并配有100 GbE ConnectX-5 NIC,每个插槽都有192 GB DDR4 DRAM、3 TB Intel Optane DC NVM,每个插槽有6个DRAM和NVM DIMM,机器运行Fedora 27,Linux内核版本为5.10.0。

数据集:微基准测试、Redis redis-benchmark [21]、Icecast、MongoDB YCSB

实验对比:吞吐量

实验参数:副本数量、IO大小、线程数、页错误数、消融实验

总结

针对IO密集型应用的零拷贝IO。本文提出zIO,关键思路是:应用程序通常只修改其处理的数据的一部分。(1)乐观地假设大多数数据保持不变。为了保持一致性,中间数据区域保持未映射状态,如果应用程序试图修改任何中间数据区域,zIO通过页面故障拦截访问,并对页面执行复制和重映射。为了处理未对齐的内存区域,zIO执行未对齐区域的复制,只保留未映射的页面对齐部分。(2)避免数据跟踪开销损害应用程序性能,zIO根据每个IO动态决定何时跟踪和何时复制。如果IO缓冲区的大小小于16KB,则zIO会复制该缓冲区。zIO跟踪页面错误的平均数量,并消除每个缓冲区的复制字节。如果访问的字节与从副本中消除的字节的比率超过6%,zIO会复制缓冲区。(3)使用内核旁路IO堆栈,消除跨IO堆栈API的副本。内核旁路堆栈使用共享内存实现,允许zIO在IO从IO设备到达时跟踪,并消除副本。(4)利用非易失性存储器(NVM)实现:乐观输入持久化。如果从IO堆栈接收的输入由应用程序通过存储堆栈持久化在NVM中,则实现副本到存储的端到端透明消除。为此扩展了zIO以识别NVM映射。如果原始数据已经存在于NVM中,则可以消除到NVM的数据拷贝。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/510041.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

紫光展锐P7885核心板详细参数介绍_5G安卓智能模块开发方案

紫光展锐P7885核心板采用了先进的6nm EUV制程工艺,集成了高性能的应用处理器和金融级安全解决方案,为用户带来了全新的性能体验。 P7885核心板搭载了先进的6nm制程工艺SoC P7885,其中包含四核A76和四核A55,主频可达2.7Ghz&#xf…

MySQL-linux安装-万能RPM法

一、MySQL的Linux版安装 1、 CentOS7下检查MySQL依赖 1. 检查/tmp临时目录权限(必不可少) 由于mysql安装过程中,会通过mysql用户在/tmp目录下新建tmp_db文件,所以请给/tmp较大的权限。执行 : chmod -R 777 /tmp2. …

spring boot3登录开发-3(2短信验证登录/注册逻辑实现)

⛰️个人主页: 蒾酒 🔥系列专栏:《spring boot实战》 🌊山高路远,行路漫漫,终有归途 目录 写在前面 上文衔接 内容简介 功能分析 短信验证登录实现 1.创建交互对象 用户短信登录/注册DTO 创建用户登录VO…

Linux利用Jenkins部署SpringBoot项目保姆级教程

在当今快速发展的软件开发领域,持续集成和持续部署(CI/CD)已经成为提升开发效率、缩短产品上市时间的关键实践。Linux系统以其稳定性和开源友好性,成为众多开发者和企业的首选平台。而Spring Boot,作为一个轻量级的Jav…

【论文笔记】Text2QR

论文:Text2QR: Harmonizing Aesthetic Customization and Scanning Robustness for Text-Guided QR Code Generation Abstract 二维码通常包含很多信息但看起来并不美观。stable diffusion的出现让平衡扫描鲁棒性和美观变为可能。 为了保证美观二维码的稳定生成&a…

STM32FATFS(未完待续)

注意,本博客适合像我一样的小白,会的不多,但是想快速做些东西,不适合会写驱动的大佬。另外,示例代码中的注释有误(从多个项目中移植过来的,未做更改),请不要被误导&#…

ICLR 2024 | 鸡生蛋蛋生鸡?再论生成数据能否帮助模型训练

ChatGPT狂飙160天,世界已经不是之前的样子。 新建了人工智能中文站https://ai.weoknow.com 每天给大家更新可用的国内可用chatGPT资源 发布在https://it.weoknow.com 更多资源欢迎关注 随着生成模型(如 ChatGPT、扩散模型)飞速发展&#x…

【详细讲解语言模型的原理、实战与评估】

🌈个人主页:程序员不想敲代码啊🌈 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家🏆 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提…

《2023网络安全行业薪资发展趋势报告》.pdf

《2023网络安全行业薪资发展趋势报告》.pdf 前段时间看到了一份网络安全的最新数据,反映了2023年截至目前的网络安全行业,以及网络安全人才的发展情况。 前段时间忙着赶项目一直没时间,今天终于有空和你唠嗑了。 很多网工小白对安全的向往…

基于DCT(离散余弦变换)的图像水印算法,Matlab实现

博主简介: 专注、专一于Matlab图像处理学习、交流,matlab图像代码代做/项目合作可以联系(QQ:3249726188) 个人主页:Matlab_ImagePro-CSDN博客 原则:代码均由本人编写完成,非中介,提供…

vue+elementUI搭建动态表头的表格

前提:以下代码是vue2项目结合elementUi完成的 数据结构 后端传来的数据是两个list,一个表头的list,一个表格内容的list // 表头 headTableAtts: [{ columnLabel: 姓名, columnName: name },{ columnLabel: 年龄, columnName: age },{ colu…

【Linux】防火墙iptables详解

目录 一、防护墙概述 二、防火墙 2.1名词 2.2使用规则 2.3表与链 2.3.1简介 2.3.2每个表说明 1)filter表 2)nat表 2.4环境的配置 2.5iptables的命令参数 2.6 配置filter表规则 2.6.1备份与恢复 2.6.2案例1:禁止访问22端口 2.6.3案例2&…

GT收发器第六篇_GT channel内部时钟关系

文章目录 一、TX端时钟二、RX端时钟 一、TX端时钟 TX端可分为4个区域,分别为FPGA TX接口、PCS靠FPGA侧、PCS靠PMA侧、PMA,如下图。GTX/GTH发射器包括TXBUFFER和TX相位校准电路,以解决时钟域之间的相位差。TX相位校准电路用于TXBUFFER被旁路时…

element-ui badge 组件源码分享

今日简单分享 badge 组件的源码实现,主要从以下两个方面: 1、badge 组件页面结构 2、badge 组件属性 一、badge 组件页面结构 二、badge 组件属性 补充几个标签的用途: sub:下标、sup:上标、var 变量 代码如下&am…

AIGC之gradio系列学习教程(二)Components

简述: 让我们继续了解一下 Gradio 的一些主要功能。本指南旨在对构建演示时应注意的各种事项进行高级概述。 Components Gradio 包含 30 多个预构建组件(以及许多用户构建的自定义组件),只需一行代码即可在演示中用作输入或输出。这些组件对应于机器学习和数据科学中的常…

C++初学者:如何优雅地写程序

我喜欢C语言的功能强大,简洁,我也喜欢C#的语法简单,清晰,写起来又方便好用。 一、为什么不用C语言写程序。 C语言用来做题目,考试研究是很方便的,但是用来写程序做软件,你就会发现&#xff0c…

解决Centos7无法连接网络和访问网页连接不上问题

一、网络无法连接问题 网络无法连接的问题我查到了一个很良心的操作,不用重装,因为可能是你虚拟机设置上的问题。我先写我的解决方案,再附上其他几种解决方案。 问题一: 虚拟机的问题****加粗样式 解决: (…

landsat8数据产品说明

1、下载数据用户手册 手册下载网址,搜索landsat science关键词,并点击到官网下载。 2、用户手册目录 3、landsat8数据产品说明 具体说明在手册的第四章,4.1.4数据产品章节,具体描述如下: 英文意思: L8 的…

Plesk环境中签发免费SSL证书的操作与成效

在过去的一段时间内,我专注于在Plesk控制面板环境中为多个网站成功签发免费SSL证书,确保了这些站点的安全传输和用户数据保护。以下是对这一工作的全面总结,包括突出的工作亮点、具体实施过程、取得的成绩以及下一阶段的工作规划。 一、工作亮…

【C++】新的类功能和可变参数模板

目录 一、新的类功能1.1 默认成员函数1.1.1 移动构造函数1.1.2 移动赋值运算符重载 1.2 关键字default1.3 关键字delete 二、可变参数模板2.1 可变参数的函数模板2.2 递归方式展开函数2.3 empalce 一、新的类功能 1.1 默认成员函数 在之前的学习过程中,我们已经知…