Skip to content
This repository was archived by the owner on Feb 26, 2021. It is now read-only.
This repository was archived by the owner on Feb 26, 2021. It is now read-only.

Meeting notes 3/20/2018 #38

@divega

Description

@divega

Attendees: @anpete @ajcvickers @bgrainger @DamianEdwards @sebastienros @divega

(feel free to make edits or reply if you have any clarification to make)

Status

MySqlConnector

A few new optimization added to MySqlConnector between 0.32 and 0.37 (thanks Bradley for joining the call!):

  • Fast path for single connection string in the pool
  • Opt out from ping to keep idle connections alive
  • Allocation reduction

Results are very encouraging:

MySqlConnector Linux Fortunes best RPS
.NET Core 2.0 Libuv + 0.32.0 19,012
.NET Core 2.0 Libuv + 0.37.0 80,754
.NET Core 2.1 Sockets + 0.32.0 70,626
.NET Core 2.1 Sockets + 0.37.0 129,195

@bgrainger has also implemented a "micro-provider" (homologous to Peregrine) for MySQL that is useful for experimenting with new features and interpolating their potential gains.

Next planned steps:

  • Lock free connection pool (~3% improvement expected)
  • Prepared and auto-prepared statements (~15% improvement expected)

Npgsql

@roji released 4.0.0 preview1 to NuGet and @sebastienros took it for a spin. These are the results:

Npgsql Linux Fortunes best RPS  
.NET Core 2.0 Libuv + 3.2.7 100,683
.NET Core 2.0 Libuv + 4.0.0 123,990
.NET Core 2.1 Sockets + 3.2.7 152,406
.NET Core 2.1 Sockets + 4.0.0 217,057

With these numbers we should land on Top 10.

Next steps for Npgsql

  • @divega to ask for a review on the lock free code
  • @sebastienros is looking at some inconsistencies between the results we get in our own runs and TE CI.

Note that for both Npgsql and MySqlConnector:

  1. We are still seeing consistently 15-20% faster perf on Windows
  2. We can't get .NET Core 2.1 bits into the official benchmarks until we are at least in RC

EF Core

@anpete has checked in a few improvements for EF Core 2.1 that reduce allocations. We don't have results yet.

Query demultiplexing (aka gating, etc.)

We discussed briefly the concept of demultiplexing identical queries issues from different requests into a single query. A couple of variations of this have been raised by @sebastienros and @anpete. Although we don't know if this would be in the spirit of the benchmarks, it sounds like it could be potentially very useful for real-world workloads, and is something we would like to pursue.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions