Blktrace 누락 I/O 이벤트

Blktrace 누락 I/O 이벤트

나는 blktrace를 사용하여 내 장치로 이동하는 트래픽을 캡처하고 있으며 몇 가지 고통스러운 문제를 처리하고 있습니다. 여러분이 내 결과를 확인/수정할 수 있는지 궁금합니다.

blktrace에 일부 이벤트가 누락된 것 같습니다. 나는 장치에 발행된 읽기 명령에 대한 대기 시간 분포를 얻으려고 노력해 왔습니다. 나는 blkparse와 btt가 그렇게 한다는 것을 알고 있습니다. 그러나 blkparse 결과를 자세히 조사해 보면 대기 시간 수치는 실제로 명령 대 응답(D ~ C)이 아니라 응답 대 응답(C ~ C) 대기 시간인 것으로 보입니다. 또한 BTT는 응답이 없는 명령을 만나면 실패합니다(D는 있지만 C는 누락됨).

그래서 내 자신의 코드를 개발해 보았는데 응답이 없는 명령이 실행되는 경우가 많다는 것을 깨달았습니다(D는 있지만 C는 없습니다). 또한 명령 없이 응답을 받는 경우도 많습니다(C는 있지만 이전 D는 표시되지 않음). 내 결과를 확인하기 위해 nullblk 장치에서 FIO를 실행하고(DRAM을 사용하므로 매우 빠릅니다) blktrace를 활성화하여 nullblk 장치를 추적했습니다. FIO가 80GB의 데이터 쓰기를 기록할 때 blktrace는 약 50GB의 데이터만 디스크에 캡처합니다. 저는 이 결론이 다소 혼란스럽고 확실하지 않지만 작업량이 많은 경우 blktrace가 이벤트를 삭제하는 것 같습니다.

여러분도 그걸 눈치채셨나요? 누군가 내 분석이 잘못되었음을 지적하거나 내 결과를 확인해 줄 수 있나요?

내가 사용한 fio 명령은 다음과 같습니다.

sudo fio --name=seqwrite --ioengine=libaio --iodepth=1 --rw=randwrite --bs=128k --direct=0 --size=130M --numjobs=600 --runtime=300 --group_reporting

답변1

불행하게도 blktrace 요약 출력을 포함하지 않았습니다. 삭제된 이벤트 수가 0이 아닌 것으로 언급되어 있습니까? 그렇다면 이벤트를 읽을 수 있을 때까지 이벤트를 보유하는 링 버퍼가 오버플로될 가능성이 있습니다. 이 경우 다음을 사용하여 더 큰 버퍼를 요청하여 문제를 해결할 수 있습니다.--buffer-size매뉴얼 페이지에 언급된 옵션...

관련 정보