NVMe SSD에 대한 fio 벤치마크의 완료 대기 시간을 계산하려고 합니다.
fio에서 벤치마크를 테스트하기 위해 다음 fio 스크립트를 만들었습니다.
다음 옵션을 사용했습니다.
rw=read, ioengine=sync, direct=1
그래서 마무리 시간에 변화를 가져올 수 있는 것이 많지 않다고 생각합니다.
그러나 결과는 내가 기대했던 것과 달랐습니다.
결과는 1번째 : 11us ~ 99.99번째 : 111us 입니다.
동기식 읽기는 뛰어난 IO를 생성하지 않으므로 모든 I/O가 순차적으로 처리됩니다.
direct 옵션은 운영 체제의 버퍼를 우회합니다.
대부분의 지연은 동일하다고 생각합니다.
이 결과에 대해 어떻게 생각하시나요?
답변1
당신이 말하는거야마이크로여기에는 초, 11마이크로초, 111마이크로초가 있습니다. 이렇게 민감한 내용을 읽는 데에는 많은 시간이 걸리지 않습니다.
- 서버가 일반 크론 작업을 수행해야 할 때라고 생각하고 일부 I/O를 다른 프로세스만큼 빠르게 처리할 수 없기 때문에 fio 프로세스가 CPU 리소스를 많이 사용하고 있습니다.
- 일부 I/O는 일종의 SSD 캐시에 있지만 나중에 I/O는 실제로 캐시 외부에서 가져와야 합니다.
- 일부 I/O 읽기는 다른 순서로 기록되고 다시 읽혀집니다(예, 작성된 순서대로 다시 읽는 것이 SSD의 경우 더 좋습니다).
- 다른 요인으로 인해 동일한 장치에 대한 I/O가 결정됩니다.
등.
귀하는 전체 작업을 포함하지 않았으므로(작업에서 또 무엇을 설정했는지 궁금하게 만드는 설정을 한 것을 알 수 있습니다 iodepth=16
) 답변에 대해 너무 많은 것을 요구하고 있습니다. 그러나 나는 판독값의 95%가 3 이내에 있다는 점을 지적하고 싶습니다.마이크로서로 몇 초 간격이므로 백만 개 미만의 I/O에서 이상값이 너무 많이 표시되지 않습니다. 비실시간 시스템이 얼마나 결정적이라고 생각하시나요?