We add a page to the page cache using add_to_page_cache_lru based on the following assumptions READ MISS - So add an entry no_cached_page - so we need to create one from do_generic_file_read - during a file read operation page_cache_read - calls add_to_page_cache_lru CREATE A PAGE struct page *__page_cache_alloc(gfp_t gfp) page has flags which identify if dirty or free Writes add_to_page_cache writepage / writepages set_page_dirty_buffers do_generic_mapping_read - ASYNC read of pages in readahed? __block_write_full_page READ find_get_pages mark_page_accessed() for measuring cache accesses mark_buffer_dirty() for measuring cache writes add_to_page_cache_lru() for measuring page additions account_page_dirtied() for measuring page dirties (mark_page_accessed - mark_buffer_dirty) & misses = (add_to_page_cache_lru - account_page_dirtied), from this I then work out the hit ratio etc. Is there any other key functions I should be tracing? add_to_page_cache_lru lru_cache_add swap.c filemap.c vmscan.c Functions used lru_cache_add_active_or_unevictable add_to_page_cache_lru putback_lru_page So best use lru_cache_add for additions. account_page_dirtied() for measuring page dirties set_page_dirty - calls above __set_page_dirty_nobuffers - calls above also mark_buffer_dirty() for measuring cache writes - this calls __set_page_dirty ( are we getting twice the calls here? ) mark_page_accessed - calls SetPageActive On Thu, Dec 10, 2015 at 9:42 AM, Allan McAleavy wrote: > Hi Folks, > > I am working on a rewrite of Brendan Greggs original cachestat (ftrace) > script into bcc. What I was looking for was a steer in the right direction > for what functions to trace. At present I trace the following. > > add_to_page_cache_lru > account_page_dirtied > mark_page_accessed > mark_buffer_dirty > > Where total = (mark_page_accessed - mark_buffer_dirty) & misses = > (add_to_page_cache_lru - account_page_dirtied), from this I then work out > the hit ratio etc. Is there any other key functions I should be tracing? > > Thanks >