xrootd
Loading...
Searching...
No Matches
XrdXrootdMonData.hh
Go to the documentation of this file.
1#ifndef __XRDXROOTDMONDATA__
2#define __XRDXROOTDMONDATA__
3/******************************************************************************/
4/* */
5/* X r d X r o o t d M o n D a t a . h h */
6/* */
7/* (c) 2004 by the Board of Trustees of the Leland Stanford, Jr., University */
8/* All Rights Reserved */
9/* Produced by Andrew Hanushevsky for Stanford University under contract */
10/* DE-AC02-76-SFO0515 with the Department of Energy */
11/* */
12/* This file is part of the XRootD software suite. */
13/* */
14/* XRootD is free software: you can redistribute it and/or modify it under */
15/* the terms of the GNU Lesser General Public License as published by the */
16/* Free Software Foundation, either version 3 of the License, or (at your */
17/* option) any later version. */
18/* */
19/* XRootD is distributed in the hope that it will be useful, but WITHOUT */
20/* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or */
21/* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public */
22/* License for more details. */
23/* */
24/* You should have received a copy of the GNU Lesser General Public License */
25/* along with XRootD in a file called COPYING.LESSER (LGPL license) and file */
26/* COPYING (GPL license). If not, see <http://www.gnu.org/licenses/>. */
27/* */
28/* The copyright holder's institutional names and contributor's names may not */
29/* be used to endorse or promote products derived from this software without */
30/* specific prior written permission of the institution or contributor. */
31/******************************************************************************/
32
33#include "XProtocol/XPtypes.hh"
34
35/******************************************************************************/
36/* P a c k e t D e f i n i t i o n s */
37/******************************************************************************/
38
40 {kXR_char code; // '='|'d'|'f'|'i'|'p'|'r'|'t'|'u'|'x'
41 kXR_char pseq; // packet sequence
42 kXR_unt16 plen; // packet length
43 kXR_int32 stod; // Unix time at Server Start
44 };
45
57
62
72
79
82 int tBeg; // time(0) of the first record
83 int tEnd; // time(0) of the last record
84 kXR_int64 sID; // Server id in lower 48 bits
85}; // Information provider top 8 bits.
86
92
99const kXR_char XROOTD_MON_REDHOST = 0xf0; // No Modifier
101
102
105const kXR_char XROOTD_MON_MAPFSTA = 'f'; // The "f" stream
106const kXR_char XROOTD_MON_MAPGSTA = 'g'; // The "g" stream
108const kXR_char XROOTD_MON_MAPMIGR = 'm'; // Internal use only!
111const kXR_char XROOTD_MON_MAPSTAG = 's'; // Internal use only!
115const kXR_char XROOTD_MON_MAPUEAC = 'U'; // User experiment/activity
117
118const kXR_char XROOTD_MON_GSCCM = 'M'; // pfc: Cache context mgt info
119const kXR_char XROOTD_MON_GSPFC = 'C'; // pfc: Cache monitoring info
120const kXR_char XROOTD_MON_GSTCP = 'T'; // TCP connection statistics
121const kXR_char XROOTD_MON_GSTPC = 'P'; // TPC Third Party Copy
122
123// The following bits are insert in the low order 4 bits of the MON_REDIRECT
124// entry code to indicate the actual operation that was requestded.
125//
126const kXR_char XROOTD_MON_REDSID = 0xf0; // Server Identification
127const kXR_char XROOTD_MON_REDTIME = 0x00; // Timing mark
128
129const kXR_char XROOTD_MON_REDIRECT = 0x80; // With Modifier below!
130const kXR_char XROOTD_MON_REDLOCAL = 0x90; // With Modifier below!
131
132const kXR_char XROOTD_MON_CHMOD = 0x01; // Modifiers for the above
146
149
150const int XROOTD_MON_REDMASK = 0x00000ff;
151const int XROOTD_MON_SRCMASK = 0x000000f;
152const int XROOTD_MON_TRGMASK = 0x7fffff0;
153const int XROOTD_MON_NEWSTID = 0x8000000;
154
155const long long XROOTD_MON_SIDMASK = 0x0000ffffffffffff;
156const long long XROOTD_MON_PIDMASK = 0xff;
157const long long XROOTD_MON_PIDSHFT = 56;
158
159/******************************************************************************/
160/* " f " S t r e a m S p e c i f i c R e c o r d s */
161/******************************************************************************/
162
163// The UDP buffer layout is as follows:
164//
165// XrdXrootdMonHeader with Code == XROOTD_MON_MAPFSTA
166// XrdXrootdMonFileTOD with recType == isTime
167// XrdXrootdMonFileHdr with recType == one of recTval (variable length)
168// ... additional XrdXrootdMonFileHdr's (variable length)
169// XrdXrootdMonFileTOD with recType == isTime
170
172{
173enum recTval {isClose = 0, // Record for close
174 isOpen, // Record for open
175 isTime, // Record for time
176 isXfr, // Record for transfers
177 isDisc // Record for disconnection
178 };
179
180enum recFval {forced =0x01, // If recFlag == isClose close due to disconnect
181 hasOPS =0x02, // If recFlag == isClose MonStatXFR + MonStatOPS
182 hasSSQ =0x04, // If recFlag == isClose XFR + OPS + MonStatSSQ
183 hasCSE =0x04, // If recFlag == isClose XFR + OPS + MonStatSSQ
184 hasLFN =0x01, // If recFlag == isOpen the lfn is present
185 hasRW =0x02, // If recFlag == isOpen file opened r/w
186 hasSID =0x01 // if recFlag == isTime sID is present (new rec)
187 };
188
189char recType; // RecTval: isClose | isOpen | isTime | isXfr
190char recFlag; // RecFval: Record type-specific flags
191short recSize; // Size of this record in bytes
192union
193{
194kXR_unt32 fileID; // dictid of file for all rectypes except "disc" & "time"
195kXR_unt32 userID; // dictid of user for rectypes equal "disc"
196short nRecs[2]; // isTime: nRecs[0] == isXfr recs nRecs[1] == total recs
197};
198};
199
200// The following record is always be present as the first record in the udp
201// udp packet and should be used to establish the recording window.
202//
204{
206int tBeg; // time(0) of following record
207int tEnd; // time(0) when packet was sent
208kXR_int64 sID; // Server id in lower 48 bits
209};
210
211
212// The following variable length structure exists in XrdXrootdMonFileOPN if
213// "lfn" has been specified. It exists only when recFlag & hasLFN is TRUE.
214// The user's dictid will be zero (missing) if user monitoring is not enabled.
215//
217{
218kXR_unt32 user; // Monitoring dictid for the user, may be 0.
219char lfn[1028];// Variable length, use recSize!
220};
221
222// The following is reported when a file is opened. If "lfn" was specified and
223// Hdr.recFlag & hasLFN is TRUE the XrdXrootdMonFileLFN structure is present.
224// However, it variable in size and the next record will be found using recSize.
225// The lfn is gauranteed to end with at least one null byte.
226//
228{
230long long fsz; // 8 file size at time of open
231XrdXrootdMonFileLFN ufn; // Present ONLY if recFlag & hasLFN is TRUE
232};
233
234// The following data is collected on a per file basis
235//
236struct XrdXrootdMonStatPRW // 8 Bytes
237{
238long long rBytes; // Bytes read from file so far using pgread()
239int rCount; // Number of operations
240int rRetry; // Number of pgread retries (pages)
241long long wBytes; // Bytes written to file so far using pgwrite()
242int wCount; // Number of operations
243int wRetry; // Number of pgwrite retries (corrections)
244int wcsErr; // Number of pgwrite checksum errors
245int wcsUnc; // Number of pgwrite uncorrected checksums
246};
247
248struct XrdXrootdMonStatOPS // 48 Bytes
249{
250int read; // Number of read() calls
251int readv; // Number of readv() calls
252int write; // Number of write() calls
253short rsMin; // Smallest readv() segment count
254short rsMax; // Largest readv() segment count
255long long rsegs; // Number of readv() segments
256int rdMin; // Smallest read() request size
257int rdMax; // Largest read() request size
258int rvMin; // Smallest readv() request size
259int rvMax; // Largest readv() request size
260int wrMin; // Smallest write() request size
261int wrMax; // Largest write() request size
262};
263
265{
266long long dlong;
267double dreal;
268};
269
270struct XrdXrootdMonStatSSQ // 32 Bytes (all values net ordered IEEE754)
271{
272XrdXrootdMonDouble read; // Sum (all read requests)**2 (size)
273XrdXrootdMonDouble readv; // Sum (all readv requests)**2 (size as a unit)
274XrdXrootdMonDouble rsegs; // Sum (all readv segments)**2 (count as a unit)
275XrdXrootdMonDouble write; // Sum (all write requests)**2 (size)
276};
277
278// The following transfer data is collected for each open file.
279//
281{
282long long read; // Bytes read from file so far using read()
283long long readv; // Bytes read from file so far using readv()
284long long write; // Bytes written to file so far
285};
286
287// The following is reported upon file close. This is a variable length record.
288// The record always contains XrdXrootdMonStatXFR after XrdXrootdMonFileHdr.
289// If (recFlag & hasOPS) TRUE XrdXrootdMonStatOPS follows XrdXrootdMonStatXFR
290// If (recFlag & hasSSQ) TRUE XrdXrootdMonStatSQV follows XrdXrootdMonStatOPS
291// The XrdXrootdMonStatSSQ information is present only if "ssq" was specified.
292//
293struct XrdXrootdMonFileCLS // 32 | 80 | 96 Bytes
294{
295XrdXrootdMonFileHdr Hdr; // Always present (recSize has full length)
296XrdXrootdMonStatXFR Xfr; // Always present
297XrdXrootdMonStatOPS Ops; // Only present when (recFlag & hasOPS) is True
298XrdXrootdMonStatSSQ Ssq; // Only present when (recFlag & hasSSQ) is True
299};
300
301// The following is reported when a user ends a session.
302//
307
308// The following is reported each interval*count for each open file when "xfr"
309// is specified. These records may be interspersed with other records.
310//
311struct XrdXrootdMonFileXFR // 32 Bytes
312{
313XrdXrootdMonFileHdr Hdr; // Always present with recType == isXFR
314XrdXrootdMonStatXFR Xfr; // Always present
315};
316#endif
long long kXR_int64
Definition XPtypes.hh:98
int kXR_int32
Definition XPtypes.hh:89
unsigned int kXR_unt32
Definition XPtypes.hh:90
short kXR_int16
Definition XPtypes.hh:66
unsigned short kXR_unt16
Definition XPtypes.hh:67
unsigned char kXR_char
Definition XPtypes.hh:65
const kXR_char XROOTD_MON_OPENW
Definition XrdXrootdMonData.hh:137
const kXR_char XROOTD_MON_GSTPC
Definition XrdXrootdMonData.hh:121
const kXR_char XROOTD_MON_STAT
Definition XrdXrootdMonData.hh:144
const long long XROOTD_MON_PIDSHFT
Definition XrdXrootdMonData.hh:157
const kXR_char XROOTD_MON_REDLOCAL
Definition XrdXrootdMonData.hh:130
const kXR_char XROOTD_MON_GSTCP
Definition XrdXrootdMonData.hh:120
const kXR_char XROOTD_MON_DISC
Definition XrdXrootdMonData.hh:95
const kXR_char XROOTD_MON_MAPUEAC
Definition XrdXrootdMonData.hh:115
const kXR_char XROOTD_MON_WINDOW
Definition XrdXrootdMonData.hh:100
const kXR_char XROOTD_MON_READV
Definition XrdXrootdMonData.hh:97
const kXR_char XROOTD_MON_MAPGSTA
Definition XrdXrootdMonData.hh:106
const int XROOTD_MON_SRCMASK
Definition XrdXrootdMonData.hh:151
const kXR_char XROOTD_MON_PREP
Definition XrdXrootdMonData.hh:140
const int XROOTD_MON_NEWSTID
Definition XrdXrootdMonData.hh:153
const kXR_char XROOTD_MON_MAPUSER
Definition XrdXrootdMonData.hh:114
const kXR_char XROOTD_MON_APPID
Definition XrdXrootdMonData.hh:93
const kXR_char XROOTD_MON_MAPINFO
Definition XrdXrootdMonData.hh:107
const kXR_char XROOTD_MON_OPENC
Definition XrdXrootdMonData.hh:135
const kXR_char XROOTD_MON_TRUNC
Definition XrdXrootdMonData.hh:145
const kXR_char XROOTD_MON_REDSID
Definition XrdXrootdMonData.hh:126
const kXR_char XROOTD_MON_MAPIDNT
Definition XrdXrootdMonData.hh:103
const kXR_char XROOTD_MON_MAPTRCE
Definition XrdXrootdMonData.hh:112
const kXR_char XROOTD_MON_MAPXFER
Definition XrdXrootdMonData.hh:116
const kXR_char XROOTD_MON_BOUNDP
Definition XrdXrootdMonData.hh:148
const long long XROOTD_MON_SIDMASK
Definition XrdXrootdMonData.hh:155
const kXR_char XROOTD_MON_MAPMIGR
Definition XrdXrootdMonData.hh:108
const kXR_char XROOTD_MON_CLOSE
Definition XrdXrootdMonData.hh:94
const kXR_char XROOTD_MON_CHMOD
Definition XrdXrootdMonData.hh:132
const kXR_char XROOTD_MON_FORCED
Definition XrdXrootdMonData.hh:147
const kXR_char XROOTD_MON_MAPPATH
Definition XrdXrootdMonData.hh:104
const kXR_char XROOTD_MON_LOCATE
Definition XrdXrootdMonData.hh:133
const kXR_char XROOTD_MON_MAPSTAG
Definition XrdXrootdMonData.hh:111
const kXR_char XROOTD_MON_GSCCM
Definition XrdXrootdMonData.hh:118
const kXR_char XROOTD_MON_OPENR
Definition XrdXrootdMonData.hh:136
const kXR_char XROOTD_MON_REDTIME
Definition XrdXrootdMonData.hh:127
const int XROOTD_MON_TRGMASK
Definition XrdXrootdMonData.hh:152
const long long XROOTD_MON_PIDMASK
Definition XrdXrootdMonData.hh:156
const kXR_char XROOTD_MON_OPEN
Definition XrdXrootdMonData.hh:96
const kXR_char XROOTD_MON_MV
Definition XrdXrootdMonData.hh:139
const int XROOTD_MON_REDMASK
Definition XrdXrootdMonData.hh:150
const kXR_char XROOTD_MON_MAPFSTA
Definition XrdXrootdMonData.hh:105
const kXR_char XROOTD_MON_REDIRECT
Definition XrdXrootdMonData.hh:129
const kXR_char XROOTD_MON_RMDIR
Definition XrdXrootdMonData.hh:143
const kXR_char XROOTD_MON_MAPTOKN
Definition XrdXrootdMonData.hh:113
const kXR_char XROOTD_MON_GSPFC
Definition XrdXrootdMonData.hh:119
const kXR_char XROOTD_MON_RM
Definition XrdXrootdMonData.hh:142
const kXR_char XROOTD_MON_OPENDIR
Definition XrdXrootdMonData.hh:134
const kXR_char XROOTD_MON_REDHOST
Definition XrdXrootdMonData.hh:99
const kXR_char XROOTD_MON_MAPPURG
Definition XrdXrootdMonData.hh:109
const kXR_char XROOTD_MON_MAPREDR
Definition XrdXrootdMonData.hh:110
const kXR_char XROOTD_MON_QUERY
Definition XrdXrootdMonData.hh:141
const kXR_char XROOTD_MON_MKDIR
Definition XrdXrootdMonData.hh:138
const kXR_char XROOTD_MON_READU
Definition XrdXrootdMonData.hh:98
Definition XrdXrootdMonData.hh:59
XrdXrootdMonTrace info[sizeof(XrdXrootdMonTrace)]
Definition XrdXrootdMonData.hh:60
XrdXrootdMonHeader hdr
Definition XrdXrootdMonData.hh:59
Definition XrdXrootdMonData.hh:74
kXR_char sXX[8]
Definition XrdXrootdMonData.hh:76
XrdXrootdMonHeader hdr
Definition XrdXrootdMonData.hh:74
kXR_int64 sID
Definition XrdXrootdMonData.hh:75
XrdXrootdMonRedir info[sizeof(XrdXrootdMonRedir)]
Definition XrdXrootdMonData.hh:77
Definition XrdXrootdMonData.hh:294
XrdXrootdMonStatXFR Xfr
Definition XrdXrootdMonData.hh:296
XrdXrootdMonStatOPS Ops
Definition XrdXrootdMonData.hh:297
XrdXrootdMonStatSSQ Ssq
Definition XrdXrootdMonData.hh:298
XrdXrootdMonFileHdr Hdr
Definition XrdXrootdMonData.hh:295
Definition XrdXrootdMonData.hh:304
XrdXrootdMonFileHdr Hdr
Definition XrdXrootdMonData.hh:305
Definition XrdXrootdMonData.hh:172
kXR_unt32 userID
Definition XrdXrootdMonData.hh:195
kXR_unt32 fileID
Definition XrdXrootdMonData.hh:194
short nRecs[2]
Definition XrdXrootdMonData.hh:196
short recSize
Definition XrdXrootdMonData.hh:191
char recType
Definition XrdXrootdMonData.hh:189
recTval
Definition XrdXrootdMonData.hh:173
@ isDisc
Definition XrdXrootdMonData.hh:177
@ isXfr
Definition XrdXrootdMonData.hh:176
@ isTime
Definition XrdXrootdMonData.hh:175
@ isOpen
Definition XrdXrootdMonData.hh:174
@ isClose
Definition XrdXrootdMonData.hh:173
char recFlag
Definition XrdXrootdMonData.hh:190
recFval
Definition XrdXrootdMonData.hh:180
@ hasRW
Definition XrdXrootdMonData.hh:185
@ hasOPS
Definition XrdXrootdMonData.hh:181
@ forced
Definition XrdXrootdMonData.hh:180
@ hasLFN
Definition XrdXrootdMonData.hh:184
@ hasSSQ
Definition XrdXrootdMonData.hh:182
@ hasCSE
Definition XrdXrootdMonData.hh:183
@ hasSID
Definition XrdXrootdMonData.hh:186
Definition XrdXrootdMonData.hh:217
char lfn[1028]
Definition XrdXrootdMonData.hh:219
kXR_unt32 user
Definition XrdXrootdMonData.hh:218
Definition XrdXrootdMonData.hh:228
XrdXrootdMonFileLFN ufn
Definition XrdXrootdMonData.hh:231
long long fsz
Definition XrdXrootdMonData.hh:230
XrdXrootdMonFileHdr Hdr
Definition XrdXrootdMonData.hh:229
Definition XrdXrootdMonData.hh:204
XrdXrootdMonFileHdr Hdr
Definition XrdXrootdMonData.hh:205
int tBeg
Definition XrdXrootdMonData.hh:206
int tEnd
Definition XrdXrootdMonData.hh:207
kXR_int64 sID
Definition XrdXrootdMonData.hh:208
Definition XrdXrootdMonData.hh:312
XrdXrootdMonStatXFR Xfr
Definition XrdXrootdMonData.hh:314
XrdXrootdMonFileHdr Hdr
Definition XrdXrootdMonData.hh:313
Definition XrdXrootdMonData.hh:81
int tEnd
Definition XrdXrootdMonData.hh:83
int tBeg
Definition XrdXrootdMonData.hh:82
XrdXrootdMonHeader hdr
Definition XrdXrootdMonData.hh:81
kXR_int64 sID
Definition XrdXrootdMonData.hh:84
Definition XrdXrootdMonData.hh:40
kXR_int32 stod
Definition XrdXrootdMonData.hh:43
kXR_unt16 plen
Definition XrdXrootdMonData.hh:42
kXR_char pseq
Definition XrdXrootdMonData.hh:41
kXR_char code
Definition XrdXrootdMonData.hh:40
Definition XrdXrootdMonData.hh:88
kXR_unt32 dictid
Definition XrdXrootdMonData.hh:89
char info[1024+256]
Definition XrdXrootdMonData.hh:90
XrdXrootdMonHeader hdr
Definition XrdXrootdMonData.hh:88
Definition XrdXrootdMonData.hh:64
kXR_char Type
Definition XrdXrootdMonData.hh:65
kXR_unt32 dictid
Definition XrdXrootdMonData.hh:69
union XrdXrootdMonRedir::@165 arg1
kXR_int32 Window
Definition XrdXrootdMonData.hh:64
struct XrdXrootdMonRedir::@164::@166 rdr
kXR_int16 Port
Definition XrdXrootdMonData.hh:67
kXR_char Dent
Definition XrdXrootdMonData.hh:66
union XrdXrootdMonRedir::@164 arg0
Definition XrdXrootdMonData.hh:249
long long rsegs
Definition XrdXrootdMonData.hh:255
short rsMax
Definition XrdXrootdMonData.hh:254
int rvMax
Definition XrdXrootdMonData.hh:259
int write
Definition XrdXrootdMonData.hh:252
int read
Definition XrdXrootdMonData.hh:250
int rvMin
Definition XrdXrootdMonData.hh:258
int rdMax
Definition XrdXrootdMonData.hh:257
int wrMin
Definition XrdXrootdMonData.hh:260
short rsMin
Definition XrdXrootdMonData.hh:253
int wrMax
Definition XrdXrootdMonData.hh:261
int rdMin
Definition XrdXrootdMonData.hh:256
int readv
Definition XrdXrootdMonData.hh:251
Definition XrdXrootdMonData.hh:237
int wCount
Definition XrdXrootdMonData.hh:242
long long wBytes
Definition XrdXrootdMonData.hh:241
int wRetry
Definition XrdXrootdMonData.hh:243
int wcsErr
Definition XrdXrootdMonData.hh:244
int rCount
Definition XrdXrootdMonData.hh:239
long long rBytes
Definition XrdXrootdMonData.hh:238
int wcsUnc
Definition XrdXrootdMonData.hh:245
int rRetry
Definition XrdXrootdMonData.hh:240
Definition XrdXrootdMonData.hh:271
XrdXrootdMonDouble write
Definition XrdXrootdMonData.hh:275
XrdXrootdMonDouble read
Definition XrdXrootdMonData.hh:272
XrdXrootdMonDouble readv
Definition XrdXrootdMonData.hh:273
XrdXrootdMonDouble rsegs
Definition XrdXrootdMonData.hh:274
Definition XrdXrootdMonData.hh:281
long long readv
Definition XrdXrootdMonData.hh:283
long long read
Definition XrdXrootdMonData.hh:282
long long write
Definition XrdXrootdMonData.hh:284
Definition XrdXrootdMonData.hh:47
kXR_int64 val
Definition XrdXrootdMonData.hh:47
kXR_unt32 rTot[2]
Definition XrdXrootdMonData.hh:50
union XrdXrootdMonTrace::@162 arg1
kXR_int32 buflen
Definition XrdXrootdMonData.hh:51
union XrdXrootdMonTrace::@163 arg2
kXR_int32 Window
Definition XrdXrootdMonData.hh:52
kXR_unt16 sVal[4]
Definition XrdXrootdMonData.hh:49
kXR_unt32 dictid
Definition XrdXrootdMonData.hh:54
union XrdXrootdMonTrace::@161 arg0
kXR_unt32 wTot
Definition XrdXrootdMonData.hh:53
Definition XrdXrootdMonData.hh:265
long long dlong
Definition XrdXrootdMonData.hh:266
double dreal
Definition XrdXrootdMonData.hh:267