Skip to content

Commit a2c1aa5

Browse files
committed
Add more documentation to README
These comments are from Brian Bockelman
1 parent bfa8e85 commit a2c1aa5

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

Utilities/XrdAdaptor/README.md

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,26 @@ The `XrdAdaptor` package is the CMSSW implementation of CMS' AAA infrastructure.
1212

1313
The `ClientRequest` implements `XrdCl::ResponseHandler`, and represents a single read request(?).
1414

15-
### `QualityMetric` etc
15+
### `QualityMetric`
16+
17+
The `QualityMetric` implements a measurement of the server's recent performance for the client. It's based on the time taken to service requests (under the assumption that, since requests are split into potentially smaller-chunks by the request manager, the time to service them should be roughly the same) with a small amount of exponential weighting to prefer data points from the most recent request.
18+
19+
Since the metric is based on time to serve requests, a lower value is better.
20+
21+
Potential improvements include:
22+
* Actually weighting the scores based on the size (or complexity) of the reads. The assumption that latency dominates transfer time may be OK in some cases -- but we've seen for large files (e.g., heavy ion), that bandwidth really is relevant and that large vector reads can cause much more server stress due to read amplification for erasure-coded systems than a simple read.
23+
* Switching from the hand-calculated exponential weighting to a more typical exponentially weighted moving average setup.
1624

17-
?
1825

1926
### `RequestManager`
2027

2128
The `RequestManager` containes the actual implementation of the retries and the multi-source algorithm. There is one `RequestManager` object for one PFN, and it contains one or more `Source` objects.
2229

2330
#### `RequestManager::OpenHandler`
2431

25-
The `OpenHandler` implements XRootD's `XrdCl::ResponseHandler` in an asynchronous way(?). An instance is created in `RequestManager::initialize()`, and used when additional Sources are opened, either as part of the multi-source comparisons (`RequestManager::checkSourcesImpl()`) or read error recovery (`RequestManager::requestFailure()`).
32+
The `OpenHandler` implements XRootD's `XrdCl::ResponseHandler` in an asynchronous way. An instance is created in `RequestManager::initialize()`, and used when additional Sources are opened, either as part of the multi-source comparisons (`RequestManager::checkSourcesImpl()`) or read error recovery (`RequestManager::requestFailure()`).
33+
34+
Most of the internal operations for the xrootd client are asynchronous while ROOT expects a synchronous interface from the adaptor. The difference between the two here is the asynchronous one is used for "background probing" to find additional sources.
2635

2736
### `Source`
2837

@@ -38,7 +47,7 @@ The `XrdFile` implements `edm::storage::Storage` (see [Utilities/StorageFactory/
3847

3948
### `XrdStatistics`
4049

41-
?
50+
The `XrdStatistics` provides per-"site" counters (bytes read, total time), providing the `XrdStatisticsService` with a viewpoint of how individual sites are performing for a given client. The intent is to provide more visibility into the performance encountered by grouping I/O operations into a per-site basis, under the theory that performance within a site is similar but could differ between two different sites.
4251

4352
### `XrdStatisticsService`
4453

0 commit comments

Comments
 (0)