세 가지 다른 I/O 스케줄러인 "noop", "cfq" 및 "deadline"을 비교하고 무작위 읽기 및 쓰기에 대해 비교해 보겠습니다. 지금까지 내가 찾은 유일한 의미 있는 사례는 다음과 같습니다.
- 읽기: 캐싱 및 동기화 사용
- 읽기: 캐시 없음 및 동기화 있음
- 읽기: 캐시 없음 및 동기화 없음
- 읽기: 캐시 및 비동기화.
(위의 모든 내용은 순서대로 또는 비순서적으로)
그리고
- 쓰기: 캐시 사용
- 쓰기: 캐싱 없이
(여기에서도 순차적인 것과 비순차적인 것이 관련이 있다고 생각합니다)
단일 스레드 및 다중 스레드 쓰기 테스트를 수행할 계획입니다.
질문 1:
테스트할 다른 의미 있는 사례를 놓쳤습니까?
질문 2:
글을 쓸 때 무작위 데이터를 반복해서 쓰는 것과 특정 문자만 쓰는 것 사이에 의미 있는 차이가 있다고 예상해야 합니까?
Q3:
조사할 가치가 있는 흥미로운 청크 크기는 무엇입니까? 몇 개의 블록을 쓰거나 읽어야 하나요? 벤치마크 중에 읽고 쓰는 블록 수를 다양하게 변경해야 합니까, 아니면 각 사례에 대해 일관된 크기를 사용하는 것이 더 낫습니까? 즉, 벤치마크 사용
- 블록 크기 = 512
- 블록 크기 = 1024...
아니면 첫 번째 읽기가 특정 숫자에 대한 것이고 다음 읽기가 다른 숫자의 블록에 대한 것일 때 무슨 일이 일어나는지 보는 것이 더 흥미롭습니까? 2로 나누어지지 않는 블록 크기를 시도해야 합니까?
물론 Q1 외에도 이러한 많은 질문에 대한 답은 단순히 더 많은 테스트를 실행하여 확인할 수 있습니다. 다만 불필요한 벤치마크는 지양하고 관련 데이터에 좀 더 질적으로 집중할 수 있기를 바랄 뿐입니다. 실행할 수 있는 테스트 조합이 너무 많습니다.