← Documents Documentation/ABI/testing/debugfs-driver-qat GitHub 원문 ↗

Linux 6.18.37 · ABI / testing

Intel QAT driver debugfs ABI

Intel QAT Acceleration Engine firmware request·response counters, userspace-polled heartbeat 설정·상태·통계, power management·CnV errors와 시험용 heartbeat failure injection을 설명합니다.

Source pathDocumentation/ABI/testing/debugfs-driver-qat
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

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

1. 요약·해설

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

Acceleration Engine firmware counters

debugfs-driver-qat:1-11

각 Acceleration Engine이 firmware에 보낸 requests와 firmware에서 받은 responses 수를 읽기 전용으로 보고합니다.

Heartbeat period, counters, status

debugfs-driver-qat:12-61

Userspace polling 주기에 맞춰 heartbeat update period를 설정하고 전체 query 수, 실패 수와 현재 device health를 읽습니다. Driver는 heartbeat를 자동 monitor하지 않습니다.

Power management와 verified compression errors

debugfs-driver-qat:63-83

지원 device의 power management 정보와 각 Acceleration Engine의 Compress and Verify error 수 및 마지막 error type을 읽습니다.

Unrecoverable heartbeat failure injection

debugfs-driver-qat:85-109

시험 목적으로 random engine arbitration과 heartbeat counter fetch를 중단해 device unresponsive 상태를 만들며, 복구하려면 device를 restart해야 합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 What: /sys/kernel/debug/qat_<device>_<BDF>/fw_counters
2 Date: November 2023
3 KernelVersion: 6.6
4 Contact: qat-linux@intel.com
5 Description: (RO) Read returns the number of requests sent to the FW and the number of responses
6 received from the FW for each Acceleration Engine
7 Reported firmware counters::
8
9 <N>: Number of requests sent from Acceleration Engine N to FW and responses
10 Acceleration Engine N received from FW
11
12 What: /sys/kernel/debug/qat_<device>_<BDF>/heartbeat/config
13 Date: November 2023
14 KernelVersion: 6.6
15 Contact: qat-linux@intel.com
16 Description: (RW) Read returns value of the Heartbeat update period.
17 Write to the file changes this period value.
18
19 This period should reflect planned polling interval of device
20 health status. High frequency Heartbeat monitoring wastes CPU cycles
21 but minimizes the customer’s system downtime. Also, if there are
22 large service requests that take some time to complete, high frequency
23 Heartbeat monitoring could result in false reports of unresponsiveness
24 and in those cases, period needs to be increased.
25
26 This parameter is effective only for c3xxx, c62x, dh895xcc devices.
27 4xxx has this value internally fixed to 200ms.
28
29 Default value is set to 500. Minimal allowed value is 200.
30 All values are expressed in milliseconds.
31
32 What: /sys/kernel/debug/qat_<device>_<BDF>/heartbeat/queries_failed
33 Date: November 2023
34 KernelVersion: 6.6
35 Contact: qat-linux@intel.com
36 Description: (RO) Read returns the number of times the device became unresponsive.
37
38 Attribute returns value of the counter which is incremented when
39 status query results negative.
40
41 What: /sys/kernel/debug/qat_<device>_<BDF>/heartbeat/queries_sent
42 Date: November 2023
43 KernelVersion: 6.6
44 Contact: qat-linux@intel.com
45 Description: (RO) Read returns the number of times the control process checked
46 if the device is responsive.
47
48 Attribute returns value of the counter which is incremented on
49 every status query.
50
51 What: /sys/kernel/debug/qat_<device>_<BDF>/heartbeat/status
52 Date: November 2023
53 KernelVersion: 6.6
54 Contact: qat-linux@intel.com
55 Description: (RO) Read returns the device health status.
56
57 Returns 0 when device is healthy or -1 when is unresponsive
58 or the query failed to send.
59
60 The driver does not monitor for Heartbeat. It is left for a user
61 to poll the status periodically.
62
63 What: /sys/kernel/debug/qat_<device>_<BDF>/pm_status
64 Date: January 2024
65 KernelVersion: 6.7
66 Contact: qat-linux@intel.com
67 Description: (RO) Read returns power management information specific to the
68 QAT device.
69
70 This attribute is only available for qat_4xxx and qat_6xxx devices.
71
72 What: /sys/kernel/debug/qat_<device>_<BDF>/cnv_errors
73 Date: January 2024
74 KernelVersion: 6.7
75 Contact: qat-linux@intel.com
76 Description: (RO) Read returns, for each Acceleration Engine (AE), the number
77 of errors and the type of the last error detected by the device
78 when performing verified compression.
79 Reported counters::
80
81 <N>: Number of Compress and Verify (CnV) errors and type
82 of the last CnV error detected by Acceleration
83 Engine N.
84
85 What: /sys/kernel/debug/qat_<device>_<BDF>/heartbeat/inject_error
86 Date: March 2024
87 KernelVersion: 6.8
88 Contact: qat-linux@intel.com
89 Description: (WO) Write to inject an error that simulates an heartbeat
90 failure. This is to be used for testing purposes.
91
92 After writing this file, the driver stops arbitration on a
93 random engine and disables the fetching of heartbeat counters.
94 If a workload is running on the device, a job submitted to the
95 accelerator might not get a response and a read of the
96 `heartbeat/status` attribute might report -1, i.e. device
97 unresponsive.
98 The error is unrecoverable thus the device must be restarted to
99 restore its functionality.
100
101 This attribute is available only when the kernel is built with
102 CONFIG_CRYPTO_DEV_QAT_ERROR_INJECTION=y.
103
104 A write of 1 enables error injection.
105
106 The following example shows how to enable error injection::
107
108 # cd /sys/kernel/debug/qat_<device>_<BDF>
109 # echo 1 > heartbeat/inject_error
110

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

