Skip to content
  • Tvrtko Ursulin's avatar
    tools/intel_gpu_top: Add support for stdout logging · 47e91cc2
    Tvrtko Ursulin authored
    
    
    Two new output modes are added: listing of text data to standard out (-l
    on the command line), and dumping of JSON formatted records (-J), also to
    standard out.
    
    The first mode is selected automatically when non-interactive standard out
    is detected.
    
    Example of text output:
    
     Freq MHz      IRQ RC6 Power     IMC MiB/s           RCS/0           BCS/0           VCS/0           VCS/1          VECS/0
     req  act       /s   %     W     rd     wr       %  se  wa       %  se  wa       %  se  wa       %  se  wa       %  se  wa
       0    0        0   0  0.00    360      0    0.00   0   0    0.00   0   0    0.00   0   0    0.00   0   0    0.00   0   0
     350  350        0 100  0.00     35      2    0.00   0   0    0.00   0   0    0.00   0   0    0.00   0   0    0.00   0   0
     350  350        0 100  0.00     34      2    0.00   0   0    0.00   0   0    0.00   0   0    0.00   0   0    0.00   0   0
     350  350        0 100  0.00    143      6    0.00   0   0    0.00   0   0    0.00   0   0    0.00   0   0    0.00   0   0
     350  350        0 100  0.00    169      7    0.00   0   0    0.00   0   0    0.00   0   0    0.00   0   0    0.00   0   0
     350  350        0 100  0.00    169      7    0.00   0   0    0.00   0   0    0.00   0   0    0.00   0   0    0.00   0   0
    
    Example of JSON output:
    
    {
            "period": {
                    "duration": 1002.525224,
                    "unit": "ms"
            },
            "frequency": {
                    "requested": 349.118398,
                    "actual": 349.118398,
                    "unit": "MHz"
            },
            "interrupts": {
                    "count": 0.000000,
                    "unit": "irq/s"
            },
            "rc6": {
                    "value": 99.897752,
                    "unit": "%"
            },
            "power": {
                    "value": 0.000000,
                    "unit": "W"
            },
            "imc-bandwidth": {
                    "reads": 149.683843,
                    "writes": 6.104093,
                    "unit": "MiB/s"
            },
            "engines": {
                    "Render/3D/0": {
                            "busy": 0.000000,
                            "sema": 0.000000,
                            "wait": 0.000000,
                            "unit": "%"
                    },
                    "Blitter/0": {
                            "busy": 0.000000,
                            "sema": 0.000000,
                            "wait": 0.000000,
                            "unit": "%"
                    },
                    "Video/0": {
                            "busy": 0.000000,
                            "sema": 0.000000,
                            "wait": 0.000000,
                            "unit": "%"
                    },
                    "Video/1": {
                            "busy": 0.000000,
                            "sema": 0.000000,
                            "wait": 0.000000,
                            "unit": "%"
                    },
                    "VideoEnhance/0": {
                            "busy": 0.000000,
                            "sema": 0.000000,
                            "wait": 0.000000,
                            "unit": "%"
                    }
            }
    }
    
    v2:
     * Show example output in commit message.
     * Install signal handler to complete output on SIGINT. (Chris Wilson)
    
    v3:
     * Use asprintf where possible. (Chris Wilson)
    
    v4:
     * Check asprintf return value, not the pointer.
     * Rename fmt_d/dd to fmt_width/precision. (Chris Wilson)
    
    Signed-off-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
    References: https://bugs.freedesktop.org/show_bug.cgi?id=108689
    
    
    Cc: Eero Tamminen <eero.t.tamminen@intel.com>
    Cc: 3.14pi@ukr.net
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    47e91cc2