event: Remove max_delay_us parameter

The thread scheduling mechanism is being rewritten and this
won't be used in the new system.

Change-Id: I829e8118ed0a10480bd86934b45e68fcb810931a
Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-on: https://review.gerrithub.io/c/444453
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
Ben Walker 2019-02-13 09:56:13 -07:00 committed by Jim Harris
parent ae9faf3ac7
commit 3569ea154a
4 changed files with 12 additions and 48 deletions

View File

@ -112,7 +112,9 @@ struct spdk_app_opts {
struct spdk_pci_addr *pci_blacklist;
struct spdk_pci_addr *pci_whitelist;
/* The maximum latency allowed when passing an event
/* DEPRECATED. No longer has any effect.
*
* The maximum latency allowed when passing an event
* from one core to another. A value of 0
* means all cores continually poll. This is
* specified in microseconds.

View File

@ -46,7 +46,7 @@ struct spdk_event {
void *arg2;
};
int spdk_reactors_init(unsigned int max_delay_us);
int spdk_reactors_init(void);
void spdk_reactors_fini(void);
void spdk_reactors_start(void);

View File

@ -279,7 +279,6 @@ spdk_app_opts_init(struct spdk_app_opts *opts)
opts->master_core = SPDK_APP_DPDK_DEFAULT_MASTER_CORE;
opts->mem_channel = SPDK_APP_DPDK_DEFAULT_MEM_CHANNEL;
opts->reactor_mask = NULL;
opts->max_delay_us = 0;
opts->print_level = SPDK_APP_DEFAULT_LOG_PRINT_LEVEL;
opts->rpc_addr = SPDK_DEFAULT_RPC_ADDR;
opts->num_entries = SPDK_APP_DEFAULT_NUM_TRACE_ENTRIES;
@ -629,7 +628,7 @@ spdk_app_start(struct spdk_app_opts *opts, spdk_event_fn start_fn,
* reactor_mask will be 0x1 which will enable core 0 to run one
* reactor.
*/
if ((rc = spdk_reactors_init(opts->max_delay_us)) != 0) {
if ((rc = spdk_reactors_init()) != 0) {
SPDK_ERRLOG("Reactor Initilization failed: rc = %d\n", rc);
goto app_start_log_close_err;
}
@ -985,12 +984,8 @@ spdk_app_parse_args(int argc, char **argv, struct spdk_app_opts *opts,
}
break;
case MAX_REACTOR_DELAY_OPT_IDX:
tmp = spdk_strtol(optarg, 10);
if (tmp < 0) {
fprintf(stderr, "Invalid maximum latency %s\n", optarg);
goto out;
}
opts->max_delay_us = (uint64_t)tmp;
fprintf(stderr,
"Deprecation warning: The maximum allowed latency parameter is no longer supported.\n");
break;
case '?':
/*

View File

@ -64,8 +64,6 @@ struct spdk_reactor {
struct rusage rusage;
struct spdk_ring *events;
uint64_t max_delay_us;
} __attribute__((aligned(64)));
static struct spdk_reactor *g_reactors;
@ -74,8 +72,7 @@ static enum spdk_reactor_state g_reactor_state = SPDK_REACTOR_STATE_INVALID;
static bool g_context_switch_monitor_enabled = true;
static void spdk_reactor_construct(struct spdk_reactor *w, uint32_t lcore,
uint64_t max_delay_us);
static void spdk_reactor_construct(struct spdk_reactor *w, uint32_t lcore);
static struct spdk_mempool *g_spdk_event_mempool = NULL;
@ -239,10 +236,6 @@ _spdk_reactor_run(void *arg)
{
struct spdk_reactor *reactor = arg;
struct spdk_thread *thread;
uint64_t now;
uint64_t sleep_cycles;
uint32_t sleep_us;
int rc;
char thread_name[32];
snprintf(thread_name, sizeof(thread_name), "reactor_%u", reactor->lcore);
@ -252,7 +245,6 @@ _spdk_reactor_run(void *arg)
}
SPDK_NOTICELOG("Reactor started on core %u\n", reactor->lcore);
sleep_cycles = reactor->max_delay_us * spdk_get_ticks_hz() / SPDK_SEC_TO_USEC;
if (g_context_switch_monitor_enabled) {
spdk_set_thread(thread);
_spdk_reactor_context_switch_monitor_start(reactor, NULL);
@ -262,31 +254,7 @@ _spdk_reactor_run(void *arg)
while (1) {
_spdk_event_queue_run_batch(reactor, thread);
rc = spdk_thread_poll(thread, 0, 0);
/* Determine if the thread can sleep */
if (sleep_cycles && rc == 0) {
uint64_t next_run_tick;
now = spdk_get_ticks();
sleep_us = reactor->max_delay_us;
next_run_tick = spdk_thread_next_poller_expiration(thread);
/* There are timers registered, so don't sleep beyond
* when the next timer should fire */
if (next_run_tick > 0 && next_run_tick < (now + sleep_cycles)) {
if (next_run_tick <= now) {
sleep_us = 0;
} else {
sleep_us = ((next_run_tick - now) *
SPDK_SEC_TO_USEC) / spdk_get_ticks_hz();
}
}
if (sleep_us > 0) {
usleep(sleep_us);
}
}
spdk_thread_poll(thread, 0, 0);
if (g_reactor_state != SPDK_REACTOR_STATE_RUNNING) {
break;
@ -300,10 +268,9 @@ _spdk_reactor_run(void *arg)
}
static void
spdk_reactor_construct(struct spdk_reactor *reactor, uint32_t lcore, uint64_t max_delay_us)
spdk_reactor_construct(struct spdk_reactor *reactor, uint32_t lcore)
{
reactor->lcore = lcore;
reactor->max_delay_us = max_delay_us;
reactor->events = spdk_ring_create(SPDK_RING_TYPE_MP_SC, 65536, SPDK_ENV_SOCKET_ID_ANY);
assert(reactor->events != NULL);
@ -374,7 +341,7 @@ spdk_reactors_stop(void *arg1, void *arg2)
}
int
spdk_reactors_init(unsigned int max_delay_us)
spdk_reactors_init(void)
{
int rc;
uint32_t i, last_core;
@ -410,7 +377,7 @@ spdk_reactors_init(unsigned int max_delay_us)
SPDK_ENV_FOREACH_CORE(i) {
reactor = spdk_reactor_get(i);
spdk_reactor_construct(reactor, i, max_delay_us);
spdk_reactor_construct(reactor, i);
}
g_reactor_state = SPDK_REACTOR_STATE_INITIALIZED;