Skip to content

roachperf: regression on kv0/enc=false/nodes=3/cpu=32, aws but not gce #96800

Description

@nvb

kv0/enc=false/nodes=3/cpu=32 and a few related variants regressed on Feb 4th:

Screen Shot 2023-02-08 at 11 41 16 AM

This regression is only observed on AWS and not on GCE. It's also only observed on the 32 vCPU variant and not on the 8 vCPU variant.

I've determined that this was a result of #94165. When I run the benchmark and switch the kv.raft_log.non_blocking_synchronization.enabled cluster setting midway through to disable async storage writes, throughput increases.

Screen Shot 2023-02-08 at 11 40 13 AM

Interestingly, log commit latency also drops.

Screen Shot 2023-02-08 at 11 45 38 AM

One possibility is that fsyncs on AWS instance stores (with nobarrier) are fast enough that we are exceeding the Pebble SyncConcurrency of 512. This would cause the async log writes to become synchronous. I don't know why this is worse than the non-async storage write configuration. One thought is that we might be observing the overhead of the asynchronous write path (two goroutine hops) without the benefit (because we're still blocking before entering it) and so we see the throughput regression.

Another thought is that async storage writes trade-off reduced interference between writes on the same range for reduced batching of writes on the same range. In a system where the p50 fsync latency is .10ms, is this the right trade-off?

Next steps:

  • experiment with a larger SyncConcurrency
  • experiment with nobarrier disabled
  • experiment with EBS volumes

Jira issue: CRDB-24341

Metadata

Metadata

Assignees

Labels

A-kvAnything in KV that doesn't belong in a more specific category.A-roachperf-investigationIssue opened as a result of roachperf triageC-performancePerf of queries or internals. Solution not expected to change functional behavior.GA-blockerT-kvKV Teambranch-release-23.1Used to mark GA and release blockers, technical advisories, and bugs for 23.1

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions