aboutsummaryrefslogtreecommitdiff
path: root/platform/linux-generic/include/odp_schedule_scalable_config.h
blob: a84dc07244b4cc5d00caa2e0ee480c294cc35906 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/* Copyright (c) 2017, ARM Limited. All rights reserved.
 *
 * Copyright (c) 2017-2018, Linaro Limited
 * All rights reserved.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */

#ifndef ODP_SCHEDULE_SCALABLE_CONFIG_H_
#define ODP_SCHEDULE_SCALABLE_CONFIG_H_

/*
 * Default scaling factor for the scheduler group
 *
 * This scaling factor is used when the application creates a scheduler
 * group with no worker threads.
 */
#define CONFIG_DEFAULT_XFACTOR 4

/*
 * Default weight (in events) for WRR in scalable scheduler
 *
 * This controls the per-queue weight for WRR between queues of the same
 * priority in the scalable scheduler
 * A higher value improves throughput while a lower value increases fairness
 * and thus likely decreases latency
 *
 * If WRR is undesired, set the value to ~0 which will use the largest possible
 * weight
 *
 * Note: an API for specifying this on a per-queue basis would be useful but is
 * not yet available
 */
#define CONFIG_WRR_WEIGHT 64

/*
 * Split queue producer/consumer metadata into separate cache lines.
 * This is beneficial on e.g. Cortex-A57 but not so much on A53.
 */
#define CONFIG_SPLIT_PRODCONS

/*
 * Use locks to protect queue (ring buffer) and scheduler state updates
 * On x86, this decreases overhead noticeably.
 */
#if !defined(__arm__) && !defined(__aarch64__)
#define CONFIG_QSCHST_LOCK
/* Keep all ring buffer/qschst data together when using locks */
#undef CONFIG_SPLIT_PRODCONS
#endif

#endif  /* ODP_SCHEDULE_SCALABLE_CONFIG_H_ */