| Bug #81229 | Client performance trashed due to threads woken up too early | ||
|---|---|---|---|
| Submitted: | 29 Apr 2016 7:50 | Modified: | 10 May 2016 10:07 |
| Reporter: | Ole John Aske | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Cluster: NDB API | Severity: | S3 (Non-critical) |
| Version: | 7.3 | OS: | Any |
| Assigned to: | CPU Architecture: | Any | |
[29 Apr 2016 7:50]
Ole John Aske
[10 May 2016 10:07]
Jon Stephens
Documented fix as follows in the NDB 7.5.2 changelog:
A performance problem was found in an internal polling method
do_poll() where the polling client did not check whether it had
itself been woken up before completing the poll. Subsequent
analysis showed that it is sufficient that only some clients in
the polling queue receive data. do_poll() can then signal these
clients and give up its polling rights, even if the maximum
specified wait time (10 ms) has not expired.
This change allows do_poll() to continue polling until either
the maximum specified wait time has expired, or the polling
client itself has been woken up (by receiving what it was
waiting for). This avoids unnecessary thread switches between
client threads and thus reduces the associated overhead by as
much as 10% in API clients, resulting in a significant
performance improvement when client threads perform their own
polling.
Closed.
