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

From Heikki Linnakangas
Subject Re: High CPU shoot during poll retry
Date
Msg-id 548B569D.4040008@vmware.com
Whole thread Raw
In response to High CPU shoot during poll retry  (Gaurav Srivastava <gaurav.srivastava@globallogic.com>)
Responses Re: High CPU shoot during poll retry
List pgsql-odbc
On 12/12/2014 12:31 PM, Gaurav Srivastava wrote:
> 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.

Why do you think it will go into continuous retries?

- Heikki


pgsql-odbc by date:

Previous
From: Gaurav Srivastava
Date:
Subject: High CPU shoot during poll retry
Next
From: Gaurav Srivastava
Date:
Subject: Re: High CPU shoot during poll retry