Linux 커널 문서에서 부팅 매개변수를 인용하면 다음과 같습니다.
pcie_bus_perf: 장치 MPS를 상위 버스를 기준으로 허용되는 최대 MPS로 설정합니다. 또한 최상의 성능을 위해 MRRS(최대 읽기 요청 크기)를 지원되는 최대 값(장치 또는 버스가 지원할 수 있는 MPS보다 크지 않음)으로 설정하십시오.
"최고의 성능을 위해" MRRS가 MPS보다 커지면 안되는 이유를 이해할 수 없습니다.
즉, 장치가 MPS=X 및 MRRS=4를 수행할 수 있다면 만족도는 4입니다.
분할로 인해 어딘가에 상당한 오버헤드가 발생합니까?
그런데, 저는 "공정한 공유"의 개념과 대규모 MRRS가 공유에 미치는 영향에 대해 알고 있었지만 결코 이해하지 못했습니다.정당한 몫동의어최고의 쇼.
답변1
답을 찾으시길 바라면서 도움이 될 만한 정보를 찾았습니다.
이것커널 메일링 리스트 토론이기사이 질문을 참조하면 MRRS를 설정하면 장치가 읽기 요청을 보내는 장치의 MPS보다 큰 완료 패킷 크기(응답)로 읽기 요청을 보내지 않도록 보장한다는 설명이 있습니다. 이것이 보장되면 각 노드는 자신 위에 있는 노드의 MPS를 자신의 MPS로 가질 수 있습니다(위 노드의 MPS보다 낮은 경우 장치에서 지원하는 가장 높은 MPS로 만듭니다). 따라서 MPS가 매우 낮은 노드는 전체 버스 속도를 늦출 수 없습니다.
토론에서 나온 이 다이어그램은 문제를 이해하는 데 도움이 되었습니다.
정상:
root (MPS=128)
|
------------------
/ \
bridge0 (MPS=128) bridge1 (MPS=128)
/ \
EP0 (MPS=128) EP1 (MPS=128)
성능:
root (MPS=256)
|
------------------
/ \
bridge0 (MPS=256) bridge1 (MPS=128)
/ \
EP0 (MPS=256) EP1 (MPS=128)
EP1을 제외한 각 노드는 128바이트보다 높은 MPS를 처리할 수 있습니다.