Skip to content
  • Gerrit Renker's avatar
    dccp: Reduce noise in output and convert to ktime_t · b8c6bcee
    Gerrit Renker authored
    
    
    This fixes the problem that dccp_probe output can grow quite large without
    apparent benefit (many identical data points), creating huge files (up to
    over one Gigabyte for a few minutes' test run) which are very hard to 
    post-process (in one instance it got so bad that gnuplot ate up all memory
    plus swap).
    
    The cause for the problem is that the kprobe is inserted into dccp_sendmsg(),
    which can be called in a polling-mode (whenever the TX queue is full due to
    congestion-control issues, EAGAIN is returned). This creates many very 
    similar data points, i.e. the increase of processing time does not increase
    the quality/information of the probe output.
    
    The fix is to attach the probe to a different function -- write_xmit was
    chosen since it gets called continually (both via userspace and timer);
    an input-path function would stop sampling as soon as the other end stops
    sending feedback.
    
    For comparison the output file sizes for the same 20 second test
    run over a lossy link:
               * before / without patch:  118   Megabytes
               * after  / with patch:       1.2 Megabytes
    and there was much less noise in the output.     
    
    To allow backward compatibility with scripts that people use, the now-unused
    `size' field in the output has been replaced with the CCID identifier. This
    also serves for future compatibility - support for CCID2 is work in progress
    (depends on the still unfinished SRTT/RTTVAR updates).
    
    While at it, the update to ktime_t was also performed.
    
    Signed-off-by: default avatarGerrit Renker <gerrit@erg.abdn.ac.uk>
    Acked-by: default avatarIan McDonald <ian.mcdonald@jandi.co.nz>
    b8c6bcee