High CPU shoot during poll retry - Mailing list pgsql-odbc

From Gaurav Srivastava
Subject High CPU shoot during poll retry
Date
Msg-id CAAXqS3Aag2vVu9yKQvb-jdSPuTkNSi_X6HphQcz4adgXL1gOFQ@mail.gmail.com
Whole thread Raw
Responses Re: High CPU shoot during poll retry
List pgsql-odbc

Hi All,

In ODBC library later to change done as part of commit Title  "Rip out broken retry/timeout logic in SOCK_wait_for_ready." in file socket.c

Now  the cpde snippet for SOCK_wait_for_ready() is like:

       do {
#ifdef  HAVE_POLL
                fds.fd = sock->socket;
                fds.events = output ? POLLOUT : POLLIN;
                fds.revents = 0;
                ret = poll(&fds, 1, nowait ? 0 : -1);
mylog("!!!  poll ret=%d revents=%x\n", ret, fds.revents);
#else
                FD_ZERO(&fds);
                FD_ZERO(&except_fds);
                FD_SET(sock->socket, &fds);
                FD_SET(sock->socket, &except_fds);
                if (nowait)
                {   
                        tm.tv_sec = 0;
                        tm.tv_usec = 0;
                }   
                ret = select((int) sock->socket + 1, output ? NULL : &fds, output ? &fds : NULL, &except_fds, nowait ? &tm : NULL);
#endif /* HAVE_POLL */
                gerrno = SOCK_ERRNO;
        } while (ret < 0 && EINTR == gerrno);



So whenever there is no fd is ready to be read it will immediately return and solve the issue of infinite query hung but  due to immediate return it will go for continuous retries and causing CPU to shoot very high.This is one of the case we are suffering in our scenario after upgrading ODBC.

One way is to put usleep  from post to every call  of SOCK_wait_for_ready() to solve this,but would request if a better patch can be available to fix this issue.
Please suggest.

Thanks and Regards,
Gaurav Srivastava | Associate Consultant
GlobalLogic
P +91.120.4342000.2920  M +91.9953996631  S ta5ramn1
www.globallogic.com

http://www.globallogic.com/email_disclaimer.txt

pgsql-odbc by date:

Previous
From: Michael Paquier
Date:
Subject: Re: Let's use libpq for everything
Next
From: Heikki Linnakangas
Date:
Subject: Re: High CPU shoot during poll retry