← Documents Documentation/networking/device_drivers/ethernet/intel/idpf.rst GitHub 원문 ↗

Linux 6.18.37 · Networking

idpf Linux Base Driver for the Intel(R) Infrastructure Data Path Function

Intel idpf의 PF·VF 이중 역할, jumbo frame, adaptive ITR과 VM locality 최적화를 설명합니다.

Source pathDocumentation/networking/device_drivers/ethernet/intel/idpf.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약·해설

idpf.rst:1-160

idpf는 Infrastructure Data Path Function에서 PF와 VF를 하나의 driver가 담당합니다. 이 문서는 기본 진단, jumbo frame의 buffer 운용, adaptive ITR의 CPU·latency trade-off와 VM의 CPU·queue locality를 중심으로 설명합니다.

Driver 역할과 진단
항목내용
FunctionPF와 VF 모두 지원
Driver 정보ethtool, lspci, ip
Configuration최신 ethtool 필요
Link messagedmesg -n 8

idpf의 function 범위와 확인 도구입니다.

Jumbo frame 조건
항목값·동작
활성화MTU > 1500
예시MTU 9000
최대 MTU9706
최대 frame9728 bytes
Receivepage-size buffer 여러 개
Packet lossflow control로 완화 가능

MTU와 receive buffer 운용 기준입니다.

Interrupt tuning
목표rx/tx-usecs예상 결과
Adaptive default자동일반 workload
낮은 CPU80queue당 약 12,500/s
낮은 latency0ITR 비활성화
Queue별 static10약 100,000/s

CPU 사용량과 latency에 따른 대표 설정입니다.

Queue별 coalescing
queue_mask 0xaqueue 1·3 선택adaptive-rx offrx-usecs 10show-coalesce로 확인

선택 queue에만 static Rx ITR을 적용합니다.

VM locality
local_cpulist 확인vcpupin으로 개별 lCPU 고정Rx/Tx queue 최대화

