X-Git-Url: http://git.iain.cx/?a=blobdiff_plain;f=state%2Fstate.go;h=4df68d259a52cf74d4e0541496038264cb220799;hb=5b2ab1f1d0e4066b9ed416fc7c829ab75b33870c;hp=03d99381891f3909c8a5d75e1b394adc09e74bc4;hpb=38376bf5db9af25660b8183b2c022d079bb2b5ea;p=pstop.git diff --git a/state/state.go b/state/state.go index 03d9938..4df68d2 100644 --- a/state/state.go +++ b/state/state.go @@ -75,14 +75,35 @@ func (state *State) Setup(dbh *sql.DB) { // do a fresh collection of data and then update the initial values based on that. func (state *State) ResetDBStatistics() { + // collect all initial values on startup / reset state.fsbi.Collect(state.dbh) - state.fsbi.UpdateInitialValues() - state.tlwsbt.Collect(state.dbh) - state.tlwsbt.UpdateInitialValues() - state.tiwsbt.Collect(state.dbh) + + state.UpdateInitialValues() +} + +func (state *State) UpdateInitialValues() { + start := time.Now() + state.fsbi.UpdateInitialValues() + state.tlwsbt.UpdateInitialValues() state.tiwsbt.UpdateInitialValues() + lib.Logger.Println("state.UpdateInitialValues() took", time.Duration(time.Since(start)).String()) +} + +// Only collect the data we are looking at. +func (state *State) Collect() { + start := time.Now() + + switch state.show { + case showLatency, showOps: + state.tiwsbt.Collect(state.dbh) + case showIO: + state.fsbi.Collect(state.dbh) + case showLocks: + state.tlwsbt.Collect(state.dbh) + } + lib.Logger.Println("state.Collect() took", time.Duration(time.Since(start)).String()) } func (state State) MySQLVersion() string { @@ -198,8 +219,6 @@ func (state State) displayLine1() { } func (state *State) displayOpsOrLatency() { - state.tiwsbt.Collect(state.dbh) - state.screen.PrintAt(0, 2, state.tiwsbt.Headings()) max_rows := state.screen.Height() - 3 @@ -224,8 +243,6 @@ func (state *State) displayOpsOrLatency() { // show actual I/O latency values func (state State) displayIO() { - state.fsbi.Collect(state.dbh) - state.screen.PrintAt(0, 2, state.fsbi.Headings()) // print out the data @@ -250,8 +267,6 @@ func (state State) displayIO() { } func (state *State) displayLocks() { - state.tlwsbt.Collect(state.dbh) - state.screen.PrintAt(0, 2, state.tlwsbt.Headings()) // print out the data