90 likes | 220 Views
ULKML ftrace 를 이용한 sync System Call 추적. 장보길. 한국 외국어대학교 디지털정보공학과 System Software LAB xearo@hufs.ac.kr. Ftrace 를 이용한 Sync system call 추적. Sync System call 을 발생 시키는 프로그램 작성. Ftrace 를 이용한 Sync system call 추적. 원하 는 정보만 보기 위해 Ftrace 설정 . #!/ bin/bash
E N D
ULKML ftrace를 이용한 sync System Call 추적 장보길 한국 외국어대학교 디지털정보공학과 System Software LAB xearo@hufs.ac.kr
Ftrace를 이용한 Sync system call 추적 • Sync System call을 발생 시키는 프로그램 작성.
Ftrace를 이용한 Sync system call 추적 • 원하는 정보만 보기 위해 Ftrace설정. #!/bin/bash sudo echo 0 > /debug/tracing/tracing_enabled sudo echo function_graph> /debug/tracing/current_tracer sudo echo > /debug/tracing/trace sudo echo 1 > /debug/tracing/tracing_enabled ./main & sudo echo $(cat program.pid) > /debug/tracing/set_ftrace_pid echo $(cat program.pid)
Ftrace를 이용한 Sync system call 추적 • 일정 시간이 지난 후, ftrace를 종료 하고, 결과물을 얻는다.
Ftrace를 이용한 Sync system call 추적 결과 sys_sync() -> wakeup_flusher_threads() -> bdi_has_dirty_io() …………VFS 관련 <fs/super.c>, <fs/fs-writeback.c>, <fs/sync.c>…………. -> iterate_supers() -> down_read() -> sync_one_sb() -> __sync_filesystem() -> up_read() 반복
Ftrace를 이용한 Sync system call 추적 결과 dquot_quota_sync() _cond_resched() writeback_inodes_sb() get_nr_dirty_pages() get_nr_dirty_inodes() get_nr_inodes() writeback_inodes_sb() bdi_queue_work() ………………..스케쥴 관련 함수 호출… 생략………………..
Ftrace를 이용한 Sync system call 추적 결과 ……………… physical File System Function Call……….<fs/ext4/super.c> ext4_sync_fs() flush_workqueue() __init_waitqueue_head() flush_workqueue_prep_cwqs() get_cwq.isra.18() jbd2_journal_start_commit()
Ftrace를 이용한 Sync system call 추적 결과 ……………….. 메모리 관련 Function Call……. <mm/page-writeback.c>……… __sync_blockdev() filemap_flush() { __filemap_fdatawrite_range() { do_writepages() generic_writepages() blk_start_plug(); write_cache_pages() pagevec_lookup_tag() find_get_pages_tag() blk_finish_plug() blk_flush_plug_list()
앞으로 계획 • 앞에서 확인한 함수 분석을 위한 VFS 구조에 대한 지식들을 더욱 쌓아야 함. • 실습과 소스 분석을 병행해서 스터디를 진행 할 예정임.