요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
.. SPDX-License-Identifier: GPL-2.0+
==========================================================================
idpf Linux* Base Driver for the Intel(R) Infrastructure Data Path Function
==========================================================================
Intel idpf Linux driver.
Copyright(C) 2023 Intel Corporation.
.. contents::
The idpf driver serves as both the Physical Function (PF) and Virtual Function
(VF) driver for the Intel(R) Infrastructure Data Path Function.
Driver information can be obtained using ethtool, lspci, and ip.
For questions related to hardware requirements, refer to the documentation
supplied with your Intel adapter. All hardware requirements listed apply to use
with Linux.
Identifying Your Adapter
========================
For information on how to identify your adapter, and for the latest Intel
network drivers, refer to the Intel Support website:
http://www.intel.com/support
Additional Features and Configurations
======================================
ethtool
-------
The driver utilizes the ethtool interface for driver configuration and
diagnostics, as well as displaying statistical information. The latest ethtool
version is required for this functionality. If you don't have one yet, you can
obtain it at:
https://kernel.org/pub/software/network/ethtool/
Viewing Link Messages
---------------------
Link messages will not be displayed to the console if the distribution is
restricting system messages. In order to see network driver link messages on
your console, set dmesg to eight by entering the following::
# dmesg -n 8
.. note::
This setting is not saved across reboots.
Jumbo Frames
------------
Jumbo Frames support is enabled by changing the Maximum Transmission Unit (MTU)
to a value larger than the default value of 1500.
Use the ip command to increase the MTU size. For example, enter the following
where <ethX> is the interface number::
# ip link set mtu 9000 dev <ethX>
# ip link set up dev <ethX>
.. note::
The maximum MTU setting for jumbo frames is 9706. This corresponds to the
maximum jumbo frame size of 9728 bytes.
.. note::
This driver will attempt to use multiple page sized buffers to receive
each jumbo packet. This should help to avoid buffer starvation issues when
allocating receive packets.
.. note::
Packet loss may have a greater impact on throughput when you use jumbo
frames. If you observe a drop in performance after enabling jumbo frames,
enabling flow control may mitigate the issue.
Performance Optimization
========================
Driver defaults are meant to fit a wide variety of workloads, but if further
optimization is required, we recommend experimenting with the following
settings.
Interrupt Rate Limiting
-----------------------
This driver supports an adaptive interrupt throttle rate (ITR) mechanism that
is tuned for general workloads. The user can customize the interrupt rate
control for specific workloads, via ethtool, adjusting the number of
microseconds between interrupts.
To set the interrupt rate manually, you must disable adaptive mode::
# ethtool -C <ethX> adaptive-rx off adaptive-tx off
For lower CPU utilization:
- Disable adaptive ITR and lower Rx and Tx interrupts. The examples below
affect every queue of the specified interface.
- Setting rx-usecs and tx-usecs to 80 will limit interrupts to about
12,500 interrupts per second per queue::
# ethtool -C <ethX> adaptive-rx off adaptive-tx off rx-usecs 80
tx-usecs 80
For reduced latency:
- Disable adaptive ITR and ITR by setting rx-usecs and tx-usecs to 0
using ethtool::
# ethtool -C <ethX> adaptive-rx off adaptive-tx off rx-usecs 0
tx-usecs 0
Per-queue interrupt rate settings:
- The following examples are for queues 1 and 3, but you can adjust other
queues.
- To disable Rx adaptive ITR and set static Rx ITR to 10 microseconds or
about 100,000 interrupts/second, for queues 1 and 3::
# ethtool --per-queue <ethX> queue_mask 0xa --coalesce adaptive-rx off
rx-usecs 10
- To show the current coalesce settings for queues 1 and 3::
# ethtool --per-queue <ethX> queue_mask 0xa --show-coalesce
Virtualized Environments
------------------------
In addition to the other suggestions in this section, the following may be
helpful to optimize performance in VMs.
- Using the appropriate mechanism (vcpupin) in the VM, pin the CPUs to
individual LCPUs, making sure to use a set of CPUs included in the
device's local_cpulist: /sys/class/net/<ethX>/device/local_cpulist.
- Configure as many Rx/Tx queues in the VM as available. (See the idpf driver
documentation for the number of queues supported.) For example::
# ethtool -L <virt_interface> rx <max> tx <max>
Support
=======
For general information, go to the Intel support website at:
http://www.intel.com/support/
If an issue is identified with the released source code on a supported kernel
with a supported adapter, email the specific information related to the issue
to [email protected].
Trademarks
==========
Intel is a trademark or registered trademark of Intel Corporation or its
subsidiaries in the United States and/or other countries.
* Other names and brands may be claimed as the property of others.
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
개요와 adapter 식별
1-28이 문서는 `GPL-2.0+` 라이선스를 따릅니다.
Intel(R) Infrastructure Data Path Function용 idpf Linux Base Driver
Intel idpf Linux driver.
Copyright(C) 2023 Intel Corporation.
idpf driver는 Intel(R) Infrastructure Data Path Function의 Physical Function(PF) driver와 Virtual Function(VF) driver 역할을 모두 수행합니다.
driver 정보는 ethtool, lspci와 ip로 확인할 수 있습니다.
hardware requirement는 Intel adapter와 함께 제공된 문서를 참고하십시오. 기재된 모든 requirement는 Linux 사용에도 적용됩니다.
Adapter 식별
adapter 식별 방법과 최신 Intel network driver는 Intel Support website `http://www.intel.com/support`를 참고하십시오.
.. SPDX-License-Identifier: GPL-2.0+
==========================================================================
idpf Linux* Base Driver for the Intel(R) Infrastructure Data Path Function
==========================================================================
Intel idpf Linux driver.
Copyright(C) 2023 Intel Corporation.
.. contents::
The idpf driver serves as both the Physical Function (PF) and Virtual Function
(VF) driver for the Intel(R) Infrastructure Data Path Function.
Driver information can be obtained using ethtool, lspci, and ip.
For questions related to hardware requirements, refer to the documentation
supplied with your Intel adapter. All hardware requirements listed apply to use
with Linux.
Identifying Your Adapter
========================
For information on how to identify your adapter, and for the latest Intel
network drivers, refer to the Intel Support website:
http://www.intel.com/support
ethtool과 link message
29-52추가 기능과 configuration
ethtool
driver는 configuration, 진단과 통계 표시를 위해 ethtool interface를 사용합니다. 최신 ethtool이 필요하며 `https://kernel.org/pub/software/network/ethtool/`에서 받을 수 있습니다.
Link message 보기
distribution이 system message를 제한하면 link message가 console에 표시되지 않습니다. network driver link message를 보려면 dmesg level을 8로 설정합니다.
# dmesg -n 8
참고: 이 설정은 reboot 후 유지되지 않습니다.
Additional Features and Configurations
======================================
ethtool
-------
The driver utilizes the ethtool interface for driver configuration and
diagnostics, as well as displaying statistical information. The latest ethtool
version is required for this functionality. If you don't have one yet, you can
obtain it at:
https://kernel.org/pub/software/network/ethtool/
Viewing Link Messages
---------------------
Link messages will not be displayed to the console if the distribution is
restricting system messages. In order to see network driver link messages on
your console, set dmesg to eight by entering the following::
# dmesg -n 8
.. note::
This setting is not saved across reboots.
Jumbo frame
53-78Jumbo Frame
MTU(Maximum Transmission Unit)를 default 1500보다 큰 값으로 바꾸면 jumbo frame이 활성화됩니다.
ip command로 MTU를 늘리고 interface를 올립니다.
ip link set mtu 9000 dev <ethX>
ip link set up dev <ethX>
최대 jumbo MTU는 9706이며 최대 jumbo frame 크기 9728 bytes에 해당합니다.
driver는 jumbo packet 하나를 받기 위해 page-size buffer 여러 개를 사용해 receive packet allocation 중 buffer starvation을 줄입니다.
jumbo frame에서는 packet loss가 throughput에 더 큰 영향을 줄 수 있습니다. 활성화 후 성능이 떨어지면 flow control을 켜는 것이 도움이 될 수 있습니다.
Jumbo Frames
------------
Jumbo Frames support is enabled by changing the Maximum Transmission Unit (MTU)
to a value larger than the default value of 1500.
Use the ip command to increase the MTU size. For example, enter the following
where <ethX> is the interface number::
# ip link set mtu 9000 dev <ethX>
# ip link set up dev <ethX>
.. note::
The maximum MTU setting for jumbo frames is 9706. This corresponds to the
maximum jumbo frame size of 9728 bytes.
.. note::
This driver will attempt to use multiple page sized buffers to receive
each jumbo packet. This should help to avoid buffer starvation issues when
allocating receive packets.
.. note::
Packet loss may have a greater impact on throughput when you use jumbo
frames. If you observe a drop in performance after enabling jumbo frames,
enabling flow control may mitigate the issue.
Performance 최적화와 interrupt rate
79-129Performance 최적화
driver default는 다양한 workload에 맞춰져 있습니다. 추가 최적화가 필요하면 아래 설정을 시험하십시오.
Interrupt Rate Limiting
driver는 일반 workload에 맞춘 adaptive Interrupt Throttle Rate(ITR)를 지원합니다. ethtool로 interrupt 사이 microsecond를 조정해 workload별 interrupt rate를 customize할 수 있습니다.
수동 rate를 설정하려면 adaptive mode를 끕니다.
ethtool -C <ethX> adaptive-rx off adaptive-tx off
CPU 사용량을 낮추는 설정
- adaptive ITR을 끄고 Rx/Tx interrupt 빈도를 낮춥니다. 아래 값은 해당 interface의 모든 queue에 적용됩니다.
- `rx-usecs=80`, `tx-usecs=80`은 queue마다 약 12,500 interrupts/s로 제한합니다.
ethtool -C <ethX> adaptive-rx off adaptive-tx off rx-usecs 80
tx-usecs 80
latency를 줄이는 설정
adaptive ITR을 끄고 `rx-usecs`와 `tx-usecs`를 0으로 설정해 ITR도 비활성화합니다.
ethtool -C <ethX> adaptive-rx off adaptive-tx off rx-usecs 0
tx-usecs 0
queue별 interrupt rate 설정
아래 `queue_mask 0xa` 예시는 queue 1과 3을 선택합니다. 다른 queue도 같은 방식으로 조정할 수 있습니다.
Rx adaptive ITR을 끄고 static Rx ITR을 10 microseconds, 약 100,000 interrupts/s로 설정합니다.
ethtool --per-queue <ethX> queue_mask 0xa --coalesce adaptive-rx off
rx-usecs 10
ethtool --per-queue <ethX> queue_mask 0xa --show-coalesce
Performance Optimization
========================
Driver defaults are meant to fit a wide variety of workloads, but if further
optimization is required, we recommend experimenting with the following
settings.
Interrupt Rate Limiting
-----------------------
This driver supports an adaptive interrupt throttle rate (ITR) mechanism that
is tuned for general workloads. The user can customize the interrupt rate
control for specific workloads, via ethtool, adjusting the number of
microseconds between interrupts.
To set the interrupt rate manually, you must disable adaptive mode::
# ethtool -C <ethX> adaptive-rx off adaptive-tx off
For lower CPU utilization:
- Disable adaptive ITR and lower Rx and Tx interrupts. The examples below
affect every queue of the specified interface.
- Setting rx-usecs and tx-usecs to 80 will limit interrupts to about
12,500 interrupts per second per queue::
# ethtool -C <ethX> adaptive-rx off adaptive-tx off rx-usecs 80
tx-usecs 80
For reduced latency:
- Disable adaptive ITR and ITR by setting rx-usecs and tx-usecs to 0
using ethtool::
# ethtool -C <ethX> adaptive-rx off adaptive-tx off rx-usecs 0
tx-usecs 0
Per-queue interrupt rate settings:
- The following examples are for queues 1 and 3, but you can adjust other
queues.
- To disable Rx adaptive ITR and set static Rx ITR to 10 microseconds or
about 100,000 interrupts/second, for queues 1 and 3::
# ethtool --per-queue <ethX> queue_mask 0xa --coalesce adaptive-rx off
rx-usecs 10
- To show the current coalesce settings for queues 1 and 3::
# ethtool --per-queue <ethX> queue_mask 0xa --show-coalesce
Virtualized environment, 지원과 trademark
130-160Virtualized environment
VM performance를 높이기 위해 다음을 적용할 수 있습니다.
- vcpupin 같은 적절한 mechanism으로 VM CPU를 개별 lCPU에 고정합니다. `/sys/class/net/<ethX>/device/local_cpulist`에 포함된 CPU set을 사용해야 합니다.
- VM에서 가능한 만큼 Rx/Tx queue를 구성합니다. 지원 queue 수는 idpf driver 문서를 참고합니다.
ethtool -L <virt_interface> rx <max> tx <max>
지원
일반 정보는 `http://www.intel.com/support/`를 참고하십시오. 지원되는 adapter와 kernel에서 공개 source code 문제가 확인되면 구체적인 정보를 `[email protected]`로 보내십시오.
Trademark
Intel은 미국 및 기타 국가에서 Intel Corporation 또는 그 자회사의 trademark 또는 registered trademark입니다.
그 밖의 name과 brand는 각 소유자의 property일 수 있습니다.
Virtualized Environments
------------------------
In addition to the other suggestions in this section, the following may be
helpful to optimize performance in VMs.
- Using the appropriate mechanism (vcpupin) in the VM, pin the CPUs to
individual LCPUs, making sure to use a set of CPUs included in the
device's local_cpulist: /sys/class/net/<ethX>/device/local_cpulist.
- Configure as many Rx/Tx queues in the VM as available. (See the idpf driver
documentation for the number of queues supported.) For example::
# ethtool -L <virt_interface> rx <max> tx <max>
Support
=======
For general information, go to the Intel support website at:
http://www.intel.com/support/
If an issue is identified with the released source code on a supported kernel
with a supported adapter, email the specific information related to the issue
to [email protected].
Trademarks
==========
Intel is a trademark or registered trademark of Intel Corporation or its
subsidiaries in the United States and/or other countries.
* Other names and brands may be claimed as the property of others.
요약·해설
idpf.rst:1-160idpf는 Infrastructure Data Path Function에서 PF와 VF를 하나의 driver가 담당합니다. 이 문서는 기본 진단, jumbo frame의 buffer 운용, adaptive ITR의 CPU·latency trade-off와 VM의 CPU·queue locality를 중심으로 설명합니다.
idpf의 function 범위와 확인 도구입니다.
MTU와 receive buffer 운용 기준입니다.
CPU 사용량과 latency에 따른 대표 설정입니다.
선택 queue에만 static Rx ITR을 적용합니다.
vCPU와 device-local CPU 및 queue를 맞춥니다.