41extern XrdSysError
Log;
52 static const int tuneMLen = 80;
53 char tuneMsg[tuneMLen]; *tuneMsg = 0;
61 uint16_t endEnt = curSpread;
62 do {
for (uint16_t i = nowEnt; i < endEnt; i++)
66 if (!begEnt || i < begEnt) Active++;
69 if (*tuneMsg)
Log.Emsg(
"Scale", tuneMsg);
78 {
if (!autoTune || !Tune(tuneMsg, tuneMLen))
break;
80 }
else endEnt = nowEnt;
87 if (*tuneMsg)
Log.Emsg(
"Scale", tuneMsg);
101 if (xEnt >= 0 && xEnt <
int(
maxSprd))
105 if (!begEnt || xEnt < (
int)begEnt)
106 {
if (Active) Active--;
107 if (begEnt && needTune && Active <= (reActive + (reActive>>1)))
111 }
else if (reActive) reActive--;
124void XrdSsiScale::Retune()
135 {uint32_t totReq = Active + reActive, spread = curSpread;
144 snprintf(buff,
sizeof(buff),
"retune %u requests; spread %u",
146 Log.Emsg(
"Scale", buff);
147 }
else entMutex.UnLock();
159 if (xEnt >= 0 && xEnt <
int(
maxSprd))
181 if (sval < 0) sval = -sval;
183 autoTune = needTune =
false;
189 if (sval <
short(
maxSprd)) newSpread =
static_cast<uint16_t
>(sval);
191 if (autoTune && newSpread < curSpread)
195 curSpread = newSpread;
205bool XrdSsiScale::Tune(
char *buff,
int blen)
213 autoTune = needTune =
false;
220 if (curSpread <
midTune) n = curSpread << 1;
228 if (n <=
maxSprd) nowEnt = begEnt = curSpread;
231 autoTune = needTune =
false;
244 snprintf(buff, blen,
"tune %u requests; spread %u/%u", Active, n-begEnt, n);
static const uint16_t maxSprd
static const uint16_t zipTune
void setSpread(short sval)
static const uint16_t maxPend
static const uint16_t midTune
static const uint16_t maxTune
static const uint16_t minTune