← Documents Documentation/ABI/testing/sysfs-class-rtrs-client GitHub 원문 ↗

Linux 6.18.37 · ABI / testing

RTRS client class sysfs ABI

RTRS client session과 path 추가, multipath policy, path lifecycle·identity·latency 및 CPU migration·reconnect·RDMA 통계를 설명합니다.

Source pathDocumentation/ABI/testing/sysfs-class-rtrs-client
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

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

1. 요약·해설

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

Session and multipath configuration

sysfs-class-rtrs-client:1-46

Session directory에 source/destination path를 추가하고 reconnect limit와 round-robin·min-inflight·min-latency policy를 설정합니다.

Path state and lifecycle controls

sysfs-class-rtrs-client:48-75

Path 연결 상태를 읽고 blocking reconnect·disconnect 또는 disconnect 후 session에서 제거하는 operation을 실행합니다.

Path HCA and address identity

sysfs-class-rtrs-client:77-99

Connection에 사용 중인 HCA name·port와 source·destination address를 read-only metadata로 제공합니다.

Latency and CPU migration statistics

sysfs-class-rtrs-client:101-128

Heartbeat round-trip으로 current latency를 계산하고 통계 reset과 expected CPU에서 벗어난 HCA IRQ migration 횟수를 제공합니다.

Reconnect and RDMA statistics

sysfs-class-rtrs-client:130-146

