如何在Linux利用Lsblk -T显示块设备的排队调度算法逻辑、最大I/O大小及详细的底层I/O队列深度

雨辰君_2577

雨辰君_2577

2026-05-25

939人浏览

原创

lsblk -T 仅显示块设备树状拓扑,无法查看I/O调度算法、最大I/O大小或队列深度;需通过sysfs路径分别读取/scheduler、/max_hw_sectors_kb和/queue_depth等参数。

如何在linux利用lsblk -t显示块设备的排队调度算法逻辑、最大i/o大小及详细的底层i/o队列深度

lsblk -T 并不能显示块设备的排队调度算法、最大I/O大小或I/O队列深度。这是常见误解。

lsblk(list block devices)是一个用于展示块设备拓扑结构的工具,-T 选项仅启用树状缩进格式(tree view),它不读取或暴露内核 I/O 调度器参数、队列深度或硬件 I/O 限制等底层信息。

要获取你关心的三项关键 I/O 队列信息,需使用其他专用接口:


1. 查看当前 I/O 调度算法(queue scheduler)

Linux 块设备的调度器(如 mq-deadline、kyber、none 等)由 blk-mq 框架管理,配置位于 sysfs:

cat /sys/block/sda/queue/scheduler

输出示例:

[none] mq-deadline kyber

方括号内为当前激活的调度器。

✅ 注意:sda 需替换为你的实际设备名(可用 lsblk 先确认)。NVMe 设备通常固定使用 none(绕过软件调度,由硬件自身处理);传统 SATA SSD/HDD 可能为 mq-deadline 或 kyber。


2. 查看最大 I/O 请求大小(max_hw_sectors_kb 或 max_segments)

最大单次 I/O 大小受硬件与驱动限制,主要看两个值:

  • 硬件支持的最大扇区数(KB):

    Obsidian (Linux)
    Obsidian (Linux)

    操作 Obsidian 库(纯 Markdown 笔记),并通过 notesmd-cli 实现自动化。

    下载
    cat /sys/block/sda/queue/max_hw_sectors_kb

    输出如 262144 → 表示最大 256 MiB 单请求(较新 NVMe 常见)。

  • 实际生效的软限制(常为 min(max_hw_sectors_kb, logic limit)):

    cat /sys/block/sda/queue/max_sectors_kb

⚠️ max_hw_sectors_kb 是真正反映底层能力的指标;max_sectors_kb 可被内核或 udev 规则临时调整。


3. 查看 I/O 队列深度(queue depth)

队列深度分两类,均在 sysfs 中:

  • 硬件队列深度(per-hardware-queue)(对 NVMe 尤其重要):

    # NVMe 设备(如 nvme0n1)
    cat /sys/block/nvme0n1/device/queue_depth
    
    # 或查看每个具体硬件队列(如 0~7 号 queue):
    ls /sys/block/nvme0n1/device/queue/
    cat /sys/block/nvme0n1/device/queue/0/depth
  • 软件多队列(blk-mq)总深度(nr_requests)与每队列深度(nr_requests_per_hw_queue):

    cat /sys/block/sda/queue/nr_requests        # 总待处理请求数上限(默认 256)
    cat /sys/block/sda/queue/nr_requests_per_hw_queue  # 若支持 blk-mq,部分内核提供

? 提示:nr_requests 是软件层总并发请求数限制,非硬件深度;真正影响并行吞吐的是硬件队列深度(如 NVMe 的 queue_depth)和 CPU 绑定的硬件队列数量。


快速汇总命令(替换 sda/nvme0n1 为你设备)

DEV=sda
echo "Scheduler: $(cat /sys/block/$DEV/queue/scheduler 2>/dev/null)"
echo "Max HW sectors (KB): $(cat /sys/block/$DEV/queue/max_hw_sectors_kb 2>/dev/null)"
echo "Max sectors (KB): $(cat /sys/block/$DEV/queue/max_sectors_kb 2>/dev/null)"
echo "NR requests: $(cat /sys/block/$DEV/queue/nr_requests 2>/dev/null)"
# 若是 NVMe
if [ -d "/sys/block/$DEV/device" ]; then
  echo "NVMe queue depth: $(cat /sys/block/$DEV/device/queue_depth 2>/dev/null)"
fi

不复杂但容易忽略:这些参数全由内核通过 sysfs 动态导出,无需安装额外工具,也无需 root(只读权限即可查看)。lsblk 是“看结构”的工具,不是“查队列”的工具——别让它背锅 ?

相关专题

更多
页面置换算法
页面置换算法

页面置换算法是操作系统中用来决定在内存中哪些页面应该被换出以便为新的页面提供空间的算法。本专题为大家提供页面置换算法的相关文章,大家可以免费体验。

2023.08.14

6216

4

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

4210

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3573

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2793

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

6850

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

6502

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3733

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

3245

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

3479

6

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习