文章目录

  • FLIN:Enabling Fairness and Enhancing Performance in Modern NVMe Solid State Drives
    • Abstract
    • Introduction
    • Background
    • Design and Implementation
      • 1. fairness-aware queue insertion
      • 2. Priority-Aware Queue Arbitration
      • 3. Wait-Balancing Transaction Selection
    • Results
    • Conclusion

FLIN:Enabling Fairness and Enhancing Performance in Modern NVMe Solid State Drives

这篇论文发表在2018年的International Symposium on Computer Architecture(ISCA)会议上,主要讲的是:在NVMe协议下,多队列I/O请求直接访问SSD,SSD如何保证其间的公平性问题。

Abstract

  1. 原来单队列模式下的应用程序需要在操作系统与之关联的IO堆中创建一个堆栈单元,现在多队列SSD用的协议主要是NVMe,NVMe协议允许应用程序跳过操作系统IO堆,直接发送IO请求到SSD中。这样就出现了一个问题:原来在操作系统中的公平性控制机制就不起作用了,多个应用程序产生的多个IO请求流直接进入SSD后很难保证公平性,当一个流的强度太大,其它请求流就会明显变慢。

  2. 本文提出了一个叫做FLIN的调度机制来解决这个公平性问题

  3. 实验结果表明,FLIN在公平性和性能方面分别提升了70%和47%

Introduction

  1. 像之前说的,本来应用程序先通过操作系统的软件堆,操作系统通过限制每个应用程序派遣到SSD的请求数量来保证公平性。多队列SSD中,应用程序直接把请求发到SSD,应用程序的优先级可以由操作系统控制,NVMe允许host给每个流分配不同的优先级,但是相同优先级的io流之间的公平性就很难保证,当一个流的请求强度太大,另一个低强度的流可能会一直得不到满足。

  2. 影响io流之间的公平性主要有四个因素:
    第一个是I / O强度:具有较高流强度的I O流会导致具有较低流强度的流变慢。
    第二个是访问模式:与不利用并行性的I / O流一起运行时,较好的利用内部并行性的io流速度反而会降低大概2.4倍。因为利用了并行性的io流会分到不同的chip中,单个chip里的io强度就会更低。
    第三个是读/写比例:写入请求比例较高的流会让写入请求比例较小的并发运行的流速度减慢。
    第四个是垃圾回收:当I / O流需要频繁进行GC操作时,这些操作可能会阻止很少执行GC的第二个流的I / O请求。

  3. 本文的目的是设计一种有效的I / O请求调度程序,通过减轻SSD内的所有四种干扰来提供I / O流之间的公平性,并最大化SSD的性能和吞吐量。
    FLIN考虑每个流的优先级类别,并使用三个阶段来调度请求。
    (1). 感知强度和并行性的队列插入,对事务进行重新排序,以减轻不同的I / O强度和不同的访问模式的影响。
    (2). 流级别的优先级仲裁,根据事务的相应流的优先级对事务进行优先级排序。
    (3). 读/写等待平衡,平衡读写请求的总体停顿时间,并计划GC活动以在不同流之间按比例分配GC开销。

Background

  1. MQ-SSD的内部结构如下图所示:

    HIL: 将请求分解成多个闪存事务,每个事务的闪存操作粒度是一个页
    FTL: 将事务分进chip层次的队列,队列分为读队列和写队列
    TSU: 将队列分配到对应的FCC(flash chip controllers)

  2. 性能衡量标准:



    Slowdown越小越好,fairness越大越好。
    下图是高强度的io流对一个中等强度的io流的影响,黑色是中等强度的io流,红色是高强度的io流。可以看到中等强度的io流速度明显减慢了,缺乏公平性。

Design and Implementation

FLIN是将原来多队列SSD中的TSU模块也就是事务调度单元进行了重新设计。

