mirror of
https://github.com/tiagovignatti/intel-gpu-tools.git
synced 2025-06-08 08:26:10 +00:00
intel_gpu_top: suport command line parameters and variable samples per
second This patch adds support for getopt, and adds two default parameters to it: -h to show usage notes; and -s to allow user to define number of samples to acquire per second. Manpage documentation is also adjusted accordingly. Signed-off-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
This commit is contained in:
parent
6194c75c8f
commit
09e4b0cd26
@ -4,11 +4,20 @@
|
|||||||
.SH NAME
|
.SH NAME
|
||||||
intel_gpu_top \- Display a top-like summary of Intel GPU usage
|
intel_gpu_top \- Display a top-like summary of Intel GPU usage
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
.B intel_gpu_top
|
.B intel_gpu_top
|
||||||
|
.B intel_gpu_top [ parameters ]
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
.B intel_gpu_top
|
.B intel_gpu_top
|
||||||
is a tool to display usage information of an Intel GPU. It requires root
|
is a tool to display usage information of an Intel GPU. It requires root
|
||||||
privilege to map the graphics device.
|
privilege to map the graphics device.
|
||||||
|
.SS Options
|
||||||
|
.TP
|
||||||
|
.B -s [samples per second]
|
||||||
|
number of samples to acquire per second
|
||||||
|
.TP
|
||||||
|
.B -h
|
||||||
|
show usage notes
|
||||||
.PP
|
.PP
|
||||||
Note that idle units are not
|
Note that idle units are not
|
||||||
displayed, so an entirely idle GPU will only display the ring status and
|
displayed, so an entirely idle GPU will only display the ring status and
|
||||||
|
@ -392,6 +392,23 @@ static void ring_print(struct ring *ring, unsigned long samples_per_sec)
|
|||||||
(int)((ring->full / samples_to_percent_ratio) / ring->size));
|
(int)((ring->full / samples_to_percent_ratio) / ring->size));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
usage(const char *appname)
|
||||||
|
{
|
||||||
|
printf("intel_gpu_top - Display a top-like summary of Intel GPU usage\n"
|
||||||
|
"\n"
|
||||||
|
"usage: %s [parameters]\n"
|
||||||
|
"\n"
|
||||||
|
"The following parameters apply:\n"
|
||||||
|
"[-s <samples>] samples per seconds (default %d)\n"
|
||||||
|
"[-h] show this help screen\n"
|
||||||
|
"\n",
|
||||||
|
appname,
|
||||||
|
SAMPLES_PER_SEC
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
struct pci_device *pci_dev;
|
struct pci_device *pci_dev;
|
||||||
@ -408,7 +425,32 @@ int main(int argc, char **argv)
|
|||||||
.name = "blitter",
|
.name = "blitter",
|
||||||
.mmio = 0x22030,
|
.mmio = 0x22030,
|
||||||
};
|
};
|
||||||
int i;
|
int i, ch;
|
||||||
|
int samples_per_sec = SAMPLES_PER_SEC;
|
||||||
|
|
||||||
|
/* Parse options? */
|
||||||
|
while ((ch = getopt(argc, argv, "s:h")) != -1)
|
||||||
|
{
|
||||||
|
switch (ch) {
|
||||||
|
case 's': samples_per_sec = atoi(optarg);
|
||||||
|
if (samples_per_sec < 100) {
|
||||||
|
fprintf(stderr, "Error: samples per second must be >= 100\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'h':
|
||||||
|
usage(argv[0]);
|
||||||
|
exit(0);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
fprintf(stderr, "Invalid flag %c!\n", (char)optopt);
|
||||||
|
usage(argv[0]);
|
||||||
|
exit(1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
argc -= optind;
|
||||||
|
argv += optind;
|
||||||
|
|
||||||
pci_dev = intel_get_pci_device();
|
pci_dev = intel_get_pci_device();
|
||||||
devid = pci_dev->device_id;
|
devid = pci_dev->device_id;
|
||||||
@ -432,8 +474,8 @@ int main(int argc, char **argv)
|
|||||||
for (;;) {
|
for (;;) {
|
||||||
int j;
|
int j;
|
||||||
unsigned long long t1, ti, tf;
|
unsigned long long t1, ti, tf;
|
||||||
unsigned long long def_sleep = 1000000 / SAMPLES_PER_SEC;
|
unsigned long long def_sleep = 1000000 / samples_per_sec;
|
||||||
unsigned long long last_samples_per_sec = SAMPLES_PER_SEC;
|
unsigned long long last_samples_per_sec = samples_per_sec;
|
||||||
char clear_screen[] = {0x1b, '[', 'H',
|
char clear_screen[] = {0x1b, '[', 'H',
|
||||||
0x1b, '[', 'J',
|
0x1b, '[', 'J',
|
||||||
0x0};
|
0x0};
|
||||||
@ -447,7 +489,7 @@ int main(int argc, char **argv)
|
|||||||
ring_reset(&bsd6_ring);
|
ring_reset(&bsd6_ring);
|
||||||
ring_reset(&blt_ring);
|
ring_reset(&blt_ring);
|
||||||
|
|
||||||
for (i = 0; i < SAMPLES_PER_SEC; i++) {
|
for (i = 0; i < samples_per_sec; i++) {
|
||||||
long long interval;
|
long long interval;
|
||||||
ti = gettime();
|
ti = gettime();
|
||||||
if (IS_965(devid)) {
|
if (IS_965(devid)) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user