CHAPTER 01
1. 재현 계약과 실험 행렬을 먼저 고정한다
보드 revision, silicon stepping, firmware/kernel/DTB hash, 전원 방식, 주변장치와 환경을 고정하고 성공·실패를 숫자로 정의합니다. 한 번에 한 축만 바꿔 원인 가설을 반증할 수 있게 만듭니다.
identity
보드와 binary를 다시 식별할 수 있는 값이 없으면 두 결과를 비교할 수 없습니다.
stimulus
명령뿐 아니라 packet 수, size, rate, 방향과 시작 조건을 적습니다.
acceptance
로그 문구가 아니라 timeout, loss율, negotiated speed와 latency 상한으로 판정합니다.
matrix
cold/warm, idle/load, feature on/off를 직교 조합으로 구성합니다.
기록 항목과 판정 기준
| 항목 | 수집 방법 | 필수 metadata | 통과 기준 | 누락 시 위험 |
|---|---|---|---|---|
| board identity | EEPROM/라벨/회로 revision | serial, rev, BOM option | 시험마다 명시 | 서로 다른 보드를 같은 결과로 합침 |
| software identity | git/config/hash | bootloader, kernel, DTB, rootfs | artifact hash 고정 | 재빌드 차이 누락 |
| stimulus | 자동 실행 script | seed, count, rate, peer | 동일 입력 재생 | 재현율 계산 불가 |
| environment | 센서/계측기 | 전압, 온도, cable, endpoint | 허용 범위 안 | 환경 민감성 누락 |
| acceptance | counter/timestamp | threshold와 반복 횟수 | 자동 pass/fail | 사후 주관 판정 |
실패한 실험을 바로잡는 표
| 증상 | 문제점 | 다시 고정할 변수 | 재시험 | 유효한 결론 |
|---|---|---|---|---|
| 재현율이 매번 다름 | 변수가 고정되지 않음 | identity/environment | 동일 artifact로 100회 | 조건별 실패율 |
| 정상/실패 기준이 바뀜 | 판정이 사후 결정 | acceptance threshold | 시험 전 기준 선언 | 비교 가능한 결과 |
| 한 수정에 여러 변경 | 원인 분리 불가 | single variable | 변경을 하나씩 revert | 필요 조건 |
| 특정 보드만 실패 | sample metadata 없음 | serial/BOM/lot | 보드별 matrix | 제조/설계 경계 |
| warm만 성공 | 초기 상태가 다름 | cold/warm reset 범위 | 전원 완전 방전 포함 | 잔존 상태 의존 |
실제 검증 절차
| 순서 | 실행 | 남길 증거 | 판정 목적 |
|---|---|---|---|
| 1 | 한 시험을 재생하는 명령과 artifact hash를 manifest로 만듭니다. | identity manifest | 재현 기반 |
| 2 | pass/fail 수치를 실행 전에 선언합니다. | acceptance 파일 | 사후 편향 방지 |
| 3 | 각 조건을 최소 반복해 실패율과 신뢰구간을 기록합니다. | 조건별 통계 | 희박 오류 확인 |
| 4 | 한 변수만 바꾼 paired run을 수행합니다. | 전후 차이 | 가설 반증 |
주의정상 로그와 비슷해 보인다는 판단은 acceptance criterion이 아닙니다.
공개적으로 다시 확인할 수 있는 자료
공개되지 않은 vendor register나 integration별 offset을 추측해서 채우지 않았습니다. 아래 제조사 자료, architecture 문서와 Linux v6.18.37 원본에서 다시 확인할 수 있는 범위만 사용했습니다.
Linux ftrace
trace_marker, function graph와 event tracing
Linux DMA API HOWTO
DMA mapping, ownership과 cache synchronization
Linux PCIe AER
PCIe hierarchy error source와 recovery
Linux fault injection
allocation, I/O와 driver 오류 경로 검증