minio / sidekick

High Performance HTTP Sidecar Load Balancer
GNU Affero General Public License v3.0
546 stars 82 forks source link

Explore sendfile/splice support when proxying streams to avoid user-space buffer copy #101

Closed harshavardhana closed 5 months ago

harshavardhana commented 8 months ago

Expected Behavior

Limited performance changes when using sidekick or without it

Current Behavior

sidekick loses performance for READ operations, without it we are able to saturate the network properly.

Possible Solution

It may be that buffer copy from userspace to kernel space incurs performance loss.

Steps to Reproduce (for bugs)

It would be best if you had a sizable setup, and this can't be easily reproduced in smaller environments.

Context

Performance

Regression

Not really

Your Environment

latest sidekick

poornas commented 8 months ago

https://github.com/golang/go/issues/21814#issuecomment-416035580 - splice support was dropped because tcp conn is not available for src and dest while proxying

harshavardhana commented 8 months ago

I think what we can do for sidekick is to behave like a TCP proxy (LB)

harshavardhana commented 5 months ago

This is not possible for now.