This one will be related to benchmarking and stats gathering :
    - Repo
    - Current functionality
    - To-Do List for toadlet and stats
    - Issues
-----------------------------------------------------------------------------------------

| Repo
The repository for the GSoC-2013 Transport Layer Project, which I'm
developing can be found here (https://github.com/Quadrocube/fred-staging)
at the branch transport_layer_modifications (probably should rename it and
add another for actuall transport layer changes - the current code there is
related to the base for benchmarking only).

| Current functionality
LinkStatistics class was presented to represent the gathered link indexes
and two LinkStatistics fields were added to a PeerNode - the first one
(linkStatsTotal) is used for attaching a benchmark-aware listener to it and
serves for benchmark measurements. The other LinkStatistics field in
PeerNode (shortRunLinkStats) will be utilized for a several actually
transport-related modifications.
LinkStatisticsToadlet acts as web-interface for the link sampling. Upon
activation (Connections to Friends - select "test connection" near the
friend's noderef - enter the sample size, press "Test conection"), it
attaches a listener (LinkStatistics.StatsChangeTracker) to a chosen
peerNode.linkStatsTotal, initiates a BulkTransfer of the given size, and
monitors several usefull for later analysis activities. Currently it
produces only a grand-total upon the end of the transfer but there are
callbacks introduced that can be used to build up a more precise dynamic
analytics.
Note: In order for this to work, both testing and tested peer should be
supplied with the version of freenet from this branch. Reason: it contains
the receiver-side modification to get rid of the need to manualy accept
each test.

| To-do list for toadlet and stats
    - Introduce the monitoring of other characteristics of a connection -
like e.g. bandwitdth measuring, average packet size seen, ... (Stats)
    - Implement the dynamic logs in form of graphs - currently the most
vital things that will be usefull to have are (in order of importance):
congestion_window_utilized-from-time graph, bandwidth-from-time graph,
data_in_flight-from-time graph, payload_to_alldata-from-time,
averageRTT-from-time, etc.. (Toadlet)
    - Localization (in a long term, not vital currently) (Toadlet)
    - Forbid the link sampling in case of huge load on the monitored node.
There are already means to reject the test for the peer, but they are not
used currently (See NodeDispatcher.java) (Toadlet)

| Issues
    - As the look up of the field show, the easieset-to-use tool for such
primitive plotting tasks seems to be JFreeChart. Any propositions?
    - Potentially very long locking in POST at toadlet - need to fix it
somehow. Once again, a long-term thing.

After all that is ready, I am passing to the implementation of the todo
list discussed at the previous report and comparing the results obtained by
that implementation against the benchmark results of the current one. And
at last it will be possible to estimate the reasons for many suspicious
transfer failures (e.g. LAN-transfering 1MiB files for minutes) and fix
them.

quadrocube

Reply via email to