페이지 캐시에 접근할 때 어떤 커널 함수가 호출되나요?

페이지 캐시에 접근할 때 어떤 커널 함수가 호출되나요?

나는 애플리케이션이 있고 해당 페이지 캐시 적중/미스 수를 측정하고 싶습니다. 내가 찾은이 도구는 캐시스타트(cachestat)라고 불립니다.작성자 : Brendan Gregg 이 도구를 사용하여 4가지 특정 기능( , 및 ) ftrace의 수를 계산하여 페이지 캐시 방문 및 페이지 캐시 누락의 총 횟수를 알아보세요. 자세한 정보를 확인하실 수 있습니다mark_page_accessed()mark_buffer_dirty()add_to_page_cache_lru()account_page_dirtied()여기이지만 기본적으로 총 페이지 캐시 방문 횟수와 페이지 캐시 누락 횟수는 다음과 같이 계산할 수 있습니다.

총 방문 횟수 = 횟수 mark_page_accessed()- mark_buffer_dirty()
누락 횟수 = 횟수 add_to_page_cache_lru()- 누락 횟수account_page_dirtied()

내 시스템에서 실행할 때(커널 버전 3.10 및 4.18이 있는 두 시스템에서 테스트됨) 적중률은 음수가 됩니다. 어떤 이유에서인지 다른 두 함수의 수 add_to_page_cache_lru()보다 의 수가 mark_page_accessed()거의 0에 가깝기 때문입니다(매번 0~10번 호출됨). 5초, 나머지 두 함수는 수십만~수백만번 호출)

Brendan이 이 기사에서 설명했듯이철사, 서로 다른 커널은 서로 다른 커널 기능을 사용하여 페이지 캐시에 액세스(또는 삽입)할 수 있습니다. 페이지 캐시 액세스/누락/적중 시 호출되는 다른 함수가 무엇인지 알면 제공된 스크립트를 수정하여 코어에서 실행할 수 있다고 생각했습니다. 불행하게도 나는 Linux 커널의 기능에 대해 거의 알지 못하므로 페이지 캐시 액세스에서 어떤 기능이 호출되는지 결정하는 데 도움을 줄 수 있기를 바랐습니다.

감사해요!

관련 정보