Monitoring Bandwidth
The ability to monitor the effective bandwidth previously seen by an application directly supports the ability to adapt to variable runtime environments. Some bandwidth measures that may be valuable to an adaptive distributed system are:
Average data throughput rate over a given time period
Total data throughput over a given time period
Estimate of time until a given amount of data will be available
Other first- and second-order statistics on data rate and throughput over time (variances, median rate, data “acceleration,” or change in throughput rate, etc.).
Ideally, we would like to capture these bandwidth measures in real time, or as close to real time as we can get, and we would like to have these measures in terms of both raw (unprocessed) data throughput and real (application) data throughput.
The DataMonitor
class shown in Example 8.1 provides a container for holding byte counts
of data (either inbound or outbound), along with corresponding start
and stop times. The start and stop times log the time interval for
the data transaction. The DataMonitor
provides
an
addSample()
method for adding bandwidth measurement samples. Each of these
samples is interpreted as being the number of bytes processed since
the last sample, and the time interval during which the data was
processed. Once a number of samples have been collected by the
DataMonitor
, it can be queried for statistics about the historical data rate. In this example we only show three methods offering basic ...
Get Java Distributed Computing now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.