Hi, I am working on a project trying to evaluate the performance of a workload running on a storage device. I don't want the benchmark result depends on a specific platform (e.g., a platform with X GiB of physical memory). Because it prevents people from reproducing the same result on a different platform configuration. Think about you are benchmarking a read-heavy workload, with data caching enabled you may end up with just testing the performance of the system memory. Currently, I'm thinking how to eliminate the cache effects created by the page cache. Direct I/O is a good option for testing with a single application but is not good for testing with unknown applications/workloads. Therefore, it is not feasible to ask people to modify the application source code before running the benchmark. Making changes within the kernel may only be the option because it is transparent to all user-space applications. The problem is I don't know how to modify the kernel so that it does not use the page cache for any IOs to a specific storage device. I have tried to append a fadvise64() call with POSIX_FADV_DONTNEED to the end of each read/write system calls. The performance of this approach is far from using Direct I/O. It is also unable to eliminate the caching effects under concurrent I/Os. I'm looking for any advice here to point me an efficient way to remove the cache effects from the page cache. Thanks, Jianshen