Chip只有一个接口,而事务太多、优先级不同

  1. fairness-aware queue insertion: 第一步是将请求加到对应优先级的队列中,这个数值P是根据NVMe协议来定的,因为NVMe允许host给每个流分配不同的优先级,NVMe能定义多少个优先级数值P就是多少。所以第一步中相同优先级的请求、不管属于哪个io流都会被分到同个队列,然后采用设计的算法就事务进行排序,保证公平性。
  2. Priority-Aware Queue Arbitration: 第二步是根据不同的优先级,用加权轮询算法选出要执行的读事务和写事务。
  3. Wait-Balancing Transaction Selection: 第三步是利用算法平衡读写事务和GC操作。

1. fairness-aware queue insertion

在第一阶段,FLIN在每个chip中为每个流优先级维护单独的读队列和写队列。 在每个队列中找到事务的最佳排序是多维分配问题的一个变体,是一个NP难问题。 FLIN使用一种近似最佳排序的试探法。
需要解决以下几个问题:
1,当高强度流一下子插入许多事务时,低强度流的性能对增加的队列长度会非常敏感;2,根据应用程序的当前阶段,一些流可以在高强度和低强度之间变化;3,当并行性差的流将请求插入到某些(但不是全部)芯片级队列中时,利用后端并行性的流中的某些(但不是全部)事务会经历较高的队列等待时间。

下面是stage1的算法:将低强度的io流事务分配在队列前面,高强度的io流事务分配在队列后面,每次增加一个事务时如果是低强度流的事务就加到低强度事务中的末端,如果是高强度流的事务就加到高强度事务中的末端。然后再根据情况进行调整。

2. Priority-Aware Queue Arbitration

优先级感知队列仲裁从P个读取队列的开头的事务中选择一个就绪读取事务,并从P个写入队列的开头的事务中选择一个就绪写入事务。 然后,两个选定的事务移至调度程序的最后阶段。

队列仲裁器使用加权循环策略来选择移至下一个调度阶段的读取和写入事务。 如果协议定义了P个优先级,其中0级是最低优先级,P – 1是最高优先级,则FLIN将权重2的i次方分配给优先级i。 在加权轮询下,这意味着在第二阶段的每2的i个调度决策中,优先级为i队列的事务接收到这些时隙中的2的i次方个。

3. Wait-Balancing Transaction Selection

第三步比较简单,算法看图:

Results


平均而言,与最先进的设备级I / O请求调度程序相比,FLIN可以提供70%的公平性和47%的性能提升。
FLIN在工作负载中的每个流之间更公平地分布干扰的影响。 他们得出的结论是,FLIN的减速管理方案可以有效地提高两个最新基准的MQ-SSD公平性。

Conclusion

FLIN是用于现代多队列SSD(MQ-SSD)的轻型事务调度程序,可在并发运行的流之间提供公平性。

FLIN使用三阶段设计来防御实际MQ-SSD中存在的所有四个主要干扰源,同时强制执行由主机分配的应用程序级优先级。

评估表明,与最新的设备级调度程序相比,FLIN有效地提高了公平性和系统性能。 FLIN易于在SSD控制器固件中实现,不需要额外的硬件,并且消耗的内存少于SSD内置DRAM中可用存储空间的0.06%。

