profile remote TLB invalidations

This commit is contained in:
Balazs Gerofi
2017-07-20 22:11:30 +09:00
parent 992a292c08
commit 6714161c25
3 changed files with 15 additions and 1 deletions

View File

@ -32,7 +32,8 @@ struct profile_event {
* for each added profiled event.
*/
enum profile_event_type {
PROFILE_page_fault = PROFILE_EVENT_MIN,
PROFILE_tlb_invalidate = PROFILE_EVENT_MIN,
PROFILE_page_fault,
PROFILE_page_fault_anon_clr,
PROFILE_page_fault_file,
PROFILE_page_fault_dev_file,

View File

@ -970,6 +970,9 @@ void remote_flush_tlb_cpumask(struct process_vm *vm,
void tlb_flush_handler(int vector)
{
#ifdef PROFILE_ENABLE
unsigned long t_s = rdtsc();
#endif // PROFILE_ENABLE
int flags = cpu_disable_interrupt_save();
struct tlb_flush_entry *flush_entry = &tlb_flush_vector[vector -
@ -992,6 +995,15 @@ void tlb_flush_handler(int vector)
}
cpu_restore_interrupt(flags);
#ifdef PROFILE_ENABLE
{
unsigned long t_e = rdtsc();
profile_event_add(PROFILE_tlb_invalidate, (t_e - t_s));
if (cpu_local_var(current)->profile)
cpu_local_var(current)->profile_elapsed_ts +=
(t_e - t_s);
}
#endif // PROFILE_ENABLE
}
static void page_fault_handler(void *fault_addr, uint64_t reason, void *regs)

View File

@ -57,6 +57,7 @@ extern char *syscall_name[];
char *profile_event_names[] =
{
"remote_tlb_invalidate",
"page_fault",
"page_fault_anon_clr_mem",
"page_fault_file",