[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.rhkb.cn/news/421669.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VLAN原理与配置

一、基本原理 1、VLAN数据帧格式 IEEE 802.1Q标准对Ethernet帧格式进行了修改,在源MAC地址字段和协议类型字段之间加入4字节的802.1Q Tag。VLAN帧最小帧长为64字节。 Type字段含义:长度为2字节,表示帧类型。取值为0x8100时表示802.1Q Tag帧…

Python 调用手机摄像头

Python 调用手机摄像头 在手机上安装软件 这里以安卓手机作为演示,ISO也是差不多的 软件下载地址 注意:要想在电脑上查看手机摄像头拍摄的内容的在一个局域网里面(没有 WIFI 可以使用 热点 ) 安装完打开IP摄像头服务器 点击分享查看IP 查看局域网的I…

日志相关知识

1.作用 a.为了代替System.out.println(),可以定义格式,重定向文件等。 b.可以存档,便于追踪问题。 c.可以按级别分类,便于打开或关闭某些级别。 d.可以根据配置文件调整日志,无需修改代码。 …

【CanMV K230 AI视觉】 人体检测

【CanMV K230 AI视觉】 人体检测 人体检测 动态测试效果可以去下面网站自己看。 B站视频链接:已做成合集 抖音链接:已做成合集 人体检测 人体检测是判断摄像头画面中有无出现人体,常用于人体数量检测,人流量监控以及安防监控等。…

# CentOS7 设置mysql的 root 用户密码时,报错 ERROR 1819(HY000)...ERROR1193... 解决方法。

CentOS7 设置mysql的 root 用户密码时,报错 ERROR 1819(HY000)…ERROR1193… 解决方法。 一、错误描述: mysql ALTER USER rootlocalhost IDENTIFIED BY 123; ERROR 1819 (HY000) Your password does not satisfy the current policy requirementsERRO…

NGINX开启HTTP3,给web应用提个速

环境说明 linuxdockernginx版本:1.27 HTTP3/QUIC介绍 HTTP3是由IETF于2022年发布的一个标准,文档地址为:https://datatracker.ietf.org/doc/html/rfc9114 如rfc9114所述,http3主要基于QUIC协议实现,在具备高性能的同时又兼备了…

最全面的递归算法详解,一篇足矣(高手必备)

在编程中,递归和循环是两种常用的控制结构,各有其独特的优缺点。理解这两者的特点和应用场景,对于编写高效、可读的代码至关重要。 什么是递归? 递归是一种强大的编程技术,允许函数在其定义中调用自身。递归通常涉及…

nvm ls-remote: N/A

背景: 项目因为node版本问题运行失败,在彻底删除node后再重新安装 问题描述: 原因分析: 可能是因为终端不能获取镜像包 解决办法: 【方法一】 输入: step1. export NVM_NODEJS_ORG_MIRRORIndex of …

常用电路及分析

前言 最近在研究一些简单的硬件知识,把在网上看到的一些常见电路分析总结了一下。 有纰漏请指出,转载请说明。 学习交流请发邮件 1280253714qq.com 串联稳压电路 三极管串联线性稳压电路原理详解及Multisim仿真_三极管稳压电路-CSDN博客 线性稳压电…

LeetCode 206. 反转链表

题目描述 分析 迭代代码与之前的K个一组翻转链表相同。 递归代码的一个首要任务是找到整个链表的尾结点(反转后的头结点)。 之后一步一步地将tail结点向前返回,但在返回的过程中不利用,只是传递最终答案。绿线的操作就是当head…

空间数据库概述

空间数据库简介 空间数据库是 地理信息系统 在计算机物理存储介质中存储的,与GIS应用相关的地理空间数据的总和。一般以一系列特定结构的文件形式组织后存储在介质上。 空间数据库的特点 可以存储、处理空间数据相比普通数据库提供更多、更复杂的数据类型以及更多…

即插即用篇 | YOLOv8 引入维度互补注意力混合Transformer模块 | 轻量级互补注意力网络:RAMiT引领图像修复新突破

本改进已同步到YOLO-Magic框架! 摘要:虽然许多近期的研究在图像修复(IR)领域取得了进展,但它们通常存在参数数量过多的问题。另一个问题是,大多数基于Transformer的图像修复方法只关注局部或全局特征,导致感受野有限或参数不足的问题。为了解决这些问题,我们提出了一种…

Linux_kernel移植rootfs10

一、动态更改内核 1、low level(静态修改) 【1】将led_drv.c拷贝到kernel/drivers/char/目录中 【2】修改当前目录下的Makefile文件 obj-y led_drv.o #将新添加的驱动文件加入到Makefile文件中 【3】退回kernel目录,执行make uImage …

2024.9.11(k8s环境搭建)

一、k8s环境搭建 编号主机名称ip配置1k8s-master192.168.8.1772k8s-node1192.168.8.1783k8s-node2192.168.8.168 1、免密登录 [rootk8s-master ~]# ssh-keygen [rootk8s-master ~]# ssh-copy-id root192.168.8.178 [rootk8s-master ~]# ssh-copy-id root192.168.8.168 2、3台…

西安近期学术会议,诚邀学者参会投稿!

第十二届信息系统与计算技术国际会议(ISCTech 2024)由长沙理工大学主办,联合同济大学、西北工业大学、江西农业大学协办,并由IEEE西安分会提供技术支持,会议将于11月8日至11日在中国西安隆重举行。ISCTech系列会议自创…

Golang | Leetcode Golang题解之第392题判断子序列

题目&#xff1a; 题解&#xff1a; func isSubsequence(s string, t string) bool {n, m : len(s), len(t)f : make([][26]int, m 1)for i : 0; i < 26; i {f[m][i] m}for i : m - 1; i > 0; i-- {for j : 0; j < 26; j {if t[i] byte(j a) {f[i][j] i} else {…

java设计模式(行为型模式:状态模式、观察者模式、中介者模式、迭代器模式、访问者模式、备忘录模式、解释器模式)

6&#xff0c;行为型模式 6.5 状态模式 6.5.1 概述 【例】通过按钮来控制一个电梯的状态&#xff0c;一个电梯有开门状态&#xff0c;关门状态&#xff0c;停止状态&#xff0c;运行状态。每一种状态改变&#xff0c;都有可能要根据其他状态来更新处理。例如&#xff0c;如果…

突破性进展!只需单张参考图,完美仿写各种手写内容!华南理工等开源One-DM

文章链接&#xff1a;https://arxiv.org/pdf/2409.04004 git链接&#xff1a;https://github.com/dailenson/One-DM 亮点直击 提出一种创新的扩散模型&#xff0c;用于生成风格化的手写文本。这一模型的显著特点是只需一个参考样本作为风格输入&#xff0c;便能模仿该样本的书写…

索引:数据库查询性能提升的利器

在数据库的世界里&#xff0c;索引就像是一把神奇的钥匙&#xff0c;能够极大地提高查询性能。那么&#xff0c;什么是索引呢&#xff1f;它又是如何发挥作用的呢&#xff1f;让我们一起来揭开索引的神秘面纱。 一、什么是索引&#xff1f; 索引&#xff0c;简单来说&#xf…

【机器学习-监督学习】集成学习与梯度提升决策树

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈Python机器学习 ⌋ ⌋ ⌋ 机器学习是一门人工智能的分支学科&#xff0c;通过算法和模型让计算机从数据中学习&#xff0c;进行模型训练和优化&#xff0c;做出预测、分类和决策支持。Python成为机器学习的首选语言&#xff0c;…