[Twisted-Python] Strange behaviour for epoll reactor

Mustafa Sakalsiz sakalsiz at gmail.com
Tue Dec 11 08:06:45 EST 2007


We have a twisted application uses the epoll reactor. Sometimes it
wastes %100 cpu. It has also some threads for single isolated
functions (using deferToThred). First we suspected that threads don't
end and goes to an infinite loop. Because application still accepts
connections and executes the requested functions. Then I ran the
following ps command

ps h -Leo pid,pcpu,args,lwp

Looking at the output, the main thread seemed to be wasting the whole
cpu time. Later on I attached the process to the strace and saw the
output below. I don't how does it happen or when does it happen. It is
not regular nor repeatable, but this is the strace output when it gets
into loop. I send to the list, because it may be useful for someone.

Now we switched back to the select reactor.

P.S.: We use perspective broker on the server side and qt4reactor for
the client.

futex(0x8ab6898, FUTEX_WAKE, 1)         = 0
epoll_wait(8, {{EPOLLERR|EPOLLHUP, {u32=19, u64=593541665440923667}}},
8, 15) = 1
futex(0x8ab6898, FUTEX_WAKE, 1)         = 0
futex(0x8ab6898, FUTEX_WAKE, 1)         = 0
gettimeofday({1197377318, 796897}, NULL) = 0
gettimeofday({1197377318, 796940}, NULL) = 0
futex(0x8ab6898, FUTEX_WAKE, 1)         = 0
epoll_wait(8, {{EPOLLERR|EPOLLHUP, {u32=19, u64=593541665440923667}}},
8, 15) = 1
futex(0x8ab6898, FUTEX_WAKE, 1)         = 0
gettimeofday({1197377318, 797127}, NULL) = 0
gettimeofday({1197377318, 797169}, NULL) = 0
futex(0x8ab6898, FUTEX_WAKE, 1)         = 0
futex(0x8ab6898, FUTEX_WAKE, 1)         = 0
epoll_wait(8, {{EPOLLERR|EPOLLHUP, {u32=19, u64=593541665440923667}}},
8, 15) = 1
futex(0x8ab6898, FUTEX_WAKE, 1)         = 0
gettimeofday({1197377318, 797388}, NULL) = 0
gettimeofday({1197377318, 797430}, NULL) = 0
futex(0x8ab6898, FUTEX_WAKE, 1)         = 0
epoll_wait(8, {{EPOLLERR|EPOLLHUP, {u32=19, u64=593541665440923667}}},
8, 14) = 1
futex(0x8ab6898, FUTEX_WAKE, 1)         = 0
gettimeofday({1197377318, 797617}, NULL) = 0
futex(0x8ab6898, FUTEX_WAKE, 1)         = 0
gettimeofday({1197377318, 797692}, NULL) = 0
futex(0x8ab6898, FUTEX_WAKE, 1)         = 0
epoll_wait(8, {{EPOLLERR|EPOLLHUP, {u32=19, u64=593541665440923667}}},
8, 14) = 1
futex(0x8ab6898, FUTEX_WAKE, 1)         = 0
gettimeofday({1197377318, 797879}, NULL) = 0
gettimeofday({1197377318, 797921}, NULL) = 0
futex(0x8ab6898, FUTEX_WAKE, 1)         = 0
epoll_wait(8, {{EPOLLERR|EPOLLHUP, {u32=19, u64=593541665440923667}}},
8, 14) = 1
futex(0x8ab6898, FUTEX_WAKE, 1)         = 0
futex(0x8ab6898, FUTEX_WAKE, 1)         = 0
gettimeofday({1197377318, 798139}, NULL) = 0
gettimeofday({1197377318, 798181}, NULL) = 0
futex(0x8ab6898, FUTEX_WAKE, 1)         = 0
epoll_wait(8, {{EPOLLERR|EPOLLHUP, {u32=19, u64=593541665440923667}}},
8, 14) = 1
futex(0x8ab6898, FUTEX_WAKE, 1)         = 0
gettimeofday({1197377318, 798368}, NULL) = 0
futex(0x8ab6898, FUTEX_WAKE, 1)         = 0
gettimeofday({1197377318, 798442}, NULL) = 0
futex(0x8ab6898, FUTEX_WAKE, 1)         = 0
epoll_wait(8, {{EPOLLERR|EPOLLHUP, {u32=19, u64=593541665440923667}}},
8, 13) = 1
futex(0x8ab6898, FUTEX_WAKE, 1)         = 0
gettimeofday({1197377318, 798627}, NULL) = 0
gettimeofday({1197377318, 798669}, NULL) = 0
futex(0x8ab6898, FUTEX_WAKE, 1)         = 0
epoll_wait(8, {{EPOLLERR|EPOLLHUP, {u32=19, u64=593541665440923667}}},
8, 13) = 1
futex(0x8ab6898, FUTEX_WAKE, 1)         = 0




More information about the Twisted-Python mailing list