Changes between Initial Version and Version 1 of Ticket #163


Ignore:
Timestamp:
09/24/2014 12:51:45 AM (10 years ago)
Author:
Brian Warner
Comment:

dragging some old tickets into the next release, kind of at random

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #163

    • Property Milestone changed from undecided to 0.8.0
  • Ticket #163 – Description

    initial v1  
    1 While reading over
    2 http://www.imperialviolet.org/2010/06/25/overclocking-ssl.html , I learned
    3 the following tidbits:
     1While reading over http://www.imperialviolet.org/2010/06/25/overclocking-ssl.html , I learned the following tidbits:
    42
    5  * "OpenSSL will build a record from each call to SSL_write and the kernel,
    6    with Nagle disabled, will send out packets to minimise latency"
     3 * "OpenSSL will build a record from each call to SSL_write and the kernel, with Nagle disabled, will send out packets to minimise latency"
    74 * "The overhead of a record is typically 25 to 40 bytes"
    85
    9 Foolscap does lots of small writes: every call to
    10 [source:foolscap/banana.py#L485 sendToken()] results in two or three calls to
    11 {{{self.transport.write}}} (header, typebyte, body), and multibyte integers
    12 are even worse (one write per byte).
     6Foolscap does lots of small writes: every call to [source:foolscap/banana.py#L485 sendToken()] results in two or three calls to {{{self.transport.write}}} (header, typebyte, body), and multibyte integers are even worse (one write per byte).
    137
    14 I'm not entirely sure about how this ends up translating into calls to
    15 {{{SSL_write()}}} (and thus records, with their 25-40byte overhead), but if
    16 it's one-to-one, this would be pretty bad.
     8I'm not entirely sure about how this ends up translating into calls to {{{SSL_write()}}} (and thus records, with their 25-40byte overhead), but if it's one-to-one, this would be pretty bad.
    179
    18 The task is to examine the output of a packet sniffer (like wireshark, and
    19 give it the tub.pem file so it can decrypt the traffic), and could the number
    20 of records for a simple message (perhaps a tuple of two ints and two
    21 strings).
     10The task is to examine the output of a packet sniffer (like wireshark, and give it the tub.pem file so it can decrypt the traffic), and could the number of records for a simple message (perhaps a tuple of two ints and two strings).
    2211
    23 There's a pretty good chance that
    24 {{{twisted.internet.abstract.FileDescriptor.write}}} is involved, which would
    25 merge all the {{{write()}}} calls that occur in a single reactor turn (until
    26 {{{select()}}} tells us the socket is writable), which would help a lot. On
    27 the other hand, the overly-streaming-friendly serialization scheme that
    28 Foolscap uses might allow a reactor turn between each call to
    29 {{{sendToken}}}, which would hurt a lot.
     12There's a pretty good chance that {{{twisted.internet.abstract.FileDescriptor.write}}} is involved, which would merge all the {{{write()}}} calls that occur in a single reactor turn (until {{{select()}}} tells us the socket is writable), which would help a lot. On the other hand, the overly-streaming-friendly serialization scheme that Foolscap uses might allow a reactor turn between each call to {{{sendToken}}}, which would hurt a lot.