* [PATCH umr] Prevent reading sensors far too quickly. @ 2017-04-12 13:10 Tom St Denis [not found] ` <20170412131044.8556-1-tom.stdenis-5C7GfCeVMHo@public.gmane.org> 0 siblings, 1 reply; 2+ messages in thread From: Tom St Denis @ 2017-04-12 13:10 UTC (permalink / raw) To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW; +Cc: Tom St Denis On platforms without GPU_POWER sensors the thread reading sensors would proceed far too quickly. So it is now rate limited to 50Hz to be consistent. Signed-off-by: Tom St Denis <tom.stdenis@amd.com> --- src/app/top.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/app/top.c b/src/app/top.c index 96e33ff2e1da..364180eb70f6 100644 --- a/src/app/top.c +++ b/src/app/top.c @@ -293,18 +293,24 @@ static volatile struct umr_bitfield *sensor_bits = NULL; static void *gpu_sensor_thread(void *data) { struct umr_asic asic = *((struct umr_asic*)data); - int size, rem, off, x; + int size, rem, off, x, power; char fname[128]; + struct timespec ts; + + ts.tv_sec = 0; + ts.tv_nsec = 1000000000UL / 50; // limit to 50Hz snprintf(fname, sizeof(fname)-1, "/sys/kernel/debug/dri/%d/amdgpu_sensors", asic.instance); asic.fd.sensors = open(fname, O_RDWR); while (!sensor_thread_quit) { rem = sizeof gpu_power_data; off = 0; + power = 0; for (x = 0; sensor_bits[x].regname; ) { switch (sensor_bits[x].start) { case AMDGPU_PP_SENSOR_GPU_POWER: size = 16; + power = 1; break; default: size = 4; @@ -316,6 +322,10 @@ static void *gpu_sensor_thread(void *data) rem -= size; x += size / 4; } + + // sleep for 20ms if no GPU power sensor to rate limit things a bit + if (!power) + nanosleep(&ts, NULL); } close(asic.fd.sensors); return NULL; -- 2.12.0 _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply related [flat|nested] 2+ messages in thread
[parent not found: <20170412131044.8556-1-tom.stdenis-5C7GfCeVMHo@public.gmane.org>]
* Re: [PATCH umr] Prevent reading sensors far too quickly. [not found] ` <20170412131044.8556-1-tom.stdenis-5C7GfCeVMHo@public.gmane.org> @ 2017-04-12 14:13 ` Edward O'Callaghan 0 siblings, 0 replies; 2+ messages in thread From: Edward O'Callaghan @ 2017-04-12 14:13 UTC (permalink / raw) To: Tom St Denis, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW [-- Attachment #1.1.1: Type: text/plain, Size: 1751 bytes --] Reviewed-by: Edward O'Callaghan <funfunctor-dczkZgxz+BNUPWh3PAxdjQ@public.gmane.org> On 04/12/2017 11:10 PM, Tom St Denis wrote: > On platforms without GPU_POWER sensors the thread reading sensors would proceed > far too quickly. So it is now rate limited to 50Hz to be consistent. > > Signed-off-by: Tom St Denis <tom.stdenis-5C7GfCeVMHo@public.gmane.org> > --- > src/app/top.c | 12 +++++++++++- > 1 file changed, 11 insertions(+), 1 deletion(-) > > diff --git a/src/app/top.c b/src/app/top.c > index 96e33ff2e1da..364180eb70f6 100644 > --- a/src/app/top.c > +++ b/src/app/top.c > @@ -293,18 +293,24 @@ static volatile struct umr_bitfield *sensor_bits = NULL; > static void *gpu_sensor_thread(void *data) > { > struct umr_asic asic = *((struct umr_asic*)data); > - int size, rem, off, x; > + int size, rem, off, x, power; > char fname[128]; > + struct timespec ts; > + > + ts.tv_sec = 0; > + ts.tv_nsec = 1000000000UL / 50; // limit to 50Hz > > snprintf(fname, sizeof(fname)-1, "/sys/kernel/debug/dri/%d/amdgpu_sensors", asic.instance); > asic.fd.sensors = open(fname, O_RDWR); > while (!sensor_thread_quit) { > rem = sizeof gpu_power_data; > off = 0; > + power = 0; > for (x = 0; sensor_bits[x].regname; ) { > switch (sensor_bits[x].start) { > case AMDGPU_PP_SENSOR_GPU_POWER: > size = 16; > + power = 1; > break; > default: > size = 4; > @@ -316,6 +322,10 @@ static void *gpu_sensor_thread(void *data) > rem -= size; > x += size / 4; > } > + > + // sleep for 20ms if no GPU power sensor to rate limit things a bit > + if (!power) > + nanosleep(&ts, NULL); > } > close(asic.fd.sensors); > return NULL; > [-- Attachment #1.2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 819 bytes --] [-- Attachment #2: Type: text/plain, Size: 154 bytes --] _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2017-04-12 14:13 UTC | newest] Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2017-04-12 13:10 [PATCH umr] Prevent reading sensors far too quickly Tom St Denis [not found] ` <20170412131044.8556-1-tom.stdenis-5C7GfCeVMHo@public.gmane.org> 2017-04-12 14:13 ` Edward O'Callaghan
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.