Path lifetime의 successful·failed reconnect 수와 read/write count·size, inflight, failovered RDMA 통계를 제공합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 What: /sys/class/rtrs-client
2 Date: Feb 2020
3 KernelVersion: 5.7
4 Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
5 Description: When a user of RTRS API creates a new session, a directory entry with
6 the name of that session is created under /sys/class/rtrs-client/<session-name>/
7
8 What: /sys/class/rtrs-client/<session-name>/add_path
9 Date: Feb 2020
10 KernelVersion: 5.7
11 Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
12 Description: RW, adds a new path (connection) to an existing session. Expected format is the
13 following::
14
15 <[source addr,]destination addr>
16 *addr ::= [ ip:<ipv4|ipv6> | gid:<gid> ]
17
18 What: /sys/class/rtrs-client/<session-name>/max_reconnect_attempts
19 Date: Feb 2020
20 KernelVersion: 5.7
21 Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
22 Description: Maximum number reconnect attempts the client should make before giving up
23 after connection breaks unexpectedly.
24
25 What: /sys/class/rtrs-client/<session-name>/mp_policy
26 Date: Feb 2020
27 KernelVersion: 5.7
28 Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
29 Description: Multipath policy specifies which path should be selected on each IO:
30
31 round-robin (0):
32 select path in per CPU round-robin manner.
33
34 min-inflight (1):
35 select path with minimum inflights.
36
37 min-latency (2):
38 select path with minimum latency.
39
40 What: /sys/class/rtrs-client/<session-name>/paths/
41 Date: Feb 2020
42 KernelVersion: 5.7
43 Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
44 Description: Each path belonging to a given session is listed here by its source and
45 destination address. When a new path is added to a session by writing to
46 the "add_path" entry, a directory <src@dst> is created.
47
48 What: /sys/class/rtrs-client/<session-name>/paths/<src@dst>/state
49 Date: Feb 2020
50 KernelVersion: 5.7
51 Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
52 Description: RO, Contains "connected" if the session is connected to the peer and fully
53 functional. Otherwise the file contains "disconnected"
54
55 What: /sys/class/rtrs-client/<session-name>/paths/<src@dst>/reconnect
56 Date: Feb 2020
57 KernelVersion: 5.7
58 Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
59 Description: Write "1" to the file in order to reconnect the path.
60 Operation is blocking and returns 0 if reconnect was successful.
61
62 What: /sys/class/rtrs-client/<session-name>/paths/<src@dst>/disconnect
63 Date: Feb 2020
64 KernelVersion: 5.7
65 Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
66 Description: Write "1" to the file in order to disconnect the path.
67 Operation blocks until RTRS path is disconnected.
68
69 What: /sys/class/rtrs-client/<session-name>/paths/<src@dst>/remove_path
70 Date: Feb 2020
71 KernelVersion: 5.7
72 Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
73 Description: Write "1" to the file in order to disconnected and remove the path
74 from the session. Operation blocks until the path is disconnected
75 and removed from the session.
76
77 What: /sys/class/rtrs-client/<session-name>/paths/<src@dst>/hca_name
78 Date: Feb 2020
79 KernelVersion: 5.7
80 Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
81 Description: RO, Contains the name of HCA the connection established on.
82
83 What: /sys/class/rtrs-client/<session-name>/paths/<src@dst>/hca_port
84 Date: Feb 2020
85 KernelVersion: 5.7
86 Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
87 Description: RO, Contains the port number of active port traffic is going through.
88
89 What: /sys/class/rtrs-client/<session-name>/paths/<src@dst>/src_addr
90 Date: Feb 2020
91 KernelVersion: 5.7
92 Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
93 Description: RO, Contains the source address of the path
94
95 What: /sys/class/rtrs-client/<session-name>/paths/<src@dst>/dst_addr
96 Date: Feb 2020
97 KernelVersion: 5.7
98 Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
99 Description: RO, Contains the destination address of the path
100
101 What: /sys/class/rtrs-client/<session-name>/paths/<src@dst>/cur_latency
102 Date: Feb 2020
103 KernelVersion: 5.7
104 Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
105 Description: RO, Contains the latency time calculated by the heart-beat messages.
106 Whenever the client sends heart-beat message, it checks the time gap
107 between sending the heart-beat message and receiving the ACK.
108 This value can be changed regularly.
109
110 What: /sys/class/rtrs-client/<session-name>/paths/<src@dst>/stats/reset_all
111 Date: Feb 2020
112 KernelVersion: 5.7
113 Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
114 Description: RW, Read will return usage help, write 0 will clear all the statistics.
115
116 What: /sys/class/rtrs-client/<session-name>/paths/<src@dst>/stats/cpu_migration
117 Date: Feb 2020
118 KernelVersion: 5.7
119 Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
120 Description: RTRS expects that each HCA IRQ is pinned to a separate CPU. If it's
121 not the case, the processing of an I/O response could be processed on a
122 different CPU than where it was originally submitted. This file shows
123 how many interrupts where generated on a non expected CPU.
124
125 "from:"
126 is the CPU on which the IRQ was expected, but not generated.
127 "to:"
128 is the CPU on which the IRQ was generated, but not expected.
129
130 What: /sys/class/rtrs-client/<session-name>/paths/<src@dst>/stats/reconnects
131 Date: Feb 2020
132 KernelVersion: 5.7
133 Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
134 Description: Contains 2 unsigned int values, the first one records number of successful
135 reconnects in the path lifetime, the second one records number of failed
136 reconnects in the path lifetime.
137
138 What: /sys/class/rtrs-client/<session-name>/paths/<src@dst>/stats/rdma
139 Date: Feb 2020
140 KernelVersion: 5.7
141 Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
142 Description: Contains statistics regarding rdma operations and inflight operations.
143 The output consists of 6 values::
144
145 <read-count> <read-total-size> <write-count> \
146 <write-total-size> <inflights> <failovered>
147

3. 한국어 전문 번역

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

RTRS client session directory

1-6
항목한국어 전문 번역
What/sys/class/rtrs-client
Date2020년 2월
KernelVersion5.7
ContactJack Wang <[email protected]> Danil Kipnis <[email protected]>
DescriptionRTRS API user가 새 session을 만들면 /sys/class/rtrs-client/<session-name>/ 아래에 해당 session 이름의 directory entry를 생성합니다.

Add a path to an RTRS session

8-16
항목한국어 전문 번역
What/sys/class/rtrs-client/<session-name>/add_path
Date2020년 2월
KernelVersion5.7
ContactJack Wang <[email protected]> Danil Kipnis <[email protected]>
Description(RW) Existing session에 새 path, 즉 connection을 추가합니다. 형식은 optional source address와 destination address이며 address는 ip:<ipv4|ipv6> 또는 gid:<gid> 형식을 사용합니다.
<[source addr,]destination addr>
*addr ::= [ ip:<ipv4|ipv6> | gid:<gid> ]

Maximum reconnect attempts

18-23
항목한국어 전문 번역
What/sys/class/rtrs-client/<session-name>/max_reconnect_attempts
Date2020년 2월
KernelVersion5.7
ContactJack Wang <[email protected]> Danil Kipnis <[email protected]>
DescriptionConnection이 예기치 않게 끊어진 뒤 client가 포기하기 전에 시도할 maximum reconnect 횟수입니다.

