[Udt-java-commits] SF.net SVN: udt-java:[36] udt-java/trunk/src
Status: Alpha
Brought to you by:
bschuller
From: <bsc...@us...> - 2010-05-24 19:15:39
|
Revision: 36 http://udt-java.svn.sourceforge.net/udt-java/?rev=36&view=rev Author: bschuller Date: 2010-05-24 19:15:33 +0000 (Mon, 24 May 2010) Log Message: ----------- Modified Paths: -------------- udt-java/trunk/src/main/java/udt/UDTSender.java udt-java/trunk/src/main/java/udt/packets/DataPacket.java udt-java/trunk/src/main/java/udt/util/Util.java udt-java/trunk/src/test/java/udt/performance/TestUDTLargeData.java udt-java/trunk/src/test/java/udt/performance/UDPTest.java Modified: udt-java/trunk/src/main/java/udt/UDTSender.java =================================================================== --- udt-java/trunk/src/main/java/udt/UDTSender.java 2010-05-01 20:49:52 UTC (rev 35) +++ udt-java/trunk/src/main/java/udt/UDTSender.java 2010-05-24 19:15:33 UTC (rev 36) @@ -34,10 +34,10 @@ import java.io.IOException; import java.util.Map; +import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CountDownLatch; -import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; @@ -124,7 +124,7 @@ statistics=session.getStatistics(); senderLossList=new SenderLossList(); sendBuffer=new ConcurrentHashMap<Long, DataPacket>(session.getFlowWindowSize(),0.75f,2); - sendQueue = new LinkedBlockingQueue<DataPacket>(1000); + sendQueue = new ArrayBlockingQueue<DataPacket>(1000); lastAckSequenceNumber=session.getInitialSequenceNumber(); waitForAckLatch.set(new CountDownLatch(1)); waitForSeqAckLatch.set(new CountDownLatch(1)); @@ -316,11 +316,11 @@ /** * sender algorithm */ + long iterationStart; public void senderAlgorithm()throws InterruptedException, IOException{ while(!paused){ - - long iterationStart=Util.getCurrentTime(); //last packet send time? - + iterationStart=Util.getCurrentTime(); + //if the sender's loss list is not empty if (!senderLossList.isEmpty()) { Long entry=senderLossList.getFirstEntry(); @@ -336,7 +336,7 @@ if(unAcknowledged<session.getCongestionControl().getCongestionWindowSize() && unAcknowledged<session.getFlowWindowSize()){ //check for application data - DataPacket dp=sendQueue.poll(); + DataPacket dp=sendQueue.poll(Util.SYN,TimeUnit.MICROSECONDS); if(dp!=null){ send(dp); largestSentSequenceNumber=dp.getPacketSequenceNumber(); @@ -345,7 +345,7 @@ statistics.incNumberOfMissingDataEvents(); } }else{ - //congestion window full, should we *really* wait for an ack?! + //congestion window full, wait for an ack if(unAcknowledged>=session.getCongestionControl().getCongestionWindowSize()){ statistics.incNumberOfCCWindowExceededEvents(); } @@ -355,7 +355,7 @@ //wait if(largestSentSequenceNumber % 16 !=0){ - double snd=session.getCongestionControl().getSendInterval(); + long snd=(long)session.getCongestionControl().getSendInterval(); long passed=Util.getCurrentTime()-iterationStart; int x=0; while(snd-passed>0){ @@ -376,13 +376,6 @@ * @param entry */ protected void handleResubmit(Long seqNumber){ - //long seqNumber=entry.getSequenceNumber(); - //TODO - //if the current seqNumber is 16n,check the timeOut in the - //loss list and send a message drop request. - //if((seqNumber%16)==0){ - //sendLossList.checkTimeOut(timeToLive); - //} try { //retransmit the packet and remove it from the list DataPacket pktToRetransmit = sendBuffer.get(seqNumber); Modified: udt-java/trunk/src/main/java/udt/packets/DataPacket.java =================================================================== --- udt-java/trunk/src/main/java/udt/packets/DataPacket.java 2010-05-01 20:49:52 UTC (rev 35) +++ udt-java/trunk/src/main/java/udt/packets/DataPacket.java 2010-05-24 19:15:33 UTC (rev 36) @@ -152,9 +152,10 @@ */ public byte[] getEncoded(){ byte[] header=getHeader(); - byte[] result=new byte[header.length+data.length]; - System.arraycopy(header, 0, result, 0, header.length); - System.arraycopy(data, 0, result, header.length, data.length); + //header.length is 16 + byte[] result=new byte[16+data.length]; + System.arraycopy(header, 0, result, 0, 16); + System.arraycopy(data, 0, result, 16, data.length); return result; } Modified: udt-java/trunk/src/main/java/udt/util/Util.java =================================================================== --- udt-java/trunk/src/main/java/udt/util/Util.java 2010-05-01 20:49:52 UTC (rev 35) +++ udt-java/trunk/src/main/java/udt/util/Util.java 2010-05-24 19:15:33 UTC (rev 36) @@ -55,11 +55,16 @@ return System.nanoTime()/1000; } + + public static final long SYN=10000; + + public static final double SYN_D=10000.0; + /** * get the SYN time in microseconds. The SYN time is 0.01 seconds = 10000 microseconds * @return */ - public static long getSYNTime(){ + public static final long getSYNTime(){ return 10000; } @@ -122,7 +127,7 @@ * @throws IOException */ public static void copy(InputStream source, OutputStream target, long size, boolean flush)throws IOException{ - byte[]buf=new byte[65536]; + byte[]buf=new byte[8*65536]; int c; long read=0; while(true){ Modified: udt-java/trunk/src/test/java/udt/performance/TestUDTLargeData.java =================================================================== --- udt-java/trunk/src/test/java/udt/performance/TestUDTLargeData.java 2010-05-01 20:49:52 UTC (rev 35) +++ udt-java/trunk/src/test/java/udt/performance/TestUDTLargeData.java 2010-05-24 19:15:33 UTC (rev 36) @@ -21,7 +21,7 @@ boolean running=false; //how many - int num_packets=50; + int num_packets=500; //how large is a single packet int size=1*1024*1024; Modified: udt-java/trunk/src/test/java/udt/performance/UDPTest.java =================================================================== --- udt-java/trunk/src/test/java/udt/performance/UDPTest.java 2010-05-01 20:49:52 UTC (rev 35) +++ udt-java/trunk/src/test/java/udt/performance/UDPTest.java 2010-05-24 19:15:33 UTC (rev 36) @@ -9,6 +9,7 @@ import junit.framework.TestCase; import udt.UDPEndPoint; +import udt.packets.DataPacket; import udt.util.MeanValue; /** @@ -16,7 +17,7 @@ */ public class UDPTest extends TestCase { - final int num_packets=10*1000; + final int num_packets=10*10*1000; final int packetSize=UDPEndPoint.DATAGRAM_SIZE; public void test1()throws Exception{ @@ -35,8 +36,14 @@ System.out.println("Sending "+num_packets+" data blocks of <"+packetSize+"> bytes"); MeanValue v=new MeanValue("Datagram send time",false); MeanValue v2=new MeanValue("Datagram send interval",false); + MeanValue v3=new MeanValue("Encoding time",false); + for(int i=0;i<num_packets;i++){ - dp.setData(data); + DataPacket p=new DataPacket(); + p.setData(data); + v3.begin(); + dp.setData(p.getEncoded()); + v3.end(); v2.end(); v.begin(); s.send(dp); @@ -52,6 +59,7 @@ System.out.println("Rate "+num_packets+" packets/sec"); System.out.println("Mean send time "+v.getFormattedMean()+" microsec"); System.out.println("Mean send interval "+v2.getFormattedMean()+" microsec"); + System.out.println("Datapacket encoding time "+v3.getFormattedMean()+" microsec"); System.out.println("Server received: "+total); } @@ -92,7 +100,7 @@ long start=System.currentTimeMillis(); while(true){ DatagramPacket dp=handoff.poll(); - total+=dp.getLength(); + if(dp!=null)total+=dp.getLength(); if(total==N)break; } long end=System.currentTimeMillis(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |