You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: Utilities/XrdAdaptor/README.md
+13-4Lines changed: 13 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,17 +12,26 @@ The `XrdAdaptor` package is the CMSSW implementation of CMS' AAA infrastructure.
12
12
13
13
The `ClientRequest` implements `XrdCl::ResponseHandler`, and represents a single read request(?).
14
14
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.
16
24
17
-
?
18
25
19
26
### `RequestManager`
20
27
21
28
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.
22
29
23
30
#### `RequestManager::OpenHandler`
24
31
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.
26
35
27
36
### `Source`
28
37
@@ -38,7 +47,7 @@ The `XrdFile` implements `edm::storage::Storage` (see [Utilities/StorageFactory/
38
47
39
48
### `XrdStatistics`
40
49
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.
0 commit comments