cockroachdb / cockroachdb/cockroach

backupccl: support SO_PRIORITY and/or IP_TOS

Open
#107,508 1 comment 0 reactions 0 assignees View on GitHub
A-disaster-recovery C-enhancement T-disaster-recovery
Dominant language
Go
Stars
32.5k
Forks
4.1k
PR merge metrics
PR metrics pending

Description

**Is your feature request related to a problem? Please describe.**

Customers may wish to finely control the impact (priority) that backup jobs have on production clusters. See this [internal conversation](https://cockroachlabs.slack.com/archives/C2C5FKPPB/p1689368296045329).

**Describe the solution you'd like**

The ability to specify SO_PRIORITY and/or IP_TOS, which are controls for [sockets](https://man7.org/linux/man-pages/man7/socket.7.html) and [IP networking](https://man7.org/linux/man-pages/man7/ip.7.html) respectively. The former happens in the kernel and is controlled by Linux. The latter, IIUC, is a flag attached to packets which the network can then choose to interpret.

Implementation in Go might look something like [this](https://stackoverflow.com/questions/40544096/how-to-set-socket-option-ip-tos-for-http-client-in-go-language). The options would be exposed to end users via some syntax, or as part of cloud URLs.

**Describe alternatives you've considered**

We currently offer [application-level rate-limiting](https://github.com/cockroachdb/cockroach/pull/80200) which serves a similar user story, and was used successfully to address a recent user issue.

The proposed options above options are finer-grained, and outside of the CRDB application.

**Additional context**

These options would require expert users who understand their implications.

Troubleshooting (supporting) overall backup performance would be complicated by additional variables.

These two settings may have surprising interactions with one another: https://gist.github.com/wenjianhn/0f7a9a1e36018a42515c

The above options are just a couple of many traffic-shaping options, see the linked `man` pages above.

Jira issue: CRDB-30084

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.