-
Notifications
You must be signed in to change notification settings - Fork 98
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add some performance optimizations #944
Conversation
This PR exceeds the recommended size of 1000 lines. Please make sure you are NOT addressing multiple issues with one PR. Note this PR might be rejected due to its size. |
This PR exceeds the recommended size of 1000 lines. Please make sure you are NOT addressing multiple issues with one PR. Note this PR might be rejected due to its size. |
This PR exceeds the recommended size of 1000 lines. Please make sure you are NOT addressing multiple issues with one PR. Note this PR might be rejected due to its size. |
This PR exceeds the recommended size of 1000 lines. Please make sure you are NOT addressing multiple issues with one PR. Note this PR might be rejected due to its size. |
This PR exceeds the recommended size of 1000 lines. Please make sure you are NOT addressing multiple issues with one PR. Note this PR might be rejected due to its size. |
Build Succeeded 🥳 Build Id: 55e96159-a3a9-407c-81f3-549679cab690 The following development images have been built, and will exist for the next 30 days: To build this version:
|
This adds parallel options to improve deserialization speed of
Endpoint
, andResource
.Endpoint
now has afrom_proto
andinto_proto
methods so that the current From impls continue to work as they do currently. This differences in these methods are that the protobufs now actually differentiate between ipv4/ipv6 and host, so we no longer need to parse a string in all cases, and instead just use a u32 for ipv4 and a pair of u64s for ipv6. This also saves on serialization though I'm not measuring that.Resource::Listener
=>Resource::FilterChain
. This resource doesn't see as much traffic as Cluster, but it was still low hanging fruit. The envoy listener protobuf is massive overkill since we use literally 1 field from it, in addition to filter having more fields than we used, and also not enough.quilkin/src/config.rs
Lines 824 to 825 in e44ca38
Cluster
can now take advantage of the Endpoint optimizations to give pretty significant wins.As noted, this doesn't actually change anything since these are backwards incompatible changes.