FLIN(2018 ISCA)相关推荐

  1. 《人工智能标准化白皮书(2018版)》发布|附下载

    来源:光明网 概要:1月18日下午,2018人工智能标准化论坛在京召开,本次论坛发布了<人工智能标准化白皮书(2018版)>. 1月18日下午,2018人工智能标准化论坛在京召开,本次论坛 ...

  2. python爬虫从入门到精通-Python爬虫从入门到精通视频(2018新版)

    原标题:Python爬虫从入门到精通视频(2018新版) Python在软件质量控制.提升开发效率.可移植性.组件集成.丰富库支持等各个方面均处于先进地位,并且随着人工智能的兴起,Python发展得越 ...

  3. 基于vue2+nuxt构建的高仿饿了么(2018版)

    基于vue2+nuxt构建的高仿饿了么(2018版) 前言 高仿饿了么,以nuxt作为vue的服务端渲染,适合刚接触或者准备上vue ssr的同学参考和学习 项目地址如遇网络不佳,请移步国内镜像加速节 ...

  4. Python机器学习全流程项目实战精讲(2018版)

    Python机器学习全流程项目实战精讲(2018版) 网盘地址:https://pan.baidu.com/s/16SSVq74YC07M0dW1iDekPg 提取码: vu7r 备用地址(腾讯微云) ...

  5. python视频教程全集-Python 3视频教程全集(2018版)免费送啦

    原标题:Python 3视频教程全集(2018版)免费送啦 不仅很多计算机专业的小伙伴想学Python,很多零基础的也想学.为什么?因为它是一门更注重可读性和效率的语言,而且随着人工智能的发展而愈发火 ...

  6. 【智能制造】工信部:《国家智能制造标准体系建设指南(2018年版)》(征求意见稿)

    据工信部1月15日消息,为加快推进智能制造综合标准化工作,加强顶层设计,构建智能制造综合标准体系,发挥智能制造标准的规范和引领作用,工业和信息化部.国家标准化管理委员会组织开展智能制造综合标准化体系建 ...

  7. IDEA(2018.2)的下载、安装及破解

    IDEA(2018.2)的下载及安装 IDEA简介 从官网下载IDEA IDEA的安装 IDEA的破解 新建一个hello world程序 IDEA简介 IDEA 全称 IntelliJ IDEA,是 ...

  8. 网络营销推广落地方案(2018最新)

    网络营销推广落地方案(2018最新) 导读:如何做网络营销推广引流方案,3个月必成.本文以网络营销推广引流为例向大 家介绍任何一个网络营销推广项目,只要用心执行死磕3个月,只要不是足够努力,百分 百能 ...

  9. 【论文阅读笔记 + 代码解读】(2018 AAAI)ST-GCN

    写在前面 ST-GCN 是skeleton based action recognition 的开山鼻祖.MMLab 出品,必是精品! 开山鼻祖级别的论文必有很多理论 + 数学公式,再加上本人(菜鸡) ...

最新文章

  1. windows java 小程序_JAVA第一个窗体小程序
  2. 《跃迁 从技术到管理的硅谷路径》读后感
  3. categorical data and numerical data
  4. BZOJ 4259 FFT
  5. java堆栈句柄,深入了解JVM—内存区域
  6. python封装函数、实现将任意的对象序列化到磁盘上_序列化(serialization)
  7. 飞桨第三课2020.4.2
  8. mongodb mysql配置_mongoDB数据库原生配置
  9. default value mysql_Mysql Field * doesn't have a default value解决方法
  10. 利用代码分别实现jdk动态代理和cglib动态代理_设计模式篇——代理模式详解(面试官再问你代理模式,这么回答他!)...
  11. 计算机使用交接记录表,交接文档_计算机软件及应用_IT计算机_专业资料
  12. 获取百度地图、高德地图经纬度坐标
  13. 世界名牌大学课件下载地址
  14. 乔治城大学计算机科学专业,[转载]美国西北大学计算机科学研究生最新专业排名...
  15. 西西里2286. Stack Implementation
  16. 群晖网络不通_网络菜鸟入手Synology群晖 DS218+,求问网络安装环境几个问题?
  17. 小学数学测试软件报告,2017年小学数学期末考试质量分析报告
  18. Android基础入门教程——1.1 背景相关与系统架构分析
  19. ubuntu16安装python3.6
  20. U9二次开发之补丁制作

热门文章

  1. 【建议收藏】黑客基础必学命令行!
  2. 基恩士 sw1000 或2000(理论是通用)usb转RS232 USB60FW 驱动
  3. CSDN高校俱乐部活动报道模板
  4. 基于AIGC的京东购物助手的技术方案设想 | 京东云技术团队
  5. 手机上的Wifi分析仪
  6. ModuleNotFoundError: No module named ‘tensorflow.compat.v2‘解决方法
  7. 满二叉树与完全二叉树的区别
  8. 将eps文件控制在300K左右
  9. 蓝桥杯单片机设计与开发⑬ ---NE555模块
  10. 帝国理工计算机科学硕士学费,去帝国理工学院读研需要几年?一年学费是多少?语言要求都有哪些?...