mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-24 01:09:38 -05:00
cpuidle: haltpoll: Add trace points for guest_halt_poll_ns grow/shrink
Add trace points as are implemented in KVM host halt polling. This helps tune guest halt polling params. Signed-off-by: Eiichi Tsukata <eiichi.tsukata@nutanix.com> Acked-by: Marcelo Tosatti <mtosatti@redhat.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
b13baccc38
commit
0da11bf0ca
2 changed files with 32 additions and 0 deletions
|
@ -19,6 +19,7 @@
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/kvm_para.h>
|
#include <linux/kvm_para.h>
|
||||||
|
#include <trace/events/power.h>
|
||||||
|
|
||||||
static unsigned int guest_halt_poll_ns __read_mostly = 200000;
|
static unsigned int guest_halt_poll_ns __read_mostly = 200000;
|
||||||
module_param(guest_halt_poll_ns, uint, 0644);
|
module_param(guest_halt_poll_ns, uint, 0644);
|
||||||
|
@ -90,6 +91,7 @@ static void adjust_poll_limit(struct cpuidle_device *dev, u64 block_ns)
|
||||||
if (val > guest_halt_poll_ns)
|
if (val > guest_halt_poll_ns)
|
||||||
val = guest_halt_poll_ns;
|
val = guest_halt_poll_ns;
|
||||||
|
|
||||||
|
trace_guest_halt_poll_ns_grow(val, dev->poll_limit_ns);
|
||||||
dev->poll_limit_ns = val;
|
dev->poll_limit_ns = val;
|
||||||
} else if (block_ns > guest_halt_poll_ns &&
|
} else if (block_ns > guest_halt_poll_ns &&
|
||||||
guest_halt_poll_allow_shrink) {
|
guest_halt_poll_allow_shrink) {
|
||||||
|
@ -100,6 +102,7 @@ static void adjust_poll_limit(struct cpuidle_device *dev, u64 block_ns)
|
||||||
val = 0;
|
val = 0;
|
||||||
else
|
else
|
||||||
val /= shrink;
|
val /= shrink;
|
||||||
|
trace_guest_halt_poll_ns_shrink(val, dev->poll_limit_ns);
|
||||||
dev->poll_limit_ns = val;
|
dev->poll_limit_ns = val;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -500,6 +500,35 @@ DEFINE_EVENT(dev_pm_qos_request, dev_pm_qos_remove_request,
|
||||||
|
|
||||||
TP_ARGS(name, type, new_value)
|
TP_ARGS(name, type, new_value)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
TRACE_EVENT(guest_halt_poll_ns,
|
||||||
|
|
||||||
|
TP_PROTO(bool grow, unsigned int new, unsigned int old),
|
||||||
|
|
||||||
|
TP_ARGS(grow, new, old),
|
||||||
|
|
||||||
|
TP_STRUCT__entry(
|
||||||
|
__field(bool, grow)
|
||||||
|
__field(unsigned int, new)
|
||||||
|
__field(unsigned int, old)
|
||||||
|
),
|
||||||
|
|
||||||
|
TP_fast_assign(
|
||||||
|
__entry->grow = grow;
|
||||||
|
__entry->new = new;
|
||||||
|
__entry->old = old;
|
||||||
|
),
|
||||||
|
|
||||||
|
TP_printk("halt_poll_ns %u (%s %u)",
|
||||||
|
__entry->new,
|
||||||
|
__entry->grow ? "grow" : "shrink",
|
||||||
|
__entry->old)
|
||||||
|
);
|
||||||
|
|
||||||
|
#define trace_guest_halt_poll_ns_grow(new, old) \
|
||||||
|
trace_guest_halt_poll_ns(true, new, old)
|
||||||
|
#define trace_guest_halt_poll_ns_shrink(new, old) \
|
||||||
|
trace_guest_halt_poll_ns(false, new, old)
|
||||||
#endif /* _TRACE_POWER_H */
|
#endif /* _TRACE_POWER_H */
|
||||||
|
|
||||||
/* This part must be outside protection */
|
/* This part must be outside protection */
|
||||||
|
|
Loading…
Add table
Reference in a new issue