-
Notifications
You must be signed in to change notification settings - Fork 846
Replace container of HPACK dynamic table from std::vector to std::deque #6098
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
Conversation
|
Use of deque sounds reasonable to me. If I remember correctly the reason we didn't use it is that our data container policy only allowed use of std::vector from std data containers. If we allow it now, there's no reason to not use it. It should be faster than current but did you check the performance? |
|
What is the data container policy ?
… On Oct 29, 2019, at 9:25 PM, Masakazu Kitajo ***@***.***> wrote:
Use of deque sounds reasonable to me. If I remember correctly the reason we didn't use it is that our data container policy only allowed use of std::vector from std data containers. If we allow it now, there's no reason to not use it.
It should be faster than current but did you check the performance?
—
You are receiving this because your review was requested.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
Undocumented (or hard to find) policy. I'm not sure if there is a list of containers we can use, but the basic rule is this. https://issues.apache.org/jira/browse/TS-3770 |
|
As far as I know, ATS doesn't have "double-ended queue" nor any data structures which satisfy our needs here. IMO, we should add As for the benchmark, the throughput is almost same. However, from the dtrace, |
|
I don’t think you can see performance improvement with a regular throughput test. You have to do a test that involves lot of evictions.
… On Oct 30, 2019, at 12:20 AM, Masaori Koshiba ***@***.***> wrote:
As far as I know, ATS doesn't have "double-ended queue" nor any data structures which satisfy our needs here. IMO, we should add std::deque on the white list if it doesn't have. Also, we should write the policy on the cwiki or somewhere.
As for the benchmark, the throughput is almost same. However, from the dtrace, memmove on the HpackDynamicTable::_evict_overflowed_entries() like below is disappeared.
libsystem_platform.dylib`_platform_memmove$VARIANT$Haswell+0x110
traffic_server`HpackDynamicTable::_evict_overflowed_entries()+0xc9
traffic_server`HpackDynamicTable::add_header_field(MIMEField const*)+0x6e
—
You are receiving this because your review was requested.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
|
Cherry-picked to v9.0.x branch. |
The
std::dequeis an appropriate container for HPACK dynamic table. The use cases are below.All of them are O(1) with
std::deque.