저는 항상 약 50MB/s의 속도로 순차적으로 RAID 10 HDD 구성에 데이터를 쓰는 실시간 애플리케이션을 가지고 있습니다. mmap을 사용하며 I/O 대기로 인해 쓰기가 차단되어서는 안 됩니다.
그런 다음 때로는 대량의 읽기 버스트가 발생합니다. 예를 들어 드라이브에서 500GB의 순차 데이터를 최대한 빨리 읽고 싶습니다. 그러나 쓰기 응용 프로그램이 I/O 차단되는 원인이 될 수는 없습니다.
현재 쓰기 애플리케이션을 SCHED_FIFO로 설정한 다음 읽기 애플리케이션에서 CFQ I/O Scheduler + I/O nice를 사용하여 이 문제를 해결합니다. 이것은 잘 작동하지만 드라이브가 쓰기와 읽기를 모두 수행하기 위해 앞뒤로 많은 검색을 수행해야 하기 때문에 약간 비효율적입니다.
이를 개선할 수 있는 전략이 있는지 궁금합니다. 시스템 드라이브는 빠른 256GB SSD 드라이브입니다. 공간이 있고 읽기가 진행되는 동안 어떻게든 Linux에서 SSD에 쓰기를 수행할 수 있습니까? bcache, dmcache 또는 다른 모듈을 사용하여 이를 달성할 수 있습니까? 즉, HDD에 대한 읽기가 발생하는 동안에만 SSD에 쓰고 나중에 HDD에 플러시합니다. SSD 캐시가 "가득 차"면 HDD에 대한 쓰기가 읽기보다 높은 우선순위를 가집니다.