Menu

#86 Faster LTP block reassembly

3.4.0
closed
None
5
2016-01-22
2015-08-03
No

LTP block reassembly can be very time-consuming for large blocks transmitted in small segments received at machines with moderate CPU power, because it entails copying every ZCO extent of the reception ZCO (one extent per segment) from its reception location to the correct (transmission) location in the new delivery ZCO. This can consume 100% of CPU and take so long that the sender's checkpoint ack timer expires multiple times, resulting in multiple checkpoint retransmissions and eventually session cancellation, causing the entire block to be retransmitted again, etc. Block reassembly can be made much faster if we simply receive directly into the correct location in a temporary acquisition file and then simply wrap the delivery ZCO around that file.

Related

Bugs: #86

Discussion

  • Anonymous

    Anonymous - 2015-09-17

    Since LTP doesn't have a notion of 'length' up front (i.e. when you start receiving you don't know the size of the block) does this mean that all LTP block reception will go through files? Doesn't that have performance implications for small blocks?

    --keith

     
    • Scott Burleigh

      Scott Burleigh - 2015-09-17

      Good point, but we've got it covered; the description in the bug 86 writeup is actually somewhat simplified. There's an LTP engine configuration parameter called "heapmax". The first heapmax bytes of red data for a given incoming block are written to a buffer in SDR heap space; the remainder (if > 0) are written to a temporary file. Then a delivery ZCO is created that has up to 2 extents: one for the SDR heap buffer and possibly a second one for the temporary file buffer.

      Scott

      From: noreply@in.sf.net [mailto:noreply@in.sf.net]
      Sent: Thursday, September 17, 2015 8:20 AM
      To: [ion-dtn:bugs] 86@bugs.ion-dtn.p.re.sf.net
      Subject: [ion-dtn:bugs] #86 Faster LTP block reassembly

      Since LTP doesn't have a notion of 'length' up front (i.e. when you start receiving you don't know the size of the block) does this mean that all LTP block reception will go through files? Doesn't that have performance implications for small blocks?

      --keith


      [bugs:#86]http://sourceforge.net/p/ion-dtn/bugs/86/ Faster LTP block reassembly

      Status: pending
      Group: 3.4.0
      Created: Mon Aug 03, 2015 11:53 PM UTC by Scott Burleigh
      Last Updated: Thu Sep 17, 2015 11:47 AM UTC
      Owner: Scott Burleigh

      LTP block reassembly can be very time-consuming for large blocks transmitted in small segments received at machines with moderate CPU power, because it entails copying every ZCO extent of the reception ZCO (one extent per segment) from its reception location to the correct (transmission) location in the new delivery ZCO. This can consume 100% of CPU and take so long that the sender's checkpoint ack timer expires multiple times, resulting in multiple checkpoint retransmissions and eventually session cancellation, causing the entire block to be retransmitted again, etc. Block reassembly can be made much faster if we simply receive directly into the correct location in a temporary acquisition file and then simply wrap the delivery ZCO around that file.


      Sent from sourceforge.net because you indicated interest in https://sourceforge.net/p/ion-dtn/bugs/86/

      To unsubscribe from further messages, please visit https://sourceforge.net/auth/subscriptions/

       

      Related

      Bugs: #86

  • Scott Burleigh

    Scott Burleigh - 2016-01-22
    • status: pending --> closed
     
  • Scott Burleigh

    Scott Burleigh - 2016-01-22

    Addressed by feature branch bug-0086-LTP-block-reassembly.

     

Anonymous
Anonymous

Add attachments
Cancel