RTRS multipath selection policy

25-38
항목한국어 전문 번역
What/sys/class/rtrs-client/<session-name>/mp_policy
Date2020년 2월
KernelVersion5.7
ContactJack Wang <[email protected]> Danil Kipnis <[email protected]>
Description각 IO에서 선택할 path를 정하는 multipath policy입니다. round-robin(0)은 CPU별 round-robin 방식으로 path를 선택하고, min-inflight(1)는 inflight가 가장 적은 path를, min-latency(2)는 latency가 가장 낮은 path를 선택합니다.
RTRS multipath policies
PolicyValueSelection
round-robin0Per-CPU round-robin
min-inflight1Minimum inflight operations
min-latency2Minimum current latency

Policy numeric value와 per-IO path selection 기준입니다.

Session path directories

40-46
항목한국어 전문 번역
What/sys/class/rtrs-client/<session-name>/paths/
Date2020년 2월
KernelVersion5.7
ContactJack Wang <[email protected]> Danil Kipnis <[email protected]>
Description해당 session에 속한 각 path를 source와 destination address로 나열합니다. add_path entry에 새 path를 쓰면 <src@dst> directory를 생성합니다.
RTRS client hierarchy
/sys/class/rtrs-client<session-name>add_path에 source,destination 기록paths/<src@dst>

Session 아래 source@destination connection별 path directory가 배치됩니다.

RTRS path connection state

48-53
항목한국어 전문 번역
What/sys/class/rtrs-client/<session-name>/paths/<src@dst>/state
Date2020년 2월
KernelVersion5.7
ContactJack Wang <[email protected]> Danil Kipnis <[email protected]>
Description(RO) Session이 peer에 연결되어 완전히 functional하면 connected, 그 밖에는 disconnected를 보관합니다.

Reconnect an RTRS path

55-60
항목한국어 전문 번역
What/sys/class/rtrs-client/<session-name>/paths/<src@dst>/reconnect
Date2020년 2월
KernelVersion5.7
ContactJack Wang <[email protected]> Danil Kipnis <[email protected]>
DescriptionPath를 reconnect하려면 1을 씁니다. Operation은 blocking이며 reconnect가 성공하면 0을 반환합니다.

Disconnect an RTRS path

62-67
항목한국어 전문 번역
What/sys/class/rtrs-client/<session-name>/paths/<src@dst>/disconnect
Date2020년 2월
KernelVersion5.7
ContactJack Wang <[email protected]> Danil Kipnis <[email protected]>
DescriptionPath를 disconnect하려면 1을 씁니다. RTRS path가 disconnected될 때까지 operation이 block됩니다.

Disconnect and remove an RTRS path

69-75
항목한국어 전문 번역
What/sys/class/rtrs-client/<session-name>/paths/<src@dst>/remove_path
Date2020년 2월
KernelVersion5.7
ContactJack Wang <[email protected]> Danil Kipnis <[email protected]>
DescriptionPath를 disconnect하고 session에서 제거하려면 1을 씁니다. Path가 disconnected되고 session에서 제거될 때까지 operation이 block됩니다.
RTRS client path controls
ControlWriteBlocking result
reconnect1Reconnect 완료까지 block, 성공 시 0
disconnect1Disconnected될 때까지 block
remove_path1Disconnect와 session 제거 완료까지 block

세 write control의 blocking 동작과 결과입니다.

Path HCA name

77-81
항목한국어 전문 번역
What/sys/class/rtrs-client/<session-name>/paths/<src@dst>/hca_name
Date2020년 2월
KernelVersion5.7
ContactJack Wang <[email protected]> Danil Kipnis <[email protected]>
Description(RO) Connection을 수립한 HCA의 이름을 보관합니다.

Path active HCA port

83-87
항목한국어 전문 번역
What/sys/class/rtrs-client/<session-name>/paths/<src@dst>/hca_port
Date2020년 2월
KernelVersion5.7
ContactJack Wang <[email protected]> Danil Kipnis <[email protected]>
Description(RO) Active traffic이 통과하는 port 번호를 보관합니다.

Path source address