vCPU와 device-local CPU 및 queue를 맞춥니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 .. SPDX-License-Identifier: GPL-2.0+
2
3 ==========================================================================
4 idpf Linux* Base Driver for the Intel(R) Infrastructure Data Path Function
5 ==========================================================================
6
7 Intel idpf Linux driver.
8 Copyright(C) 2023 Intel Corporation.
9
10 .. contents::
11
12 The idpf driver serves as both the Physical Function (PF) and Virtual Function
13 (VF) driver for the Intel(R) Infrastructure Data Path Function.
14
15 Driver information can be obtained using ethtool, lspci, and ip.
16
17 For questions related to hardware requirements, refer to the documentation
18 supplied with your Intel adapter. All hardware requirements listed apply to use
19 with Linux.
20
21
22 Identifying Your Adapter
23 ========================
24 For information on how to identify your adapter, and for the latest Intel
25 network drivers, refer to the Intel Support website:
26 http://www.intel.com/support
27
28
29 Additional Features and Configurations
30 ======================================
31
32 ethtool
33 -------
34 The driver utilizes the ethtool interface for driver configuration and
35 diagnostics, as well as displaying statistical information. The latest ethtool
36 version is required for this functionality. If you don't have one yet, you can
37 obtain it at:
38 https://kernel.org/pub/software/network/ethtool/
39
40
41 Viewing Link Messages
42 ---------------------
43 Link messages will not be displayed to the console if the distribution is
44 restricting system messages. In order to see network driver link messages on
45 your console, set dmesg to eight by entering the following::
46
47 # dmesg -n 8
48
49 .. note::
50 This setting is not saved across reboots.
51
52
53 Jumbo Frames
54 ------------
55 Jumbo Frames support is enabled by changing the Maximum Transmission Unit (MTU)
56 to a value larger than the default value of 1500.
57
58 Use the ip command to increase the MTU size. For example, enter the following
59 where <ethX> is the interface number::
60
61 # ip link set mtu 9000 dev <ethX>
62 # ip link set up dev <ethX>
63
64 .. note::
65 The maximum MTU setting for jumbo frames is 9706. This corresponds to the
66 maximum jumbo frame size of 9728 bytes.
67
68 .. note::
69 This driver will attempt to use multiple page sized buffers to receive
70 each jumbo packet. This should help to avoid buffer starvation issues when
71 allocating receive packets.
72
73 .. note::
74 Packet loss may have a greater impact on throughput when you use jumbo
75 frames. If you observe a drop in performance after enabling jumbo frames,
76 enabling flow control may mitigate the issue.
77
78
79 Performance Optimization
80 ========================
81 Driver defaults are meant to fit a wide variety of workloads, but if further
82 optimization is required, we recommend experimenting with the following
83 settings.
84
85
86 Interrupt Rate Limiting
87 -----------------------
88 This driver supports an adaptive interrupt throttle rate (ITR) mechanism that
89 is tuned for general workloads. The user can customize the interrupt rate
90 control for specific workloads, via ethtool, adjusting the number of
91 microseconds between interrupts.
92
93 To set the interrupt rate manually, you must disable adaptive mode::
94
95 # ethtool -C <ethX> adaptive-rx off adaptive-tx off
96
97 For lower CPU utilization:
98 - Disable adaptive ITR and lower Rx and Tx interrupts. The examples below
99 affect every queue of the specified interface.
100
101 - Setting rx-usecs and tx-usecs to 80 will limit interrupts to about
102 12,500 interrupts per second per queue::
103
104 # ethtool -C <ethX> adaptive-rx off adaptive-tx off rx-usecs 80
105 tx-usecs 80
106
107 For reduced latency:
108 - Disable adaptive ITR and ITR by setting rx-usecs and tx-usecs to 0
109 using ethtool::
110
111 # ethtool -C <ethX> adaptive-rx off adaptive-tx off rx-usecs 0
112 tx-usecs 0
113
114 Per-queue interrupt rate settings:
115 - The following examples are for queues 1 and 3, but you can adjust other
116 queues.
117
118 - To disable Rx adaptive ITR and set static Rx ITR to 10 microseconds or
119 about 100,000 interrupts/second, for queues 1 and 3::
120
121 # ethtool --per-queue <ethX> queue_mask 0xa --coalesce adaptive-rx off
122 rx-usecs 10
123
124 - To show the current coalesce settings for queues 1 and 3::
125
126 # ethtool --per-queue <ethX> queue_mask 0xa --show-coalesce
127
128
129
130 Virtualized Environments
131 ------------------------
132 In addition to the other suggestions in this section, the following may be
133 helpful to optimize performance in VMs.
134
135 - Using the appropriate mechanism (vcpupin) in the VM, pin the CPUs to
136 individual LCPUs, making sure to use a set of CPUs included in the
137 device's local_cpulist: /sys/class/net/<ethX>/device/local_cpulist.
138
139 - Configure as many Rx/Tx queues in the VM as available. (See the idpf driver
140 documentation for the number of queues supported.) For example::
141
142 # ethtool -L <virt_interface> rx <max> tx <max>
143
144
145 Support
146 =======
147 For general information, go to the Intel support website at:
148 http://www.intel.com/support/
149
150 If an issue is identified with the released source code on a supported kernel
151 with a supported adapter, email the specific information related to the issue
152 to intel-wired-lan@lists.osuosl.org.
153
154
155 Trademarks
156 ==========
157 Intel is a trademark or registered trademark of Intel Corporation or its
158 subsidiaries in the United States and/or other countries.
159
160 * Other names and brands may be claimed as the property of others.
161

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

Jumbo frame

53-78

Jumbo 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-129

Performance 최적화

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-160

Virtualized 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 문제가 확인되면 구체적인 정보를 `intel-wired-lan@lists.osuosl.org`로 보내십시오.

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 intel-wired-lan@lists.osuosl.org.


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.