Create thread specific zombie queues
Because each thread has their own epoll file descriptor and only one thread can process a DCB, it makes sense to move to a per thread zombie queue. This removes one of the last restrictions on scalability.
This commit is contained in:
@ -450,6 +450,7 @@ poll_remove_dcb(DCB *dcb)
|
||||
*/
|
||||
dcbfd = dcb->fd;
|
||||
spinlock_release(&dcb->dcb_initlock);
|
||||
|
||||
if (dcbfd > 0)
|
||||
{
|
||||
rc = epoll_ctl(epoll_fd[dcb->owner], EPOLL_CTL_DEL, dcbfd, &ev);
|
||||
@ -842,12 +843,11 @@ poll_set_maxwait(unsigned int maxwait)
|
||||
static int
|
||||
process_pollq(int thread_id, struct epoll_event *event)
|
||||
{
|
||||
int found = 0;
|
||||
uint32_t ev = event->events;
|
||||
unsigned long qtime;
|
||||
|
||||
DCB *dcb = event->data.ptr;
|
||||
|
||||
ss_dassert(dcb->owner == thread_id);
|
||||
#if PROFILE_POLL
|
||||
memlog_log(plog, hkheartbeat - dcb->evq.inserted);
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user