00001 #ifndef __CMS_PERFMON__ 00002 #define __CMS_PERFMON__ 00003 /******************************************************************************/ 00004 /* */ 00005 /* X r d C m s P e r f M o n . h h */ 00006 /* */ 00007 /* (c) 2019 by the Board of Trustees of the Leland Stanford, Jr., University */ 00008 /* All Rights Reserved */ 00009 /* Produced by Andrew Hanushevsky for Stanford University under contract */ 00010 /* DE-AC02-76-SFO0515 with the Department of Energy */ 00011 /* */ 00012 /* This file is part of the XRootD software suite. */ 00013 /* */ 00014 /* XRootD is free software: you can redistribute it and/or modify it under */ 00015 /* the terms of the GNU Lesser General Public License as published by the */ 00016 /* Free Software Foundation, either version 3 of the License, or (at your */ 00017 /* option) any later version. */ 00018 /* */ 00019 /* XRootD is distributed in the hope that it will be useful, but WITHOUT */ 00020 /* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or */ 00021 /* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public */ 00022 /* License for more details. */ 00023 /* */ 00024 /* You should have received a copy of the GNU Lesser General Public License */ 00025 /* along with XRootD in a file called COPYING.LESSER (LGPL license) and file */ 00026 /* COPYING (GPL license). If not, see <http://www.gnu.org/licenses/>. */ 00027 /* */ 00028 /* The copyright holder's institutional names and contributor's names may not */ 00029 /* be used to endorse or promote products derived from this software without */ 00030 /* specific prior written permission of the institution or contributor. */ 00031 /******************************************************************************/ 00032 00033 class XrdOucEnv; 00034 class XrdSysLogger; 00035 00036 /******************************************************************************/ 00037 /* c l a s s X r d C m s P e r f M o n */ 00038 /******************************************************************************/ 00039 00040 /* The XrdCmsPerfMon is used to report performance metrics. It is obtained 00041 from the shared library loaded at run time and identified by the cms.perf 00042 directive. The library should contain an implementation of this class. 00043 */ 00044 00045 class XrdCmsPerfMon 00046 { 00047 public: 00048 00049 //------------------------------------------------------------------------------ 00063 //------------------------------------------------------------------------------ 00064 00065 virtual bool Configure(const char *cfn, 00066 char *Parms, 00067 XrdSysLogger &Logger, 00068 XrdCmsPerfMon &cmsMon, 00069 XrdOucEnv *EnvInfo, 00070 bool isCMS) 00071 {(void)cfn; (void)Parms; (void)Logger; (void)cmsMon; 00072 (void)EnvInfo; (void)isCMS; 00073 return false; 00074 } 00075 00076 //------------------------------------------------------------------------------ 00078 //------------------------------------------------------------------------------ 00079 00080 struct PerfInfo 00081 {unsigned char cpu_load; 00082 unsigned char mem_load; 00083 unsigned char net_load; 00084 unsigned char pag_load; 00085 unsigned char xeq_load; 00086 unsigned char xxx_load; 00087 unsigned char yyy_load; 00088 unsigned char zzz_load; 00089 00090 void Clear() {cpu_load = mem_load = net_load = pag_load = xeq_load = 0; 00091 xxx_load = yyy_load = zzz_load = 0; 00092 } 00093 00094 PerfInfo() {Clear();} 00095 ~PerfInfo() {} 00096 }; 00097 00098 //------------------------------------------------------------------------------ 00104 //------------------------------------------------------------------------------ 00105 00106 virtual void GetInfo(PerfInfo &info) {(void)info;} 00107 00108 //------------------------------------------------------------------------------ 00118 //------------------------------------------------------------------------------ 00119 00120 virtual void PutInfo(PerfInfo &info, bool alert=false) 00121 {(void)info; (void)alert;} 00122 00123 //------------------------------------------------------------------------------ 00125 //------------------------------------------------------------------------------ 00126 00127 XrdCmsPerfMon() {} 00128 00129 virtual ~XrdCmsPerfMon() {} 00130 }; 00131 00132 /******************************************************************************/ 00133 /* L i b r a r y X r d C m s P e r f M o n D e f i n i i o n */ 00134 /******************************************************************************/ 00135 00136 //------------------------------------------------------------------------------ 00143 //------------------------------------------------------------------------------ 00144 00145 //------------------------------------------------------------------------------ 00150 //------------------------------------------------------------------------------ 00151 00156 #endif