[Twisted-Python] Re: [Twisted-commits] r10475 - Use writeSequence instead of silly for-loop.

Bob Ippolito bob at redivi.com
Thu Apr 15 12:27:16 MDT 2004


On Apr 15, 2004, at 2:00 PM, Itamar Shtull-Trauring wrote:

> On Thu, 2004-04-15 at 13:27, James Y Knight wrote:
>
>> Unfortunately, python doesn't expose the writev syscall, which means
>> that you depend on Nagling to not coalesce the TCP packets. There *is*
>> a TCP option which you can use to help fix too many small packets:
>> TCP_CORK on linux and TCP_NOPUSH on FreeBSD. This keeps partial 
>> packets
>> from being sent at all until you close the connection or turn off the
>> option (except on older freebsd, where it's broken and you need to 
>> turn
>> off the option and call write again to wake it up).
>
> JP has code for using writev in the sandbox (sandbox/exarkun/iovec/)
> which ought to be integrated at some point.

I think the best answer to this performance talk is: don't bother.  I 
once set out to fix his implementation, and did (but I'm not sure what 
happened to it).  It wasn't really much faster, definitely not enough 
to warrant an extension.  You know what?  The overhead doesn't seem to 
be in the write calls or the str joins, it's the rest of Python that's 
slow :)

I think that this sort of time would be better spent on epoll and 
kqueue.  Last I checked, enabling kqueue in Twisted required 
downloading some ancient code written for Python 1.5 from a ftp site 
that hasn't been updated since 2001, patching it, writing a makefile 
for your platform, and building the extension separately.

-bob





More information about the Twisted-Python mailing list