요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
Path state and lifecycle controls
sysfs-class-rtrs-client:48-75Path 연결 상태를 읽고 blocking reconnect·disconnect 또는 disconnect 후 session에서 제거하는 operation을 실행합니다.
Path HCA and address identity
sysfs-class-rtrs-client:77-99Connection에 사용 중인 HCA name·port와 source·destination address를 read-only metadata로 제공합니다.
Latency and CPU migration statistics
sysfs-class-rtrs-client:101-128Heartbeat round-trip으로 current latency를 계산하고 통계 reset과 expected CPU에서 벗어난 HCA IRQ migration 횟수를 제공합니다.
Reconnect and RDMA statistics
sysfs-class-rtrs-client:130-146Path lifetime의 successful·failed reconnect 수와 read/write count·size, inflight, failovered RDMA 통계를 제공합니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
What: /sys/class/rtrs-client
Date: Feb 2020
KernelVersion: 5.7
Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
Description: When a user of RTRS API creates a new session, a directory entry with
the name of that session is created under /sys/class/rtrs-client/<session-name>/
What: /sys/class/rtrs-client/<session-name>/add_path
Date: Feb 2020
KernelVersion: 5.7
Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
Description: RW, adds a new path (connection) to an existing session. Expected format is the
following::
<[source addr,]destination addr>
*addr ::= [ ip:<ipv4|ipv6> | gid:<gid> ]
What: /sys/class/rtrs-client/<session-name>/max_reconnect_attempts
Date: Feb 2020
KernelVersion: 5.7
Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
Description: Maximum number reconnect attempts the client should make before giving up
after connection breaks unexpectedly.
What: /sys/class/rtrs-client/<session-name>/mp_policy
Date: Feb 2020
KernelVersion: 5.7
Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
Description: Multipath policy specifies which path should be selected on each IO:
round-robin (0):
select path in per CPU round-robin manner.
min-inflight (1):
select path with minimum inflights.
min-latency (2):
select path with minimum latency.
What: /sys/class/rtrs-client/<session-name>/paths/
Date: Feb 2020
KernelVersion: 5.7
Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
Description: Each path belonging to a given session is listed here by its source and
destination address. When a new path is added to a session by writing to
the "add_path" entry, a directory <src@dst> is created.
What: /sys/class/rtrs-client/<session-name>/paths/<src@dst>/state
Date: Feb 2020
KernelVersion: 5.7
Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
Description: RO, Contains "connected" if the session is connected to the peer and fully
functional. Otherwise the file contains "disconnected"
What: /sys/class/rtrs-client/<session-name>/paths/<src@dst>/reconnect
Date: Feb 2020
KernelVersion: 5.7
Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
Description: Write "1" to the file in order to reconnect the path.
Operation is blocking and returns 0 if reconnect was successful.
What: /sys/class/rtrs-client/<session-name>/paths/<src@dst>/disconnect
Date: Feb 2020
KernelVersion: 5.7
Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
Description: Write "1" to the file in order to disconnect the path.
Operation blocks until RTRS path is disconnected.
What: /sys/class/rtrs-client/<session-name>/paths/<src@dst>/remove_path
Date: Feb 2020
KernelVersion: 5.7
Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
Description: Write "1" to the file in order to disconnected and remove the path
from the session. Operation blocks until the path is disconnected
and removed from the session.
What: /sys/class/rtrs-client/<session-name>/paths/<src@dst>/hca_name
Date: Feb 2020
KernelVersion: 5.7
Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
Description: RO, Contains the name of HCA the connection established on.
What: /sys/class/rtrs-client/<session-name>/paths/<src@dst>/hca_port
Date: Feb 2020
KernelVersion: 5.7
Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
Description: RO, Contains the port number of active port traffic is going through.
What: /sys/class/rtrs-client/<session-name>/paths/<src@dst>/src_addr
Date: Feb 2020
KernelVersion: 5.7
Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
Description: RO, Contains the source address of the path
What: /sys/class/rtrs-client/<session-name>/paths/<src@dst>/dst_addr
Date: Feb 2020
KernelVersion: 5.7
Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
Description: RO, Contains the destination address of the path
What: /sys/class/rtrs-client/<session-name>/paths/<src@dst>/cur_latency
Date: Feb 2020
KernelVersion: 5.7
Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
Description: RO, Contains the latency time calculated by the heart-beat messages.
Whenever the client sends heart-beat message, it checks the time gap
between sending the heart-beat message and receiving the ACK.
This value can be changed regularly.
What: /sys/class/rtrs-client/<session-name>/paths/<src@dst>/stats/reset_all
Date: Feb 2020
KernelVersion: 5.7
Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
Description: RW, Read will return usage help, write 0 will clear all the statistics.
What: /sys/class/rtrs-client/<session-name>/paths/<src@dst>/stats/cpu_migration
Date: Feb 2020
KernelVersion: 5.7
Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
Description: RTRS expects that each HCA IRQ is pinned to a separate CPU. If it's
not the case, the processing of an I/O response could be processed on a
different CPU than where it was originally submitted. This file shows
how many interrupts where generated on a non expected CPU.
"from:"
is the CPU on which the IRQ was expected, but not generated.
"to:"
is the CPU on which the IRQ was generated, but not expected.
What: /sys/class/rtrs-client/<session-name>/paths/<src@dst>/stats/reconnects
Date: Feb 2020
KernelVersion: 5.7
Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
Description: Contains 2 unsigned int values, the first one records number of successful
reconnects in the path lifetime, the second one records number of failed
reconnects in the path lifetime.
What: /sys/class/rtrs-client/<session-name>/paths/<src@dst>/stats/rdma
Date: Feb 2020
KernelVersion: 5.7
Contact: Jack Wang <[email protected]> Danil Kipnis <[email protected]>
Description: Contains statistics regarding rdma operations and inflight operations.
The output consists of 6 values::
<read-count> <read-total-size> <write-count> \
<write-total-size> <inflights> <failovered>
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
RTRS client session directory
1-6| 항목 | 한국어 전문 번역 |
|---|---|
| What | /sys/class/rtrs-client |
| Date | 2020년 2월 |
| KernelVersion | 5.7 |
| Contact | Jack Wang <[email protected]> Danil Kipnis <[email protected]> |
| Description | RTRS 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 |
| Date | 2020년 2월 |
| KernelVersion | 5.7 |
| Contact | Jack 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 |
| Date | 2020년 2월 |
| KernelVersion | 5.7 |
| Contact | Jack Wang <[email protected]> Danil Kipnis <[email protected]> |
| Description | Connection이 예기치 않게 끊어진 뒤 client가 포기하기 전에 시도할 maximum reconnect 횟수입니다. |
RTRS multipath selection policy
25-38| 항목 | 한국어 전문 번역 |
|---|---|
| What | /sys/class/rtrs-client/<session-name>/mp_policy |
| Date | 2020년 2월 |
| KernelVersion | 5.7 |
| Contact | Jack 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를 선택합니다. |
Policy numeric value와 per-IO path selection 기준입니다.
Session path directories
40-46| 항목 | 한국어 전문 번역 |
|---|---|
| What | /sys/class/rtrs-client/<session-name>/paths/ |
| Date | 2020년 2월 |
| KernelVersion | 5.7 |
| Contact | Jack Wang <[email protected]> Danil Kipnis <[email protected]> |
| Description | 해당 session에 속한 각 path를 source와 destination address로 나열합니다. add_path entry에 새 path를 쓰면 <src@dst> directory를 생성합니다. |
Session 아래 source@destination connection별 path directory가 배치됩니다.
RTRS path connection state
48-53| 항목 | 한국어 전문 번역 |
|---|---|
| What | /sys/class/rtrs-client/<session-name>/paths/<src@dst>/state |
| Date | 2020년 2월 |
| KernelVersion | 5.7 |
| Contact | Jack 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 |
| Date | 2020년 2월 |
| KernelVersion | 5.7 |
| Contact | Jack Wang <[email protected]> Danil Kipnis <[email protected]> |
| Description | Path를 reconnect하려면 1을 씁니다. Operation은 blocking이며 reconnect가 성공하면 0을 반환합니다. |
Disconnect an RTRS path
62-67| 항목 | 한국어 전문 번역 |
|---|---|
| What | /sys/class/rtrs-client/<session-name>/paths/<src@dst>/disconnect |
| Date | 2020년 2월 |
| KernelVersion | 5.7 |
| Contact | Jack Wang <[email protected]> Danil Kipnis <[email protected]> |
| Description | Path를 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 |
| Date | 2020년 2월 |
| KernelVersion | 5.7 |
| Contact | Jack Wang <[email protected]> Danil Kipnis <[email protected]> |
| Description | Path를 disconnect하고 session에서 제거하려면 1을 씁니다. Path가 disconnected되고 session에서 제거될 때까지 operation이 block됩니다. |
세 write control의 blocking 동작과 결과입니다.
Path HCA name
77-81| 항목 | 한국어 전문 번역 |
|---|---|
| What | /sys/class/rtrs-client/<session-name>/paths/<src@dst>/hca_name |
| Date | 2020년 2월 |
| KernelVersion | 5.7 |
| Contact | Jack 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 |
| Date | 2020년 2월 |
| KernelVersion | 5.7 |
| Contact | Jack 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 |
| Date | 2020년 2월 |
| KernelVersion | 5.7 |
| Contact | Jack 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 |
| Date | 2020년 2월 |
| KernelVersion | 5.7 |
| Contact | Jack Wang <[email protected]> Danil Kipnis <[email protected]> |
| Description | (RO) Path의 destination address를 보관합니다. |
Connection이 사용하는 adapter, port와 endpoint address입니다.
Heartbeat-derived path latency
101-108| 항목 | 한국어 전문 번역 |
|---|---|
| What | /sys/class/rtrs-client/<session-name>/paths/<src@dst>/cur_latency |
| Date | 2020년 2월 |
| KernelVersion | 5.7 |
| Contact | Jack Wang <[email protected]> Danil Kipnis <[email protected]> |
| Description | (RO) Heartbeat message로 계산한 latency time을 보관합니다. Client가 heartbeat를 보낼 때마다 전송 시점과 ACK 수신 시점 사이의 time gap을 확인하므로 값은 정기적으로 바뀔 수 있습니다. |
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 |
| Date | 2020년 2월 |
| KernelVersion | 5.7 |
| Contact | Jack 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 |
| Date | 2020년 2월 |
| KernelVersion | 5.7 |
| Contact | Jack Wang <[email protected]> Danil Kipnis <[email protected]> |
| Description | RTRS는 각 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 |
| Date | 2020년 2월 |
| KernelVersion | 5.7 |
| Contact | Jack Wang <[email protected]> Danil Kipnis <[email protected]> |
| Description | Unsigned 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 |
| Date | 2020년 2월 |
| KernelVersion | 5.7 |
| Contact | Jack Wang <[email protected]> Danil Kipnis <[email protected]> |
| Description | RDMA 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>
Path-level statistic file과 핵심 field입니다.
Session and multipath configuration
sysfs-class-rtrs-client:1-46Session directory에 source/destination path를 추가하고 reconnect limit와 round-robin·min-inflight·min-latency policy를 설정합니다.