NVMe SSD를 드라이브 자체보다 더 적은 PCIe 레인을 지원하는 슬롯에 설치하면 모델명만으로는 현재 활성화된 링크를 알 수 없습니다. 커뮤니티 스레드에서는 lspci를 사용해 장치의 PCIe 기능과 실제로 협상된 링크를 비교했습니다.
링크 기능 및 현재 링크 상태 확인
스레드에서 공유된 간단한 명령은 다음과 같습니다.


sudo lspci -vv | grep -E 'PCI bridge|LnkCap|LnkSta'
특정 PCI 장치의 버스 주소를 알고 있다면 해당 장치를 직접 확인하는 편이 일반적으로 더 쉽습니다.
sudo lspci -s 05:00.0 -vv
중요한 항목은 다음과 같습니다.
- LnkCap: 엔드포인트 또는 링크가 지원하고 광고할 수 있는 PCIe 속도와 폭입니다.
- LnkSta: 현재 협상된 속도와 레인 폭입니다.
드라이브가 더 넓은 링크로 작동할 수 있지만 LnkSta에 더 적은 레인 수가 표시된다면, 현재 플랫폼은 해당 장치를 더 좁은 협상 폭으로 실행하고 있는 것입니다.
NVMe 이름을 PCIe 주소에 매핑
원 게시자는 Linux 장치 이름을 컨트롤러 및 PCIe 주소와 연결할 때 nvme-cli의 상세 출력도 유용하다는 것을 확인했습니다.
nvme list -v
이를 통해 /dev/nvme1과 같은 항목을 lspci로 확인하는 PCI 주소와 쉽게 연결할 수 있습니다.
링크 속도는 실제 SSD 처리량과 다릅니다
LnkSta는 PCIe 협상에 관한 정보를 제공합니다. 하지만 SSD의 실제 순차 쓰기 속도, 랜덤 IOPS, 발열로 인한 스로틀링 동작 또는 지속 성능을 알려 주지는 않습니다.
실제 I/O 동작을 확인하려면 삭제해도 되는 테스트 데이터에 적절한 벤치마크를 사용하고 워크로드를 신중하게 정의하세요. fio 워크로드 문서에서는 블록 크기, 큐 깊이, 액세스 패턴, I/O 엔진 및 테스트 크기가 결과를 바꾸는 이유를 설명합니다.
필요한 데이터가 들어 있는 파일 시스템이나 디스크에서 파괴적인 원시 장치 벤치마크를 실행하지 마세요.
현재 PCIe 및 벤치마크 관련 정보
Zima PCIe 생태계는 물리적 슬롯과 실제 전기적 레인 폭의 차이를 이해하는 데 유용합니다. PCIe 확장 카드에서는 Zima 확장 프로젝트에 사용되는 NVMe 및 네트워킹 어댑터의 유형을 확인할 수 있으며, ZimaBoard 2 하드웨어는 PCIe 세대와 레인 수가 명시된 플랫폼의 구체적인 최신 사례를 제공합니다.
lspci 장치 검사 문서에서는 lspci를 PCI 버스와 장치를 검사하는 Linux 유틸리티로 정의하며, nvme-cli 장치 목록 문서에서는 nvme list -v가 컨트롤러, 네임스페이스, 전송 방식 및 PCIe 주소를 매핑하는 방법을 보여 줍니다. 버스 협상이 아닌 측정된 I/O를 확인하려면 fio 워크로드 문서를 사용하세요. 큐 깊이, 블록 크기, 읽기/쓰기 비율 및 테스트 크기에 따라 결과가 달라집니다.
요약
lspci -vv를 사용해 협상된 PCIe 세대와 레인 폭을 확인하고, nvme list -v를 사용해 NVMe 장치를 PCIe 주소에 매핑하세요. 그런 다음 실제 저장소 처리량이 필요하다면 별도로 벤치마크를 실행하세요. 협상된 링크 속도는 버스의 특성이며 SSD 성능 점수가 아닙니다.
