Dot the i's:
1 Move the debug.clock_adjust_* sysctls to debug.clock.adjust_* to make it easier to get only the clock statistics. 2 Make the sysctls read-only [suggested by Marius]. 3 When determining the new clock adjustment, we checked for an error either larger than 12.5% or smaller than 12.5%. We left out an error of exactly 12.5%. For errors larger than 12.5% we adjust the clock reload value in such a way that the next clock interrupt would be early (as in premature). For errors less than 12.5% we stopped the adjustment. The current algorithm doesn't benefit from excluding an error of exactly 12.5%. Change the code to stop adjusting the clock if the error is *not* larger than 12.5% [suggested by Marius]. Discussed with: marius@
This commit is contained in:
parent
8ca623d734
commit
a08d773359
@ -108,20 +108,22 @@ SYSCTL_OPAQUE(_debug, OID_AUTO, rdvs, CTLFLAG_RW, &rdvs, sizeof(rdvs), "IU",
|
||||
"");
|
||||
#endif
|
||||
|
||||
SYSCTL_NODE(_debug, OID_AUTO, clock, CTLFLAG_RW, 0, "clock statistics");
|
||||
|
||||
static int adjust_edges = 0;
|
||||
SYSCTL_INT(_debug, OID_AUTO, clock_adjust_edges, CTLFLAG_RW,
|
||||
SYSCTL_INT(_debug_clock, OID_AUTO, adjust_edges, CTLFLAG_RD,
|
||||
&adjust_edges, 0, "Number of times ITC got more than 12.5% behind");
|
||||
|
||||
static int adjust_excess = 0;
|
||||
SYSCTL_INT(_debug, OID_AUTO, clock_adjust_excess, CTLFLAG_RW,
|
||||
SYSCTL_INT(_debug_clock, OID_AUTO, adjust_excess, CTLFLAG_RD,
|
||||
&adjust_excess, 0, "Total number of ignored ITC interrupts");
|
||||
|
||||
static int adjust_lost = 0;
|
||||
SYSCTL_INT(_debug, OID_AUTO, clock_adjust_lost, CTLFLAG_RW,
|
||||
SYSCTL_INT(_debug_clock, OID_AUTO, adjust_lost, CTLFLAG_RD,
|
||||
&adjust_lost, 0, "Total number of lost ITC interrupts");
|
||||
|
||||
static int adjust_ticks = 0;
|
||||
SYSCTL_INT(_debug, OID_AUTO, clock_adjust_ticks, CTLFLAG_RW,
|
||||
SYSCTL_INT(_debug_clock, OID_AUTO, adjust_ticks, CTLFLAG_RD,
|
||||
&adjust_ticks, 0, "Total number of ITC interrupts with adjustment");
|
||||
|
||||
int
|
||||
@ -187,7 +189,7 @@ interrupt(u_int64_t vector, struct trapframe *tf)
|
||||
if (adj == 0)
|
||||
adjust_edges++;
|
||||
adj = ia64_clock_reload >> 4;
|
||||
} else if (delta < (ia64_clock_reload >> 3))
|
||||
} else
|
||||
adj = 0;
|
||||
} else {
|
||||
adj = 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user