xrootd
Loading...
Searching...
No Matches
XrdSsiScale.hh
Go to the documentation of this file.
1#ifndef __XRDSSISCALE_HH__
2#define __XRDSSISCALE_HH__
3/******************************************************************************/
4/* */
5/* X r d S s i S c a l e . h h */
6/* */
7/* (c) 2013 by the Board of Trustees of the Leland Stanford, Jr., University */
8/* Produced by Andrew Hanushevsky for Stanford University under contract */
9/* DE-AC02-76-SFO0515 with the Department of Energy */
10/* */
11/* This file is part of the XRootD software suite. */
12/* */
13/* XRootD is free software: you can redistribute it and/or modify it under */
14/* the terms of the GNU Lesser General Public License as published by the */
15/* Free Software Foundation, either version 3 of the License, or (at your */
16/* option) any later version. */
17/* */
18/* XRootD is distributed in the hope that it will be useful, but WITHOUT */
19/* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or */
20/* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public */
21/* License for more details. */
22/* */
23/* You should have received a copy of the GNU Lesser General Public License */
24/* along with XRootD in a file called COPYING.LESSER (LGPL license) and file */
25/* COPYING (GPL license). If not, see <http://www.gnu.org/licenses/>. */
26/* */
27/* The copyright holder's institutional names and contributor's names may not */
28/* be used to endorse or promote products derived from this software without */
29/* specific prior written permission of the institution or contributor. */
30/******************************************************************************/
31
32#include <cstdint>
33#include <cstring>
34
36
38{
39public:
40
41static const uint16_t defSprd = 4; // Initial spread
42static const uint16_t maxSprd = 1024; // Maximum spread
43static const uint16_t maxPend = 64000; // Maximum pending requests
44static const uint16_t minTune = 3; // Minimum remaining channels to tune
45static const uint16_t midTune = 64; // Quadratic tuning limit
46static const uint16_t maxTune = 128; // Maximum linear increase
47static const uint16_t zipTune = 512; // Channel count when maxTune applies
48
49int getEnt();
50
51void retEnt(int xEnt);
52
53bool rsvEnt(int xEnt);
54
55void setSpread(short sval);
56
58 curSpread(defSprd), autoTune(false), needTune(false)
59 {memset(pendCnt, 0, sizeof(uint16_t)*maxSprd);}
60
62
63private:
64
65void Retune();
66bool Tune(char *buff, int blen);
67
69uint32_t Active;
70uint32_t reActive;
71uint16_t begEnt;
72uint16_t nowEnt;
73uint16_t curSpread;
76uint16_t pendCnt[maxSprd];
77};
78#endif
Definition XrdSsiScale.hh:38
static const uint16_t maxSprd
Definition XrdSsiScale.hh:42
uint32_t reActive
Definition XrdSsiScale.hh:70
bool Tune(char *buff, int blen)
uint16_t curSpread
Definition XrdSsiScale.hh:73
static const uint16_t defSprd
Definition XrdSsiScale.hh:41
void Retune()
static const uint16_t zipTune
Definition XrdSsiScale.hh:47
void setSpread(short sval)
uint32_t Active
Definition XrdSsiScale.hh:69
XrdSsiScale()
Definition XrdSsiScale.hh:57
uint16_t begEnt
Definition XrdSsiScale.hh:71
static const uint16_t maxPend
Definition XrdSsiScale.hh:43
XrdSysMutex entMutex
Definition XrdSsiScale.hh:68
bool autoTune
Definition XrdSsiScale.hh:74
bool needTune
Definition XrdSsiScale.hh:75
static const uint16_t midTune
Definition XrdSsiScale.hh:45
uint16_t pendCnt[maxSprd]
Definition XrdSsiScale.hh:76
static const uint16_t maxTune
Definition XrdSsiScale.hh:46
~XrdSsiScale()
Definition XrdSsiScale.hh:61
bool rsvEnt(int xEnt)
uint16_t nowEnt
Definition XrdSsiScale.hh:72
static const uint16_t minTune
Definition XrdSsiScale.hh:44
void retEnt(int xEnt)
Definition XrdSysPthread.hh:165