89-93
항목한국어 전문 번역
What/sys/class/rtrs-client/<session-name>/paths/<src@dst>/src_addr
Date2020년 2월
KernelVersion5.7
ContactJack Wang <[email protected]> Danil Kipnis <[email protected]>
Description(RO) Path의 source address를 보관합니다.

Path destination address

95-99
항목한국어 전문 번역
What/sys/class/rtrs-client/<session-name>/paths/<src@dst>/dst_addr
Date2020년 2월
KernelVersion5.7
ContactJack Wang <[email protected]> Danil Kipnis <[email protected]>
Description(RO) Path의 destination address를 보관합니다.
RTRS path identity attributes
Attribute의미
hca_nameConnection을 수립한 HCA name
hca_portActive traffic이 통과하는 port number
src_addrSource address
dst_addrDestination address

Connection이 사용하는 adapter, port와 endpoint address입니다.

Heartbeat-derived path latency

101-108
항목한국어 전문 번역
What/sys/class/rtrs-client/<session-name>/paths/<src@dst>/cur_latency
Date2020년 2월
KernelVersion5.7
ContactJack Wang <[email protected]> Danil Kipnis <[email protected]>
Description(RO) Heartbeat message로 계산한 latency time을 보관합니다. Client가 heartbeat를 보낼 때마다 전송 시점과 ACK 수신 시점 사이의 time gap을 확인하므로 값은 정기적으로 바뀔 수 있습니다.
RTRS latency measurement
Client heartbeat 전송Peer 처리ACK 수신Send-to-ACK time gap 계산cur_latency 갱신

Heartbeat request와 ACK 사이의 elapsed time으로 current latency를 갱신합니다.

Reset all path statistics

110-114
항목한국어 전문 번역
What/sys/class/rtrs-client/<session-name>/paths/<src@dst>/stats/reset_all
Date2020년 2월
KernelVersion5.7
ContactJack Wang <[email protected]> Danil Kipnis <[email protected]>
Description(RW) 읽으면 usage help를 반환하고 0을 쓰면 모든 statistics를 clear합니다.

Unexpected-CPU HCA interrupt statistics

116-128
항목한국어 전문 번역
What/sys/class/rtrs-client/<session-name>/paths/<src@dst>/stats/cpu_migration
Date2020년 2월
KernelVersion5.7
ContactJack Wang <[email protected]> Danil Kipnis <[email protected]>
DescriptionRTRS는 각 HCA IRQ가 별도 CPU에 pin되기를 기대합니다. 그렇지 않으면 IO response가 처음 submit된 CPU와 다른 CPU에서 처리될 수 있습니다. 이 file은 expected하지 않은 CPU에서 생성된 interrupt 수를 보여 줍니다. "from:"은 IRQ가 생성될 것으로 기대했지만 생성되지 않은 CPU이고, "to:"는 IRQ가 생성되었지만 기대하지 않았던 CPU입니다.

Path reconnect statistics

130-136
항목한국어 전문 번역
What/sys/class/rtrs-client/<session-name>/paths/<src@dst>/stats/reconnects
Date2020년 2월
KernelVersion5.7
ContactJack Wang <[email protected]> Danil Kipnis <[email protected]>
DescriptionUnsigned int 두 값을 보관합니다. 첫 번째는 path lifetime 동안 successful reconnect 수, 두 번째는 failed reconnect 수입니다.
<successful-reconnects> <failed-reconnects>

Client path RDMA statistics

138-146
항목한국어 전문 번역
What/sys/class/rtrs-client/<session-name>/paths/<src@dst>/stats/rdma
Date2020년 2월
KernelVersion5.7
ContactJack Wang <[email protected]> Danil Kipnis <[email protected]>
DescriptionRDMA operation과 inflight operation 통계를 여섯 값으로 보관합니다. 순서대로 read count, read total size, write count, write total size, inflight 수, failovered 수입니다.
<read-count> <read-total-size> <write-count> \
<write-total-size> <inflights> <failovered>
RTRS client statistics
FileOutput 또는 동작
reset_allRead: usage, write 0: 모든 통계 clear
cpu_migrationfrom expected CPU → to actual CPU interrupt count
reconnectsSuccessful count, failed count
rdmaRead/write count·size, inflights, failovered

Path-level statistic file과 핵심 field입니다.