디지털 장인정신

블로그 이미지
WebKit개발자의 혼자쓰는 블로그
스페로

Article Category

All (71)
Technology (47)
Creativity (19)
Private (4)

Recent Comment

Recent Trackback

Calendar

«   2018/06   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

Archive

My Link

  • Total325,658
  • Today1
  • Yesterday70
  1. 2012.12.12
    Profiling WebKit with Perf (1)
  2. 2011.05.25
    kcachegrind 없이 코딩 어떻게 해?

it is like oprofile but a lot nicer

sudo perf top -p PID

https://perf.wiki.kernel.org/index.php/Main_Page



result

31.37%  libQt5Gui.so.5.0.0          [.] 0xa5a08                                                                                                                           

11.69%  libnvidia-glcore.so.304.43  [.] 0x13cb53f                                                                                                                         

 7.52%  perf-18917.map              [.] 0x7f2847734593                                                                                                                    

 6.01%  [kernel]                    [k] native_write_msr_safe                                                                                                             

 2.38%  libGL.so.304.43             [.] 0x7a85d                                                                                                                           

 1.00%  [kernel]                    [k] __schedule                                                                                                                        

 0.89%  [kernel]                    [k] set_next_entity                                                                                                                   

 0.85%  libJavaScriptCore.so.1.0.0  [.] _ZNK3JSC7JSValue3getEPNS_9ExecStateENS_12PropertyNameERNS_12PropertySlotE.constprop.219                                           

 0.84%  [kernel]                    [k] __ticket_spin_lock                                                                                                                

 0.80%  [kernel]                    [k] update_curr                                                                                                                       

 0.76%  libc-2.15.so                [.] __sched_yield                                                                                                                     

 0.70%  libWebCore.so.1.0.0         [.] WebCore::WebGLSharedObject::validate(WebCore::WebGLContextGroup const*, WebCore::WebGLRenderingContext const*) const              

 0.58%  libc-2.15.so                [.] __memmove_ssse3_back                                                                                                              

 0.51%  libnvidia-tls.so.304.43     [.] 0x1c70                                                                                                                            

 0.50%  libc-2.15.so                [.] _int_malloc                                                                                                                       

 0.46%  libJavaScriptCore.so.1.0.0  [.] operationGetById                                                                                                                  

 0.43%  libJavaScriptCore.so.1.0.0  [.] cti_op_stricteq                                                                                                                   

 0.42%  [kernel]                    [k] update_shares                                                                                                                     

 0.39%  libWTF.so.1.0.0             [.] WTF::Mutex::lock()                                                                                                                

 0.38%  libWebCore.so.1.0.0         [.] WebCore::GraphicsContext3D::makeContextCurrent()                                                                                  

 0.38%  libJavaScriptCore.so.1.0.0  [.] _ZNK3JSC7JSValue3getEPNS_9ExecStateENS_12PropertyNameERNS_12PropertySlotE.constprop.425                                           

 0.37%  [kernel]                    [k] update_stats_wait_end                                                                                                             

 0.37%  [kernel]                    [k] hrtick_update                                                                                                                     

 0.37%  libglib-2.0.so.0.3200.3     [.] poll@plt                                                                                                                          

 0.36%  libWebCore.so.1.0.0         [.] WebCore::JSWebGLRenderingContext::getOwnPropertySlot(JSC::JSCell*, JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&)        

 0.36%  [kernel]                    [k] pick_next_task_fair                                                                                                               

 0.35%  [kernel]                    [k] update_cfs_load                                                                                                                   

 0.35%  libpthread-2.15.so          [.] pthread_mutex_unlock                                                                                                              

 0.35%  libJavaScriptCore.so.1.0.0  [.] cti_op_jtrue                                                                                                                      

 0.33%  [kernel]                    [k] pick_next_entity                                                                                                                  

 0.31%  libc-2.15.so                [.] __libc_enable_asynccancel                                                                                                         

 0.31%  [kernel]                    [k] sock_alloc_send_pskb                                                                                                              

 0.31%  [kernel]                    [k] rb_insert_color                                                                                                                   

 0.30%  [kernel]                    [k] __rb_erase_color                                                                                                                  

 0.30%  [kernel]                    [k] system_call                                                                                                                       

 0.30%  [kernel]                    [k] kmem_cache_alloc_node                                                                                                             

 0.29%  [kernel]                    [k] put_prev_entity                                                                                                                   

 0.29%  [kernel]                    [k] get_vmalloc_info                                                                                                                  

 0.28%  [kernel]                    [k] _raw_spin_lock                                                                                                                    

 0.26%  [kernel]                    [k] native_read_tsc                                                                                                                   

 0.24%  libQt5Core.so.5.0.0         [.] QThreadStorageData::get() const                                                                                                   

 0.23%  libWebCore.so.1.0.0         [.] WebCore::WebGLRenderingContext::handleNPOTTextures(char const*, bool)                                                             

 0.22%  [kernel]                    [k] sys_sched_yield                                                                                                                   

 0.22%  libc-2.15.so                [.] __memset_sse2                                                                                                                     

 0.22%  [kernel]                    [k] __enqueue_entity                                                                                                                  

 0.21%  libWebCore.so.1.0.0         [.] WebCore::WebGLRenderingContext::vertexAttribPointer(unsigned int, int, unsigned int, unsigned char, int, long long, int&)         

 0.21%  libxcb.so.1.1.0             [.] 0xa790                                                                                                                            

 0.20%  [kernel]                    [k] nr_blockdev_pages                                                                                                                 

 0.20%  libWebCore.so.1.0.0         [.] WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext*, WebCore::RenderLayer::LayerPaintingInfo const&, unsigned int) 

 0.20%  ld-2.15.so                  [.] __tls_get_addr                                                                                                                    

 0.20%  libc-2.15.so                [.] __strncmp_sse42                                                                                                                   

 0.19%  libWebCore.so.1.0.0         [.] WebCore::WebGLRenderingContext::sizeInBytes(unsigned int)                                                                         

 0.19%  libJavaScriptCore.so.1.0.0  [.] JSC::CodeBlock::updateAllPredictionsAndCountLiveness(JSC::OperationInProgress, unsigned int&, unsigned int&)                      

 0.18%  [kernel]                    [k] effective_load.isra.57                                                                                                            



