wiki:WARPLab/Benchmarks

Version 9 (modified by murphpo, 11 years ago) (diff)

--

WARPLab 7: Benchmarks

Jumbo Frames

WARPLab 7 supports "jumbo frames," which are Ethernet packets larger than 1500 bytes. WARPLab 7 supports packet sizes up to 9014 bytes long. The benefit of longer packets is that fewer packet exchanges are required in the burst of transmissions that occur when reading or writing large numbers of samples. On our computers, jumbo packets improve the speed for the read_IQ and write_IQ commands significantly:

This plot shows the amount of time each command takes to read or write a full 32768 (215) samples to a buffer. The WARPLab 7 script used to generate the above plot is provided here:

clear node
node = wl_initNodes(1);
[RFA,RFB] = wl_getInterfaceIDs(node);

NUMITER = 100;

NUMLENGTHS = 6;
maxPayloadVec = [1000,floor(linspace(1470,double(node.transport.maxPayload),NUMLENGTHS-1))];

IQvec = complex(randn(node.baseband.txIQLen,1),randn(node.baseband.txIQLen,1));
IQvec = IQvec./(max(abs(IQvec)));

duration_write = zeros(NUMITER,NUMLENGTHS);
duration_read = zeros(NUMITER,NUMLENGTHS);
mean_duration_write = zeros(1,NUMLENGTHS);
std_duration_write = zeros(1,NUMLENGTHS);
mean_duration_read = zeros(1,NUMLENGTHS);
std_duration_read = zeros(1,NUMLENGTHS);
for k = NUMLENGTHS:-1:1
    fprintf('Current maxPayload: %d\n',maxPayloadVec(k));
    node.transport.maxPayload = maxPayloadVec(k);
    for m = NUMITER:-1:1
        currTime = tic;
        wl_basebandCmd(node,RFA,'write_IQ',IQvec);
        duration_write(m,k) = toc(currTime);
        currTime = tic;
        wl_basebandCmd(node,RFA,'read_IQ',0,node.baseband.rxIQLen);
        duration_read(m,k) = toc(currTime);
    end
    mean_duration_write(k) = mean(duration_write(:,k));
    std_duration_write(k) = std(duration_write(:,k));
    mean_duration_read(k) = mean(duration_read(:,k));
    std_duration_read(k) = std(duration_read(:,k));
end

%% Plotting
figure(1);clf
errorbar(maxPayloadVec,mean_duration_write,std_duration_write,'LineWidth',2)
hold on
errorbar(maxPayloadVec,mean_duration_read,std_duration_read,'r','LineWidth',2)
grid on
xlabel('Payload Size')
ylabel('Duration (Seconds)')
title('Duration of Commands vs Payload Size')
legend('write_IQ','read_IQ')
myAxis = axis;
myAxis(3) = 0;
axis(myAxis);

standardPayload = 1470;
H = line([standardPayload standardPayload],[myAxis(3),myAxis(4)]);
set(H,'Color',[0 0 0])
set(H,'LineWidth',2)
H = text(standardPayload + .01*myAxis(2),.9*myAxis(4),'Standard Payload Size');
set(H,'FontName','Ariel')
set(H,'FontWeight','bold')
hold off

Attachments (3)

Download all attachments as: .zip