了解Linux SCSI队列深度

我正在试验运行CentOS Linux 5.4(x86_64)的Dell服务器上不同SCSI队列深度值的影响.

该服务器有两个QLogic QLE2560 FC HBA通过多路连接连接到存储系统.存储系统已为服务器分配了两个LUN,每个LUN通过主动 – 主动 – 主动 – 主动循环配置中的四个路径连接.总而言之,这两个LUN作为八个/ dev / sdX设备存在,由/ dev / mpath中的两个设备表示.

我目前在/etc/modprobe.conf中调整队列深度值,并通过查看/ proc / scsi / sg / devices的第七列来检查结果(重启后).

与此相关的两个问题:

>有没有办法调整队列深度而无需重新启动或卸载qla2xxx内核模块?例如,我可以将新的队列深度值回显到某个/ proc或/ sys-like文件中以更新队列深度吗?
>如果我将队列深度设置为128,那就是

对于qla2xxx模块处理的所有设备,总共> 128个?或
每个HBA> 128? (总共256个),或
对于8个/ dev / sdX设备(1024 in in)中的每一个> 128,或者
两个/ dev / mpath / …设备中的每一个> 128(总共256个)?

这对我来说很重要,这样我的服务器就不会充斥存储系统,影响连接到它的其他服务器.

解决方法

通常,队列深度是每个LUN /路径,在rr多路径配置中.它非常依赖于多路径驱动程序的实现,你必须检查你的多路径驱动程序的文档,在你的情况下是设备映射器的多路径,AFAIR使用与ESX相同的概念,其中所有路径的队列深度都是任何路径的最小队列深度请参见ESX中的示例:

ESX的本机多路径将rr多路径配置中的队列深度配置为任何相关队列的最小公共深度.即每个LUN /路径的深度为32,4个路径的总队列深度仅为32!这就是为什么一些供应商提供自己的驱动程序(如EMC的powerpath)的原因.从性能角度来看,循环负载分配ESX不会在每个IO的任何给定路径上循环,认情况下会计划前1000个IO通过第一个路径,下一个1000个IO在每个VM的基础上,应该平滑作为每个IO路径交换机的所有路径上的总体负载将导致每个IO的延迟惩罚.

相关文章

在Linux上编写运行C语言程序,经常会遇到程序崩溃、卡死等异...
git使用小结很多人可能和我一样,起初对git是一无所知的。我...
1. 操作系统环境、安装包准备 宿主机:Max OSX 10.10.5 虚拟...
因为业务系统需求,需要对web服务作nginx代理,在不断的尝试...
Linux模块机制浅析 Linux允许用户通过插入模块,实现干预内核...
一、Hadoop HA的Web页面访问 Hadoop开启HA后,会同时存在两个...