'Technology > Webkit' 카테고리의 다른 글

Profiling WebKit with Perf  (1) 2012.12.12
High-DPI and viewport and sub pixel layout  (2) 2012.12.11
WebKit css3 animations on Accelerated Compositing  (1) 2012.10.23
WebKit Filters Animation Internal  (1) 2012.10.20
WebKit2 Injected Bundle  (1) 2012.10.15
oprofile  (2) 2012.06.02
Trackback 4 and Comment 1
우리회사의 황모씨 덕분에 아주 좋은 툴을 알게되었다.
callgrind + kcachegrind

skia의 sample 의 profile을 측정해 보았다.
그래프로 아주 이쁘게 보여준다.



사용법도 간단하다.
1. apt-get으로 callgrind와 kcachegrind 설치
2. -g 옵션으로 타겟 빌드
3. valgrind --tool=callgrind --instr-atstart=yes --dump-instr=no --simulate-cache=no --collect-jumps=yes  ./output
4. kcachegrind

Gwang-Yoon Hwang Company에게
세부정보 표시 18:41 (30분 전)
To execute Callgrind:
valgrind --tool=callgrind --instr-atstart=no --dump-instr=no --smc-check=all --collect-jumps=yes [executable] [argument]


--tool= callgrind : use callgrind tool on valgrind

--dump-instr=no : we are not interested in assembly code level.

--instr-atstart=no : do not start the instrumentation of callgrind while staring.
  Because we are only interested in the profiling while rendering webpage.

--smc-check=all : This option controls Valgrind's detection of self-modifying code.
  JIT::linkCall function modifying the jitted code, so valgrind must check self modification.

--collect-jumps=yes : Get the information for (conditional) jumps.

--main-stacksize=110000000 : set stack size

--toggle-collect=PVR::WebView:oDraw*  : Set starting method

To control instrumentation, execute below on the terminal.
callgrind_control -i on : start the instrumentation
callgrind_control -i off : end the instrumentation
callgrind_control -k : kill the Valgrind process.


Ok, output of collected data will be saved at
callgrind.out.[pid]
on the working directory.

So you can read this information from kcachegrind.


'Technology > Working Note' 카테고리의 다른 글

Qt Build  (2) 2011.09.23
Regular Expression  (1) 2011.06.06
kcachegrind 없이 코딩 어떻게 해?  (0) 2011.05.25
Wiki 문법  (0) 2011.03.08
WinCE Memory Leak 잡기  (0) 2011.03.03
Quick Reference Cards  (0) 2011.02.26
Trackback 3 and Comment 0