• golang 性能分析工具使用参考


    主要包含了golang 自带的几个工具的使用说明

    pprof

    • 参考命令
    go tool pprof 
    • 包含的命令
    go tool pprof --help

    支持的参数

    usage:
    Produce output in the specified format.
       pprof <format> [options] [binary] <source> ...
    Omit the format to get an interactive shell whose commands can be used
    to generate various views of a profile
       pprof [options] [binary] <source> ...
    Omit the format and provide the "-http" flag to get an interactive web
    interface at the specified host:port that can be used to navigate through
    various views of a profile.
       pprof -http [host]:[port] [options] [binary] <source> ...
    Details:
      Output formats (select at most one):
        -callgrind       Outputs a graph in callgrind format
        -comments        Output all profile comments
        -disasm          Output assembly listings annotated with samples
        -dot             Outputs a graph in DOT format
        -eog             Visualize graph through eog
        -evince          Visualize graph through evince
        -gif             Outputs a graph image in GIF format
        -gv              Visualize graph through gv
        -kcachegrind     Visualize report in KCachegrind
        -list            Output annotated source for functions matching regexp
        -pdf             Outputs a graph in PDF format
        -peek            Output callers/callees of functions matching regexp
        -png             Outputs a graph image in PNG format
        -proto           Outputs the profile in compressed protobuf format
        -ps              Outputs a graph in PS format
        -raw             Outputs a text representation of the raw profile
        -svg             Outputs a graph in SVG format
        -tags            Outputs all tags in the profile
        -text            Outputs top entries in text form
        -top             Outputs top entries in text form
        -topproto        Outputs top entries in compressed protobuf format
        -traces          Outputs all profile samples in text form
        -tree            Outputs a text rendering of call graph
        -web             Visualize graph through web browser
        -weblist         Display annotated source in a web browser
      Options:
        -call_tree       Create a context-sensitive call tree
        -compact_labels  Show minimal headers
        -divide_by       Ratio to divide all samples before visualization
        -drop_negative   Ignore negative differences
        -edgefraction    Hide edges below <f>*total
        -focus           Restricts to samples going through a node matching regexp
        -hide            Skips nodes matching regexp
        -ignore          Skips paths going through any nodes matching regexp
        -mean            Average sample value over first value (count)
        -nodecount       Max number of nodes to show
        -nodefraction    Hide nodes below <f>*total
        -noinlines       Ignore inlines.
        -normalize       Scales profile based on the base profile.
        -output          Output filename for file-based outputs
        -prune_from      Drops any functions below the matched frame.
        -relative_percentages Show percentages relative to focused subgraph
        -sample_index    Sample value to report (0-based index or name)
        -show            Only show nodes matching regexp
        -show_from       Drops functions above the highest matched frame.
        -source_path     Search path for source files
        -tagfocus        Restricts to samples with tags in range or matched by regexp
        -taghide         Skip tags matching this regexp
        -tagignore       Discard samples with tags in range or matched by regexp
        -tagshow         Only consider tags matching this regexp
        -trim            Honor nodefraction/edgefraction/nodecount defaults
        -trim_path       Path to trim from source paths before search
        -unit            Measurement units to display
      Option groups (only set one per group):
        cumulative       
          -cum             Sort entries based on cumulative weight
          -flat            Sort entries based on own weight
        granularity      
          -addresses       Aggregate at the address level.
          -filefunctions   Aggregate at the function level.
          -files           Aggregate at the file level.
          -functions       Aggregate at the function level.
          -lines           Aggregate at the source code line level.
      Source options:
        -seconds              Duration for time-based profile collection
        -timeout              Timeout in seconds for profile collection
        -buildid              Override build id for main binary
        -add_comment          Free-form annotation to add to the profile
                              Displayed on some reports or with pprof -comments
        -diff_base source     Source of base profile for comparison
        -base source          Source of base profile for profile subtraction
        profile.pb.gz         Profile in compressed protobuf format
        legacy_profile        Profile in legacy pprof format
        http://host/profile   URL for profile handler to retrieve
        -symbolize=           Controls source of symbol information
          none                  Do not attempt symbolization
          local                 Examine only local binaries
          fastlocal             Only get function names from local binaries
          remote                Do not examine local binaries
          force                 Force re-symbolization
        Binary                  Local path or build id of binary for symbolization
        -tls_cert             TLS client certificate file for fetching profile and symbols
        -tls_key              TLS private key file for fetching profile and symbols
        -tls_ca               TLS CA certs file for fetching profile and symbols
      Misc options:
       -http              Provide web interface at host:port.
                          Host is optional and 'localhost' by default.
                          Port is optional and a randomly available port by default.
       -no_browser        Skip opening a browser for the interactive web UI.
       -tools             Search path for object tools
      Legacy convenience options:
       -inuse_space           Same as -sample_index=inuse_space
       -inuse_objects         Same as -sample_index=inuse_objects
       -alloc_space           Same as -sample_index=alloc_space
       -alloc_objects         Same as -sample_index=alloc_objects
       -total_delay           Same as -sample_index=delay
       -contentions           Same as -sample_index=contentions
       -mean_delay            Same as -mean -sample_index=delay
      Environment Variables:
       PPROF_TMPDIR       Location for saved profiles (default $HOME/pprof)
       PPROF_TOOLS        Search path for object-level tools
       PPROF_BINARY_PATH  Search path for local binary files
                          default: $HOME/pprof/binaries
                          searches $name, $path, $buildid/$name, $path/$buildid
       * On Windows, %USERPROFILE% is used instead of $HOME
    • 常用命令参考
      交互模式
     
    go tool pprof -seconds 20 http://127.0.0.1:8000/debug/pprof/profile

    一般的命令
    top10 -cum list funname tree 。。。 可以通过help 查看
    web 模式

     
    go tool pprof   -http :8090  -seconds 20 http://127.0.0.1:8000/debug/pprof/profile

    trace

    • 参考命令
    go tool trace
    • 支持的命令
    Usage of 'go tool trace':
    Given a trace file produced by 'go test':
      go test -trace=trace.out pkg
    Open a web browser displaying trace:
      go tool trace [flags] [pkg.test] trace.out
    Generate a pprof-like profile from the trace:
        go tool trace -pprof=TYPE [pkg.test] trace.out
    [pkg.test] argument is required for traces produced by Go 1.6 and below.
    Go 1.7 does not require the binary argument.
    Supported profile types are:
        - net: network blocking profile
        - sync: synchronization blocking profile
        - syscall: syscall blocking profile
        - sched: scheduler latency profile
    Flags:
      -http=addr: HTTP service address (e.g., ':6060')
      -pprof=type: print a pprof-like profile instead
      -d: print debug info such as parsed events
    Note that while the various profiles available when launching
    'go tool trace' work on every browser, the trace viewer itself
    (the 'view trace' page) comes from the Chrome/Chromium project
    and is only actively tested on that browser.
    • 参考使用
      注意trace的文件需要先下载
      比如:
     
    wget -O mytrace.out http://127.0.0.1:8000/debug/pprof/trace
    go tool trace -http :8090 mytrace.out 

    说明go 的trace 是一个很强大的工具,对于性能分析是很不错的,支持goroutines,network.syscall, 同步阻塞,调度延迟

    vet&&race锁以及竟态条件处理

    参考命令

    go vet
    go run -race *.go
     
  • 相关阅读:
    C++重载运算符
    std::vector
    new、delete、动态数组初始化、野指针、解引用、内存池、重载new和delete、内存泄漏等,释放崩溃
    C++匿名函数lambda
    缺少wntdll.pdb
    map、multimap和unordered_map(hash_map)以及unorderd_multimap
    分享一个双击后编辑并AJAX提交保存的脚本
    jquery.cookie.js操作cookie
    MVC获得某个View 或者 PartialView 生成的字符串
    c#中using 和new
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/14109713.html
Copyright © 2020-2023  润新知