Skip to content
DrZix edited this page Oct 23, 2015 · 13 revisions

##형식?

kprobe 가능한지 확인

  1. /proc/kallsym 체크
  2. /sys/kernel/debug/kprobes/blacklist 체크

##Event list

###task

  1. task.create -> count
  • _do_fork, 검증 필요, pid이용해 테스트
  1. task.exit -> count
  • do_exit
  1. task.switch -> count
  • prepare_task_switch(rq, prev, next) -> 불가능
  • finish_task_switch(prev) -> 가능
  1. task.exec -> count
  • do_execveat_common.isra.34 -> 대부분의 피씨에서 제너럴하게 쓰이는 함수인 것인지 모르겠다.
    speed(rate) = count/sec
    size

###memory

  1. memory.alloc -> count, size
  • __kmalloc
  1. memory.free -> count
  • kfree
  1. memory.alloc_page -> count, size
  • NUMA CONFIG - __alloc_pages_nodemask (order를 이용하여 사이즈 계산)
  1. memory.free_page -> count, size
  • free_hot_cold_page : order 0일때 호출
  • __free_pages_ok : order 체크
  1. memroy.reclaim -> count

####reclaim

  1. background reclaim
  • kswapd
  • watermark가 있어서 메로리 할당할때 watermark를 체크해두고 high, low, min이 있고 low가 됬을때 background reclaim을 함,low가 됬을때 kswapd 커널스레드가 메로리를 high만큼 회수한후 sleep
  • balance_pgdat
  1. direct reclaim
  • min만큼 떨어지면 메모리를 할당하려는 process에게 직접 reclaim을 하게 함
  • try_to_free_pages

###fs

  1. fs.pagecache__access
  • perf read callback을 사용해 callchain[0]이 do_generic_file_read -> 틀림
  • vfs_read 를 체크하는게 좋을듯
  • pagecache_get_page (callchain check 필요)
    • __vfs_read read
    • __do_fork read
    • __find_get_block
    • ext4_da_write_begin
    • ummap_underlyting_metadata
  • 일단은 다재고 나중에 필요하면 __vfs_read만 체크
  1. fs.pagecache__miss
  • do_generic_file_read안에서 불려야함
  • page_cache_sync_readahead (callchain check 필요)
  1. fs.read_ahead
  • __do_page_cache_readahead
  1. fs.page_writeback (write를 몰아서 한번에)
  • background writeback wakeup
    • wb_start_background_writeback
  • per indoe (파일단위로) - __writeback_single_inode

###disk

  1. io.disk__read -> size
  2. io.disk__write -> size

###network

  1. net.packet__send -> size
  2. net.packet__recv -> size

##func expression

count( ) speed( )

ex) count(task.create) > 100 and (speed(task.create) <= 5 or count(task.exit) >10)