High CPU shoot during poll retry

Поиск
Список
Период
Сортировка
От Gaurav Srivastava
Тема High CPU shoot during poll retry
Дата
Msg-id CAAXqS3Aag2vVu9yKQvb-jdSPuTkNSi_X6HphQcz4adgXL1gOFQ@mail.gmail.com
обсуждение исходный текст
Ответы Re: High CPU shoot during poll retry  (Heikki Linnakangas <hlinnakangas@vmware.com>)
Список 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 по дате отправления:

Предыдущее
От: Michael Paquier
Дата:
Сообщение: Re: Let's use libpq for everything
Следующее
От: Heikki Linnakangas
Дата:
Сообщение: Re: High CPU shoot during poll retry