[native] Transfer idle HTTPSession between IO threads in exchange source#22903
[native] Transfer idle HTTPSession between IO threads in exchange source#22903Yuhta wants to merge 1 commit intoprestodb:masterfrom
Conversation
|
This pull request was exported from Phabricator. Differential Revision: D57842433 |
… source (prestodb#22903) Summary: Currently each endpoint (server) has only one `SessionPool`, which can only be attached to one `EventBase`. If there is some skewness among the distribution (i.e. too many endpoints being attached to one event base), that event base would become bottleneck and cause regression in query wall time. Fix this by creating one `SessionPool` for each endpoint and event base pair. Allow transfer of idle session between different event bases by using `ServerIdleSessionController`. This way we eliminate the bottleneck in event base while still keep the `HttpSession`s reusable. After the fix, enabling connection pool should no longer cause any regression to wall time. The SSL handshake cost (`EVP_DigestSignFinal`) is not visible in shuffle heavy queries when connection pool is enabled. Reviewed By: xiaoxmeng, arhimondr Differential Revision: D57842433
|
This pull request was exported from Phabricator. Differential Revision: D57842433 |
… source (prestodb#22903) Summary: Currently each endpoint (server) has only one `SessionPool`, which can only be attached to one `EventBase`. If there is some skewness among the distribution (i.e. too many endpoints being attached to one event base), that event base would become bottleneck and cause regression in query wall time. Fix this by creating one `SessionPool` for each endpoint and event base pair. Allow transfer of idle session between different event bases by using `ServerIdleSessionController`. This way we eliminate the bottleneck in event base while still keep the `HttpSession`s reusable. After the fix, enabling connection pool should no longer cause any regression to wall time. The SSL handshake cost (`EVP_DigestSignFinal`) is not visible in shuffle heavy queries when connection pool is enabled. Reviewed By: xiaoxmeng, arhimondr Differential Revision: D57842433
|
This pull request was exported from Phabricator. Differential Revision: D57842433 |
aditi-pandit
left a comment
There was a problem hiding this comment.
Thanks @Yuhta. This looks good. We will do a benchmark run to assess how this works in our systems.
presto-native-execution/presto_cpp/main/PeriodicTaskManager.cpp
Outdated
Show resolved
Hide resolved
presto-native-execution/presto_cpp/main/PeriodicTaskManager.cpp
Outdated
Show resolved
Hide resolved
presto-native-execution/presto_cpp/main/PeriodicTaskManager.cpp
Outdated
Show resolved
Hide resolved
presto-native-execution/presto_cpp/main/PeriodicTaskManager.cpp
Outdated
Show resolved
Hide resolved
… source (prestodb#22903) Summary: Currently each endpoint (server) has only one `SessionPool`, which can only be attached to one `EventBase`. If there is some skewness among the distribution (i.e. too many endpoints being attached to one event base), that event base would become bottleneck and cause regression in query wall time. Fix this by creating one `SessionPool` for each endpoint and event base pair. Allow transfer of idle session between different event bases by using `ServerIdleSessionController`. This way we eliminate the bottleneck in event base while still keep the `HttpSession`s reusable. After the fix, enabling connection pool should no longer cause any regression to wall time. The SSL handshake cost (`EVP_DigestSignFinal`) is not visible in shuffle heavy queries when connection pool is enabled. Reviewed By: xiaoxmeng, arhimondr Differential Revision: D57842433
|
This pull request was exported from Phabricator. Differential Revision: D57842433 |
… source (prestodb#22903) Summary: Currently each endpoint (server) has only one `SessionPool`, which can only be attached to one `EventBase`. If there is some skewness among the distribution (i.e. too many endpoints being attached to one event base), that event base would become bottleneck and cause regression in query wall time. Fix this by creating one `SessionPool` for each endpoint and event base pair. Allow transfer of idle session between different event bases by using `ServerIdleSessionController`. This way we eliminate the bottleneck in event base while still keep the `HttpSession`s reusable. After the fix, enabling connection pool should no longer cause any regression to wall time. The SSL handshake cost (`EVP_DigestSignFinal`) is not visible in shuffle heavy queries when connection pool is enabled. Reviewed By: xiaoxmeng, arhimondr Differential Revision: D57842433
|
This pull request was exported from Phabricator. Differential Revision: D57842433 |
… source (prestodb#22903) Summary: Currently each endpoint (server) has only one `SessionPool`, which can only be attached to one `EventBase`. If there is some skewness among the distribution (i.e. too many endpoints being attached to one event base), that event base would become bottleneck and cause regression in query wall time. Fix this by creating one `SessionPool` for each endpoint and event base pair. Allow transfer of idle session between different event bases by using `ServerIdleSessionController`. This way we eliminate the bottleneck in event base while still keep the `HttpSession`s reusable. After the fix, enabling connection pool should no longer cause any regression to wall time. The SSL handshake cost (`EVP_DigestSignFinal`) is not visible in shuffle heavy queries when connection pool is enabled. Reviewed By: xiaoxmeng, arhimondr Differential Revision: D57842433
|
This pull request was exported from Phabricator. Differential Revision: D57842433 |
… source (prestodb#22903) Summary: Currently each endpoint (server) has only one `SessionPool`, which can only be attached to one `EventBase`. If there is some skewness among the distribution (i.e. too many endpoints being attached to one event base), that event base would become bottleneck and cause regression in query wall time. Fix this by creating one `SessionPool` for each endpoint and event base pair. Allow transfer of idle session between different event bases by using `ServerIdleSessionController`. This way we eliminate the bottleneck in event base while still keep the `HttpSession`s reusable. After the fix, enabling connection pool should no longer cause any regression to wall time. The SSL handshake cost (`EVP_DigestSignFinal`) is not visible in shuffle heavy queries when connection pool is enabled. Reviewed By: xiaoxmeng, arhimondr Differential Revision: D57842433
|
This pull request was exported from Phabricator. Differential Revision: D57842433 |
presto-native-execution/presto_cpp/main/PeriodicTaskManager.cpp
Outdated
Show resolved
Hide resolved
… source (prestodb#22903) Summary: Currently each endpoint (server) has only one `SessionPool`, which can only be attached to one `EventBase`. If there is some skewness among the distribution (i.e. too many endpoints being attached to one event base), that event base would become bottleneck and cause regression in query wall time. Fix this by creating one `SessionPool` for each endpoint and event base pair. Allow transfer of idle session between different event bases by using `ServerIdleSessionController`. This way we eliminate the bottleneck in event base while still keep the `HttpSession`s reusable. After the fix, enabling connection pool should no longer cause any regression to wall time. The SSL handshake cost (`EVP_DigestSignFinal`) is not visible in shuffle heavy queries when connection pool is enabled. Reviewed By: xiaoxmeng, arhimondr Differential Revision: D57842433
|
This pull request was exported from Phabricator. Differential Revision: D57842433 |
… source (prestodb#22903) Summary: Currently each endpoint (server) has only one `SessionPool`, which can only be attached to one `EventBase`. If there is some skewness among the distribution (i.e. too many endpoints being attached to one event base), that event base would become bottleneck and cause regression in query wall time. Fix this by creating one `SessionPool` for each endpoint and event base pair. Allow transfer of idle session between different event bases by using `ServerIdleSessionController`. This way we eliminate the bottleneck in event base while still keep the `HttpSession`s reusable. After the fix, enabling connection pool should no longer cause any regression to wall time. The SSL handshake cost (`EVP_DigestSignFinal`) is not visible in shuffle heavy queries when connection pool is enabled. Reviewed By: xiaoxmeng, arhimondr Differential Revision: D57842433
|
This pull request was exported from Phabricator. Differential Revision: D57842433 |
… source (prestodb#22903) Summary: Currently each endpoint (server) has only one `SessionPool`, which can only be attached to one `EventBase`. If there is some skewness among the distribution (i.e. too many endpoints being attached to one event base), that event base would become bottleneck and cause regression in query wall time. Fix this by creating one `SessionPool` for each endpoint and event base pair. Allow transfer of idle session between different event bases by using `ServerIdleSessionController`. This way we eliminate the bottleneck in event base while still keep the `HttpSession`s reusable. After the fix, enabling connection pool should no longer cause any regression to wall time. The SSL handshake cost (`EVP_DigestSignFinal`) is not visible in shuffle heavy queries when connection pool is enabled. Reviewed By: xiaoxmeng, arhimondr Differential Revision: D57842433
… source (#22903) Summary: Currently each endpoint (server) has only one `SessionPool`, which can only be attached to one `EventBase`. If there is some skewness among the distribution (i.e. too many endpoints being attached to one event base), that event base would become bottleneck and cause regression in query wall time. Fix this by creating one `SessionPool` for each endpoint and event base pair. Allow transfer of idle session between different event bases by using `ServerIdleSessionController`. This way we eliminate the bottleneck in event base while still keep the `HttpSession`s reusable. After the fix, enabling connection pool should no longer cause any regression to wall time. The SSL handshake cost (`EVP_DigestSignFinal`) is not visible in shuffle heavy queries when connection pool is enabled. Reviewed By: xiaoxmeng, arhimondr Differential Revision: D57842433
…exchange source (prestodb#22903)" This reverts commit ab3bda7.
…exchange source (prestodb#22903)" This reverts commit ab3bda7.
Summary:
Currently each endpoint (server) has only one
SessionPool, which can only be attached to oneEventBase. If there is some skewness among the distribution (i.e. too many endpoints being attached to one event base), that event base would become bottleneck and cause regression in query wall time.Fix this by creating one
SessionPoolfor each endpoint and event base pair. Allow transfer of idle session between different event bases by usingServerIdleSessionController. This way we eliminate the bottleneck in event base while still keep theHttpSessions reusable.After the fix, enabling connection pool should no longer cause any regression to wall time. The SSL handshake cost (
EVP_DigestSignFinal) is not visible in shuffle heavy queries when connection pool is enabled.Reviewed By: xiaoxmeng, arhimondr
Differential Revision: D57842433