Firmware request·response counters

1-11
항목내용
What/sys/kernel/debug/qat_<device>_<BDF>/fw_counters
Date2023년 11월
KernelVersion6.6
Contactqat-linux@intel.com
권한RO

각 Acceleration Engine별로 firmware에 보낸 request 수와 firmware에서 받은 response 수를 반환합니다.

표시의미
<N>Acceleration Engine N이 firmware에 보낸 requests와 firmware에서 받은 responses 수

Heartbeat update period

12-30
항목내용
What/sys/kernel/debug/qat_<device>_<BDF>/heartbeat/config
Date2023년 11월
KernelVersion6.6
Contactqat-linux@intel.com
권한RW

읽으면 Heartbeat update period를 반환하고 쓰면 period를 변경합니다. 이 period는 계획한 device health status polling interval을 반영해야 합니다.

고빈도 Heartbeat monitoring은 CPU cycles를 낭비하지만 system downtime을 줄입니다. 완료하는 데 시간이 걸리는 큰 service request가 있으면 고빈도 monitoring이 unresponsive라는 false report를 만들 수 있으므로 이 경우 period를 늘려야 합니다.

Device 또는 값동작
c3xxx, c62x, dh895xcc이 parameter가 적용됨
4xxx내부적으로 200 ms로 고정됨
기본값500 ms
최솟값200 ms

Heartbeat query counters와 health status

32-61
What설명권한
/sys/kernel/debug/qat_<device>_<BDF>/heartbeat/queries_failedDevice가 unresponsive가 된 횟수입니다. Status query 결과가 negative일 때 증가합니다.RO
/sys/kernel/debug/qat_<device>_<BDF>/heartbeat/queries_sentControl process가 device responsiveness를 확인한 횟수입니다. 모든 status query마다 증가합니다.RO
/sys/kernel/debug/qat_<device>_<BDF>/heartbeat/statusDevice health status입니다. Healthy이면 0, unresponsive이거나 query 전송에 실패하면 -1입니다.RO

세 항목은 모두 2023년 11월, kernel 6.6에 추가되었고 담당자는 qat-linux@intel.com입니다.

Driver는 Heartbeat를 monitor하지 않습니다. 사용자가 status를 주기적으로 poll해야 합니다.

Userspace QAT heartbeat polling
Userspace polling timerheartbeat/status queryqueries_sent + 10 = healthy
heartbeat/status queryNegative or send failurequeries_failed + 1-1 = unresponsive
Short periodLower downtimeMore CPU + false-positive risk
Long-running service requestIncrease period

Userspace가 선택한 period로 status를 읽을 때마다 sent counter가 늘고 negative result면 failed counter가 늘어난다. 짧은 period는 탐지 시간을 줄이지만 CPU 비용과 false positive 가능성을 높인다.

Power management와 CnV errors

63-83
WhatDate / KernelVersion설명권한
/sys/kernel/debug/qat_<device>_<BDF>/pm_status2024년 1월 / 6.7QAT device-specific power management 정보를 반환합니다. qat_4xxx와 qat_6xxx에서만 제공합니다.RO
/sys/kernel/debug/qat_<device>_<BDF>/cnv_errors2024년 1월 / 6.7Verified compression 중 device가 검출한 각 Acceleration Engine별 error 수와 마지막 error type을 반환합니다.RO

두 항목의 담당자는 qat-linux@intel.com입니다. cnv_errors에서 <N>은 Acceleration Engine N이 검출한 Compress and Verify(CnV) error 수와 마지막 CnV error type을 나타냅니다.

Heartbeat failure error injection

85-109
항목내용
What/sys/kernel/debug/qat_<device>_<BDF>/heartbeat/inject_error
Date2024년 3월
KernelVersion6.8
Contactqat-linux@intel.com
권한WO

Heartbeat failure를 흉내 내는 error를 주입하는 시험용 interface입니다. File에 쓴 뒤 driver는 무작위 engine의 arbitration을 멈추고 heartbeat counters fetch를 disable합니다.

Device에서 workload가 실행 중이면 accelerator에 제출된 job이 response를 받지 못할 수 있고 heartbeat/status가 device unresponsive를 뜻하는 -1을 보고할 수 있습니다.

이 error는 복구할 수 없으므로 기능을 되살리려면 device를 restart해야 합니다. CONFIG_CRYPTO_DEV_QAT_ERROR_INJECTION=y로 kernel을 build한 경우에만 attribute가 보입니다. 1을 쓰면 error injection을 enable합니다.

# cd /sys/kernel/debug/qat_<device>_<BDF>
# echo 1 > heartbeat/inject_error
QAT heartbeat failure injection의 영향
inject_error = 1Stop random engine arbitrationSubmitted job may not respond
inject_error = 1Disable heartbeat counter fetchheartbeat/status = -1
Unrecoverable injected stateRestart deviceFunction restored

주입 후 random engine의 arbitration과 counter fetch가 중단되어 실제 workload와 health query가 응답하지 않을 수 있다. 정상 복귀 경로는 device restart뿐이다.