Параметры модуля драйвера HFI1

Установленные по умолчанию настройки для параметров модуля драйвера HFI1 в настоящее время достигают наилучшей производительности. Однако для дальнейшего тюнинга вашей производительности вы можете изменять определённые параметры как это описано в данном документе.

Данная глава описывает:

  1. полный перечень параметров модуля драйвера HFI1;

  2. как их устанавливать; а также

  3. как активировать сделанные изменения

Вывод списка параметров драйвера

Для получения перечня и краткого описания всех параметров модуля драйвера HFI1 введите следующею команду:


$ modinfo hfi1
		

Вот её результаты:


filename:       /lib/modules/3.10.0-514.el7.x86_64/extra/ifs-kernel-updates/hfi1.ko
version:        0.9-294
description:    Intel Omni-Path Architecture driver
license:        Dual BSD/GPL
rhelversion:    7.3
srcversion:     E5A668BCD78F5DCE1719E58
alias:          pci:v00008086d000024F1sv*sd*bc*sc*i*
alias:          pci:v00008086d000024F0sv*sd*bc*sc*i*
depends:        rdmavt,ib_core,i2c-core,i2c-algo-bit
vermagic:       3.10.0-514.el7.x86_64 SMP mod_unload modversions
signer:         Intel Corporation: Intel(R) Omni-Path HFI UEFI
sig_key:        71:9E:BA:A1:25:17:2B:A6:9A:D0:1B:85:0B:74:58:F8:5C:89:BB:07 sig_hashalgo: sha256
parm:           lkey_table_size:LKEY table size in bits (2^n, 1 <= n <= 23) (uint)
parm:           no_user_mr_percpu:Avoid percpu refcount for user MRs (default 0) (uint)
parm:           max_pds:Maximum number of protection domains to support (uint)
parm:           max_ahs:Maximum number of address handles to support (uint)
parm:           max_cqes:Maximum number of completion queue entries to support (uint)
parm:           max_cqs:Maximum number of completion queues to support (uint)
parm:           max_qp_wrs:Maximum number of QP WRs to support (uint)
parm:           max_qps:Maximum number of QPs to support (uint)
parm:           max_sges:Maximum number of SGEs to support (uint)
parm:           max_mcast_grps:Maximum number of multicast groups to support (uint)
parm:           max_mcast_qp_attached:Maximum number of attached QPs to support (uint)
parm:           max_srqs:Maximum number of SRQs to support (uint)
parm:           max_srq_sges:Maximum number of SRQ SGEs to support (uint)
parm:           max_srq_wrs:Maximum number of SRQ WRs support (uint)
parm:           piothreshold:size used to determine sdma vs. pio (ushort)
parm:           sge_copy_mode:Verbs copy mode: 0 use memcpy, 1 use cacheless copy, 2 adapt based on WSS (uint)
parm:           wss_threshold:Percentage (1-100) of LLC to use as a threshold for a cacheless copy (uint)
parm:           wss_clean_period:Count of verbs copies before an entry in the page copy table is cleaned (uint)
parm:           sdma_comp_size:Size of User SDMA completion ring. Default: 128 (uint)
parm:           cache_size:Send and receive side cache size limit (in MB) (ulong)
parm:           sdma_descq_cnt:Number of SDMA descq entries (uint)
parm:           sdma_idle_cnt:sdma interrupt idle delay (ns,default 250) (uint)
parm:           num_sdma:Set max number SDMA engines to use (uint)
parm:           desct_intr:Number of SDMA descriptor before interrupt (uint)
parm:           qp_table_size:QP table size (uint)
parm:           tid_rdma_seg_min_size:Min TID RDMA segment size, default: 64KiB (uint)
parm:           tid_rdma_seg_max_size:Max TID RDMA segment size, default: 256KiB (uint)
parm:           tid_rdma_max_read_segs:Max TID RDMA READ segments per QP request, default: 6 (uint)
parm:           tid_rdma_max_write_segs:Max TID RDMA WRITE segments per QP request, default: 2 (uint)
parm:           tid_rdma_proto_enable:[En|Dis]able TID RDMA READ and/or WRITE protocols. (uint)
parm:           pcie_caps:Max PCIe tuning: Payload (0..3), ReadReq (4..7) (int)
parm:           aspm:PCIe ASPM: 0: disable, 1: enable, 2: dynamic (uint)
parm:           pcie_target:PCIe target speed (0 skip, 1-3 Gen1-3) (uint)
parm:           pcie_force:Force driver to do a PCIe firmware download even if already at target speed (uint)
parm:           pcie_retry:Driver will try this many times to reach requested speed (uint)
parm:           pcie_pset:PCIe Eq Pset value to use, range is 0-10 (uint)
parm:           pcie_ctle:PCIe static CTLE mode, bit 0 - discrete on/off, bit 1 - integrated on/off (uint)
parm:           num_user_contexts:Set max number of user contexts to use (uint)
parm:           krcvqs:Array of the number of non-control kernel receive queues by VL (array of uint)
parm:           rcvarr_split:Percent of context's RcvArray entries used for Eager buffers (uint)
parm:           eager_buffer_size:Size of the eager buffers, default: 8MB (uint)
parm:           rcvhdrcnt:Receive header queue count (default 2048) (uint)
parm:           hdrq_entsize:Size of header queue entries: 2 - 8B, 16 - 64B (default), 32 - 128B (uint)
parm:           user_credit_return_threshold:Credit return threshold for user send contexts, return when unreturned credits passes this many blocks (in percent of allocated blocks, 0 is off) (uint)
parm:           port_reorder:Device port reorder: 1 - order HFIs on the same ASIC in increasing port order, or 0 - order exactly as the kernel enumerates (default) (bool)
parm:           max_mtu:Set max MTU bytes, default is 10240 (uint)
parm:           cu:Credit return units (uint)
parm:           cap_mask:Bit mask of enabled/disabled HW features
parm:           kdeth_qp:Set the KDETH queue pair prefix (uint)
parm:           num_vls:Set number of Virtual Lanes to use (1-8) (uint)
parm:           rcv_intr_timeout:Receive interrupt mitigation timeout in ns (uint)
parm:           rcv_intr_count:Receive interrupt mitigation count (uint)
parm:           link_crc_mask:CRCs to use on the link (ushort)
parm:           loopback:Put into loopback mode (1 = serdes, 3 = external cable (uint)
		

Текущие значения параметров модуля

Для вывода перечня всех текущих значений для параметров вашего модуля выполните следующий коротенький сценарий:


for x in /sys/module/hfi1/parameters/*; do echo "$(basename $x) "\
        $(cat $x); done
		

Вывод сценария (эти значения являются установленными по умолчанию):


aspm 0
cache_size 256 cap_mask 0x4c09a00cb9a cu 1
desct_intr 64
eager_buffer_size 8388608
hdrq_entsize 32
kdeth_qp 128 krcvqs link_crc_mask 3
lkey_table_size 16
loopback 0
max_ahs 65535
max_cqes 3145727
max_cqs 131071
max_mcast_grps 16384
max_mcast_qp_attached 16
max_mtu 10240
max_pds 65535
max_qps 32768
max_qp_wrs 16383
max_sges 96
max_srqs 1024
max_srq_sges 128
max_srq_wrs 131071
no_user_mr_percpu 0
num_sdma 0
num_user_contexts 44
num_vls 8
pcie_caps 0
pcie_ctle 3
pcie_force 0
pcie_pset 2
pcie_retry 5
pcie_target 3
piothreshold 256 port_reorder N qp_table_size 256
rcvarr_split 25
rcvhdrcnt 2048
rcv_intr_count 16
rcv_intr_timeout 840
sdma_comp_size 128
sdma_descq_cnt 2048
sdma_idle_cnt 250
sge_copy_mode 0
user_credit_return_threshold 33
wss_clean_period 256
wss_threshold 80
		

Установка параметров драйвера HFI1

[Замечание]Замечание

Все установки в данном разделе приводятся тоько в качестве примера и не рекомендуются для обычного применения.

Чтобы установить или изменить значения параметров модуля драйвера в качестве root выполните следующее:

  1. Внесите изменения в hfi1.conf. Например:

    
    $ cat /etc/modprobe.d/hfi1.conf
    options hfi1 pcie_caps=0x51 krcvqs=3
    		
  2. Определите есть ли потребность исполнения dracut:

    • Если происходит что-то из следующей последовательности событий, исполните команду dracut как описано на шаге 3.

      1. После старта начальной загрузки initramfs это всё что видно.

      2. Драйвер hfi1 загружается только когда initramfs является видимым.

      3. Файл hfi1.conf применяется внутри initramfs.

      [Замечание]Замечание

      Если вы применяете Linux* SLES, необходимо применять dracut.

    • Если происходит что-то из следующей последовательности событий, команда dracut не требуется, переходите к шагу 4.

      • Если вы перезагружаете необходимый драйвер во время работы ОС, initramfs не применяется.

      • Если ваш драйвер hfi1 загружается после того как применение initramfs завершено, тогда ваш initramfs не применяется.

  3. Выполните команду /usr/bin/dracut -f для принудительного помещения /etc/modprobe.d/hf1.conf в ваш образ initramfs.

  4. Выполните перезагрузку своей системы.

После того как ваша система вернётся в рабочее состояние после перезагрузки вы можете воспользоваться сценарием, описанным в разделе Текущие значения параметров модуля чтобы убедится, что ваши изменения в hfi1.conf вступили в действие.

Установка krcvqs=3 оказывает воздействие только на самый первый виртуальный лейн (VL, virtual lane). Чтобы Чтобы установить krcvqs в значение 3 в случае восьми VL, установленных в вашем Диспетчере инфраструктуры (krcvqs), установка значений krcvqs должна выглядеть следующим образом:


options hfi1 krcvqs=3,3,3,3,3,3,3,3