Параметры модуля драйвера HFI1
Содержание
Установленные по умолчанию настройки для параметров модуля драйвера HFI1 в настоящее время достигают наилучшей производительности. Однако для дальнейшего тюнинга вашей производительности вы можете изменять определённые параметры как это описано в данном документе.
Данная глава описывает:
-
полный перечень параметров модуля драйвера HFI1;
-
как их устанавливать; а также
-
как активировать сделанные изменения
Для получения перечня и краткого описания всех параметров модуля драйвера 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
Замечание | |
---|---|
Все установки в данном разделе приводятся тоько в качестве примера и не рекомендуются для обычного применения. |
Чтобы установить или изменить значения параметров модуля драйвера в качестве root выполните следующее:
-
Внесите изменения в
hfi1.conf
. Например:$ cat /etc/modprobe.d/hfi1.conf options hfi1 pcie_caps=0x51 krcvqs=3
-
Определите есть ли потребность исполнения
dracut
:-
Если происходит что-то из следующей последовательности событий, исполните команду
dracut
как описано на шаге 3.-
После старта начальной загрузки
initramfs
это всё что видно. -
Драйвер hfi1 загружается только когда
initramfs
является видимым. -
Файл
hfi1.conf
применяется внутри initramfs.
Замечание Если вы применяете Linux* SLES, необходимо применять
dracut
. -
-
Если происходит что-то из следующей последовательности событий, команда
dracut
не требуется, переходите к шагу 4.-
Если вы перезагружаете необходимый драйвер во время работы ОС,
initramfs
не применяется. -
Если ваш драйвер hfi1 загружается после того как применение
initramfs
завершено, тогда вашinitramfs
не применяется.
-
-
-
Выполните команду
/usr/bin/dracut -f
для принудительного помещения/etc/modprobe.d/hf1.conf
в ваш образinitramfs
. -
Выполните перезагрузку своей системы.
После того как ваша система вернётся в рабочее состояние после перезагрузки вы можете воспользоваться сценарием, описанным в разделе
Текущие значения параметров модуля чтобы убедится, что ваши изменения в
hfi1.conf
вступили в действие.
Установка krcvqs=3
оказывает воздействие только на самый первый виртуальный лейн (VL, virtual lane).
Чтобы Чтобы установить krcvqs в значение 3 в случае восьми VL, установленных в вашем Диспетчере инфраструктуры (krcvqs), установка значений
krcvqs должна выглядеть следующим образом:
options hfi1 krcvqs=3,3,3,3,3,3,3,3