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.
Anonymous
View and moderate all "bugs Discussion" comments posted by this user
Mark all as spam, and block user from posting to "Bugs"
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
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:
#86Addressed by feature branch bug-0086-LTP-block-reassembly.