Cyrus Deadblocking
Adam Tauno Williams
adam at morrison-ind.com
Wed Dec 24 09:39:46 EST 2008
On Tue, 2008-12-23 at 02:44 +0100, Teresa wrote:
> Adam Tauno Williams wrote:
> >> Does "dmesg" show anything odd?
> Another thing i get sometimes connecting hanging cyrus process with
> strace is a lot of :
> select(0, NULL, NULL, NULL, {0, 25000}) = 0 (Timeout)
> few per second, and it never ends...
This above should be pretty normal. Select polls for any I/O, times out
(because there is nothing to do), and then the process re-issues the
select. Many services/servers use such a method to handle async I/O.
I'd guess the above is a call to:
int select(int nfds, fd_set *readfds, fd_set *writefds,
fd_set *exceptfds, struct timeval *timeout);
- so the last value, the {0, 25000} is the timeout timeval struct -
struct timeval
{
__time_t tv_sec; /* Seconds. */
__suseconds_t tv_usec; /* Microseconds. */
};
- so you get one of the select(...) calls roughly every 25,000
microseconds since.
More information about the Info-cyrus
mailing list