Какой API можно использовать, чтобы узнать, что находится в кешах ОС?
Конечно, нет стандартного способа сделать это для любой системы posix, и я не знаю ни одного нестандартного способа, специфичного для Linux. Единственное, что вы можете знать (почти) наверняка, - это то, что файловая система будет считывать информацию, кратную размеру страницы, обычно 4 КБ. Таким образом, если ваши чтения невелики, вы можете с большой вероятностью (хотя и не наверняка) знать, что данные на соседней странице находятся в памяти.
Вы могли бы, я полагаю, делать хитрые вещи, такие как определение времени, сколько времени потребовалось для завершения системы чтения. Если это быстро, то есть 100 с или менее микросекунд, это, вероятно, было попаданием в кеш. Как только он достигнет миллисекунды или около того, это, вероятно, была ошибка кэша. Конечно, это на самом деле не очень вам помогает, и это очень и очень хрупко.
Обратите внимание, что после того, как файловая система скопировала данные в пользовательские буферы, можно сразу же сбросить буферы, хранящие данные с диска. Вероятно, это не сразу, но вы не можете сказать наверняка.
Наконец, я подхожу к @ предложению Кармастана: объясните более широкий конец, к которому вы стремитесь. Вероятно, есть способ сделать это, но тот, который вы предложили, не так ли.