当前位置: 首页 > article >正文

[Linux Kernel Block Layer第一篇] block layer架构设计

目录

1. single queue架构

2. multi-queue架构(blk-mq) 

3. 问题


随着SSD快速存储设备的发展,内核社区越发发现,存储的性能瓶颈从硬件存储设备转移到了内核block layer,主要因为当时的内核block layer是single hw queue的架构,导致cpu锁竞争问题严重,本文先提纲挈领的介绍内核block layer的架构演进,然后根据最新的架构研究内核源码的实现细节,直击内核block layer本质原理。

1. single queue架构

可以看到整个block layer只有一个硬件派发队列(相对于软件派发队列而言,下面讲到multi-queue架构就知道了),太多了竞争导致性能下降:

2. multi-queue架构(blk-mq) 

为了避免多cpu导致的锁竞争,当前内核引入了multi-queue架构,有几层含义:

1. 两层的queue架构

        per-cpu的software queue,避免cpu锁竞争

2. hardware queue

        充分发挥快速存储设备的并发能力,块设备驱动支持配置多个hardware queue

3. 问题

看到上面架构图之后我们会想到很多的问题:

  1. block layer怎么支持配置hardware queue的数量和队列深度?
  2. 如果存在多个hardware queue时,怎么管理software queue和hardware queue的映射关系
  3. block layer什么时候将software queue数据转发到hardware queue,以及hardware queue是怎么转发数据到block driver
  4. blk-mq架构内核是支持io scheduler算法的:比如kyber或者mq-deadline,这种调度算法引入之后,调度算法内部的队列和上图中software queue是什么关系?

上述问题在后续的分析文章当中都会一一得到答案。


http://www.kler.cn/a/296706.html

相关文章:

  • Spring Boot项目中如何解决循环依赖
  • 大模型构建合作性的Agent,多代理框架MetaGpt
  • QT 读取Excel表
  • Flask如何创建并运行数据库迁移
  • 【系统架构设计师-2012年】综合知识-答案及详解
  • 【系统架构设计师】工厂方法设计模式
  • 使用PyTorch Lightning力量精简空间分析
  • leetcode hot100_part17_技巧篇
  • docker 安装NextERP
  • Anaconda 中遇到CondaHTTPError: HTTP 404 NOT FOUND for url的问题及解决办法
  • 电脑驱动分类
  • 大模型训练框架LLaMAFactory覆盖预训练指令微调强化学习评估全流程
  • Python 错误 AttributeError 解析,实际错误实例详解
  • go系列之 cron 表达式
  • 如何在实际应用中优化AI大模型性能
  • 纯CSS实现卡片欢动效果
  • 关于腾讯IM消息ID不统一的问题?服务端的MsgKey和前端的msgID不一样
  • 强大的EmotiVoice:易魔声 : 多音色提示控制TTS
  • 微信小程序登录与获取手机号 (Python)
  • 基于Android Studio的行程记录APK开发指南(三)---界面设计及两种方法获取用户位置