Skip to content

Commit

Permalink
cop: fix time detail merge (#1258)
Browse files Browse the repository at this point in the history
* time detail merge

Signed-off-by: cfzjywxk <[email protected]>

* fix test

Signed-off-by: cfzjywxk <[email protected]>

---------

Signed-off-by: cfzjywxk <[email protected]>
  • Loading branch information
cfzjywxk authored Apr 3, 2024
1 parent 146a632 commit c2927c0
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 21 deletions.
22 changes: 6 additions & 16 deletions integration_tests/snapshot_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -321,25 +321,15 @@ func (s *testSnapshotSuite) TestSnapshotRuntimeStats() {
}
snapshot.MergeExecDetail(detail)
expect = "Get:{num_rpc:4, total_time:2s},txnLockFast_backoff:{num:2, total_time:10ms}, " +
"total_process_time: 100ms, total_wait_time: 100ms, " +
"scan_detail: {total_process_keys: 10, " +
"total_process_keys_size: 10, " +
"total_keys: 15, " +
"get_snapshot_time: 500ns, " +
"rocksdb: {delete_skipped_count: 5, " +
"key_skipped_count: 1, " +
"block: {cache_hit_count: 10, read_count: 20, read_byte: 15 Bytes}}}"
"time_detail: {total_process_time: 100ms, total_wait_time: 100ms}, " +
"scan_detail: {total_process_keys: 10, total_process_keys_size: 10, total_keys: 15, get_snapshot_time: 500ns, " +
"rocksdb: {delete_skipped_count: 5, key_skipped_count: 1, block: {cache_hit_count: 10, read_count: 20, read_byte: 15 Bytes}}}"
s.Equal(expect, snapshot.FormatStats())
snapshot.MergeExecDetail(detail)
expect = "Get:{num_rpc:4, total_time:2s},txnLockFast_backoff:{num:2, total_time:10ms}, " +
"total_process_time: 200ms, total_wait_time: 200ms, " +
"scan_detail: {total_process_keys: 20, " +
"total_process_keys_size: 20, " +
"total_keys: 30, " +
"get_snapshot_time: 1µs, " +
"rocksdb: {delete_skipped_count: 10, " +
"key_skipped_count: 2, " +
"block: {cache_hit_count: 20, read_count: 40, read_byte: 30 Bytes}}}"
"time_detail: {total_process_time: 200ms, total_wait_time: 200ms}, " +
"scan_detail: {total_process_keys: 20, total_process_keys_size: 20, total_keys: 30, get_snapshot_time: 1µs, " +
"rocksdb: {delete_skipped_count: 10, key_skipped_count: 2, block: {cache_hit_count: 20, read_count: 40, read_byte: 30 Bytes}}}"
s.Equal(expect, snapshot.FormatStats())
}

Expand Down
13 changes: 8 additions & 5 deletions util/execdetails.go
Original file line number Diff line number Diff line change
Expand Up @@ -635,6 +635,7 @@ func (td *TimeDetail) String() string {
return ""
}
buf := bytes.NewBuffer(make([]byte, 0, 16))
buf.WriteString("time_detail: {")
if td.ProcessTime > 0 {
buf.WriteString("total_process_time: ")
buf.WriteString(FormatDuration(td.ProcessTime))
Expand Down Expand Up @@ -667,17 +668,19 @@ func (td *TimeDetail) String() string {
buf.WriteString("tikv_wall_time: ")
buf.WriteString(FormatDuration(td.TotalRPCWallTime))
}
buf.WriteString("}")
return buf.String()
}

// Merge merges the time detail into itself.
// Note this function could be called concurrently.
func (td *TimeDetail) Merge(detail *TimeDetail) {
if detail != nil {
td.ProcessTime += detail.ProcessTime
td.SuspendTime += detail.SuspendTime
td.WaitTime += detail.WaitTime
td.KvReadWallTime += detail.KvReadWallTime
td.TotalRPCWallTime += detail.TotalRPCWallTime
atomic.AddInt64((*int64)(&td.ProcessTime), int64(detail.ProcessTime))
atomic.AddInt64((*int64)(&td.SuspendTime), int64(detail.SuspendTime))
atomic.AddInt64((*int64)(&td.WaitTime), int64(detail.WaitTime))
atomic.AddInt64((*int64)(&td.KvReadWallTime), int64(detail.KvReadWallTime))
atomic.AddInt64((*int64)(&td.TotalRPCWallTime), int64(detail.TotalRPCWallTime))
}
}

Expand Down

0 comments on commit c2927c0

Please sign in to comment.