具有密集型 I/O 模式的大规模工作负载可能需要比准虚拟 SCSI 默认值大得多的队列深度 (2053145)

vmw_pvscsi.cmd_per_lun=254

vmw_pvscsi.ring_pages=32

具有密集型 I/O 模式的大规模工作负载需要比准虚拟 SCSI (PVSCSI) 默认值更大的适配器队列深度。当前的 PVSCSI 队列深度默认值分别是 64(用于设备)和 254(用于适配器)。在 Windows 虚拟机或 Linux 虚拟机中,您可以将 PVSCSI 队列深度分别增加到 256(用于设备)和 1024(用于适配器)。 null

 Solution

将 PVSCSI 适配器用于请求环的页数从默认值(8 页)增加到 32 页,并将 PVSCSI 设备的队列深度设置为 254。

步骤 1:调整 Windows 虚拟机在其上运行的 ESXi 主机上 HBA 的队列深度。为虚拟机迁移到的每个主机完成以下步骤:

  1. 通过在服务控制台上运行相应命令,验证当前加载的 HBA 模块:
     
    • 对于 QLogic:

      # esxcli system module list | grep qla
       
    • 对于 Emulex:

      # esxcli system module list | grep lpfc
       
  2. 通过运行以下命令之一将队列深度设置为 128:
     
    • 对于 QLogic:

      # esxcli system module parameters set -p ql2xmaxqdepth=128 -m qla2xxx
       
    • 对于 Emulex:

      如果主机上的所有 Emulex 卡都需要更新,则应用全局参数 lpfc_lun_queue_depth。

      # esxcli system module parameters set -p lpfc0_lun_queue_depth=128 -m lpfc820

    注意:以上示例显示了 QLogic qla2xxx 和 Emulex lpfc820 模块。根据上一步的结果使用相应的模块。

    另请注意以下事项:
     
    • 在以上命令中,ql2xmaxqdepth 和 lpfc0 都使用小写字母 L,而不是数字 1。
    • 由 ql2x 和 lpfc0 表示的 HBA 的 LUN 队列深度设置为 128。
       
  3. 重新引导主机。
  4. 运行以下命令验证所做更改:

    # esxcli system module parameters list -m driver

    其中 driver表示 QLogic 或 Emulex 适配器驱动程序模块,例如 lpfc820 或 qla2xxx。

    您会看到类似于以下内容的输出:

    Name Type Value Description
    -------------------------- ---- ----- --------------------------------------------------
    .....
    ql2xmaxqdepth int 128 Maximum queue depth to report for target devices.
    .....


步骤 2:在 Windows 虚拟机或 Linux 虚拟机中增加 PVSCSI 队列深度,如以下各节所述。此修改不但会将 PVSCSI 适配器用于请求环的页数增加到 32,而且会将附加到 PVSCSI 适配器的设备的队列深度增加到 254。

注意:环的默认页数是 8,并且每页的大小为 4 KB。已排队的 I/O 需要一个大小为 128 字节的条目,这意味着在大小为 4096 字节的单个页面上具有 32 个条目,因而总共有 256 个条目 (8x32)。在以前版本中,Windows PVSCSI 驱动程序适配器队列是硬编码的,但从 ESXi 5.5、5.1 U1 和 5.0 U3 中随 VMware Tools 一起提供的版本起,该队列最多可以调整到 32 页。Linux PVSCSI 驱动程序的环页数可以随 Windows 版本之前的版本一起调整。

对于 Windows 虚拟机:

  1. 从 Windows 虚拟机的命令行中,运行以下命令:

    REG ADD HKLM\SYSTEM\CurrentControlSet\services\pvscsi\Parameters\Device /v DriverParameter /t REG_SZ /d "RequestRingPages=32,MaxQueueDepth=254"
     
  2. 重新引导虚拟机
     
  3. 验证注册表项是否创建成功:
     
    • 通过在命令行中运行 REGEDIT 命令来打开注册表编辑器。
    • 浏览到 HKLM\SYSTEM\CurrentControlSet\services\pvscsi\Parameters\Device。
    • 验证 DriverParameter 项是否存在,并验证此项的值是否为 RequestRingPages=32、MaxQueueDepth=254。

对于 Linux 虚拟机:

  1. 在 /etc/modprobe.d/ 目录中创建包含以下行的任意名称文件:

    options vmw_pvscsi cmd_per_lun=254 ring_pages=32

    注意:对于 RHEL5,请使用相同的行来编辑 /etc/modprobe.conf。创建新的 initrd,以使设置生效。您可以通过使用 mkinitrd 或重新运行 vmware-config-tools.pl 来执行此操作。自版本 6 起,RHEL 使用 modprobe.d。
     
  2. 或者,您也可以将以下行附加到内核引导参数(例如,在 Red Hat Enterprise Linux 上编辑 /etc/grub.conf,或在 Ubuntu 上编辑 /boot/grub/grub.cfg)。

    vmw_pvscsi.cmd_per_lun=254
    vmw_pvscsi.ring_pages=32
     
  3. 重新引导虚拟机。
     
  4. 通过对以下文件使用 cat 命令来验证更改后的队列深度:

    $ cat /sys/module/vmw_pvscsi/parameters/cmd_per_lun
    $ cat /sys/module/vmw_pvscsi/parameters/ring_pages

转载至https://kb.vmware.com/s/article/2053145?lang=zh_cn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值