Addition of new tuning parameters for epoll spins and wait time
This commit is contained in:
@ -66,6 +66,7 @@
|
||||
#include <adminusers.h>
|
||||
#include <monitor.h>
|
||||
#include <debugcli.h>
|
||||
#include <poll.h>
|
||||
|
||||
#include <skygw_utils.h>
|
||||
#include <log_manager.h>
|
||||
@ -81,6 +82,7 @@
|
||||
#define ARG_TYPE_DCB 7
|
||||
#define ARG_TYPE_MONITOR 8
|
||||
#define ARG_TYPE_FILTER 9
|
||||
#define ARG_TYPE_NUMERIC 10
|
||||
|
||||
/**
|
||||
* The subcommand structure
|
||||
@ -286,6 +288,8 @@ struct subcommand restartoptions[] = {
|
||||
};
|
||||
|
||||
static void set_server(DCB *dcb, SERVER *server, char *bit);
|
||||
static void set_pollsleep(DCB *dcb, int);
|
||||
static void set_nbpoll(DCB *dcb, int);
|
||||
/**
|
||||
* The subcommands of the set command
|
||||
*/
|
||||
@ -294,6 +298,15 @@ struct subcommand setoptions[] = {
|
||||
"Set the status of a server. E.g. set server dbnode4 master",
|
||||
"Set the status of a server. E.g. set server 0x4838320 master",
|
||||
{ARG_TYPE_SERVER, ARG_TYPE_STRING, 0} },
|
||||
{ "pollsleep", 1, set_pollsleep,
|
||||
"Set the maximum poll sleep period in milliseconds",
|
||||
"Set the maximum poll sleep period in milliseconds",
|
||||
{ARG_TYPE_NUMERIC, 0, 0} },
|
||||
{ "nbpolls", 1, set_nbpoll,
|
||||
"Set the number of non-blocking polls",
|
||||
"Set the number of non-blocking polls",
|
||||
{ARG_TYPE_NUMERIC, 0, 0} },
|
||||
|
||||
{ NULL, 0, NULL, NULL, NULL,
|
||||
{0, 0, 0} }
|
||||
};
|
||||
@ -577,6 +590,16 @@ SERVICE *service;
|
||||
if (mode == CLIM_USER || (rval = (unsigned long)strtol(arg, NULL, 0)) == 0)
|
||||
rval = (unsigned long)filter_find(arg);
|
||||
return rval;
|
||||
case ARG_TYPE_NUMERIC:
|
||||
{
|
||||
int i;
|
||||
for (i = 0; arg[i]; i++)
|
||||
{
|
||||
if (arg[i] < '0' || arg[i] > '9')
|
||||
return 0;
|
||||
}
|
||||
return atoi(arg);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@ -1117,6 +1140,30 @@ static void disable_log_action(DCB *dcb, char *arg1) {
|
||||
skygw_log_disable(type);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the duration of the sleep passed to the poll wait
|
||||
*
|
||||
* @param dcb DCB for output
|
||||
* @param sleeptime Sleep time in milliseconds
|
||||
*/
|
||||
static void
|
||||
set_pollsleep(DCB *dcb, int sleeptime)
|
||||
{
|
||||
poll_set_maxwait(sleeptime);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the number of non-blockign spins to make
|
||||
*
|
||||
* @param dcb DCB for output
|
||||
* @param nb Number of spins
|
||||
*/
|
||||
static void
|
||||
set_nbpoll(DCB *dcb, int nb)
|
||||
{
|
||||
poll_set_nonblocking_polls(nb);
|
||||
}
|
||||
|
||||
#if defined(SS_DEBUG)
|
||||
static void fail_backendfd(void)
|
||||
{
|
||||
|
Reference in New Issue
Block a user