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