[PATCH v1] sched: enable/disable TC OV at runtime
Stephen Hemminger
stephen at networkplumber.org
Thu Mar 10 21:23:25 CET 2022
On Thu, 10 Mar 2022 19:54:26 +0000
Megha Ajmera <megha.ajmera at intel.com> wrote:
> diff --git a/lib/sched/rte_sched.c b/lib/sched/rte_sched.c
> index ec74bee939..1d05089d00 100644
> --- a/lib/sched/rte_sched.c
> +++ b/lib/sched/rte_sched.c
> @@ -155,6 +155,7 @@ struct rte_sched_subport {
> uint64_t tc_credits[RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE];
>
> /* TC oversubscription */
> + uint8_t is_tc_ov_enabled;
> uint64_t tc_ov_wm;
> uint64_t tc_ov_wm_min;
> uint64_t tc_ov_wm_max;
Putting the field there creates a hole in the structure.
Put it after tc_ov and fill an existing hole.
This is pahole of current code, looks like this struct could
use some work to be better packed and aligned.
struct rte_sched_port {
uint32_t n_subports_per_port; /* 0 4 */
uint32_t n_pipes_per_subport; /* 4 4 */
uint32_t n_pipes_per_subport_log2; /* 8 4 */
uint16_t pipe_queue[13]; /* 12 26 */
uint8_t pipe_tc[16]; /* 38 16 */
uint8_t tc_queue[16]; /* 54 16 */
/* XXX 2 bytes hole, try to pack */
/* --- cacheline 1 boundary (64 bytes) was 8 bytes ago --- */
uint32_t n_subport_profiles; /* 72 4 */
uint32_t n_max_subport_profiles; /* 76 4 */
uint64_t rate; /* 80 8 */
uint32_t mtu; /* 88 4 */
uint32_t frame_overhead; /* 92 4 */
int socket; /* 96 4 */
/* XXX 4 bytes hole, try to pack */
uint64_t time_cpu_cycles; /* 104 8 */
uint64_t time_cpu_bytes; /* 112 8 */
uint64_t time; /* 120 8 */
/* --- cacheline 2 boundary (128 bytes) --- */
struct rte_reciprocal inv_cycles_per_byte; /* 128 8 */
/* XXX last struct has 2 bytes of padding */
uint64_t cycles_per_byte; /* 136 8 */
struct rte_mbuf * * pkts_out; /* 144 8 */
uint32_t n_pkts_out; /* 152 4 */
uint32_t subport_id; /* 156 4 */
struct rte_sched_subport_profile * subport_profiles; /* 160 8 */
/* XXX 24 bytes hole, try to pack */
/* --- cacheline 3 boundary (192 bytes) --- */
struct rte_sched_subport * subports[] __attribute__((__aligned__(64))); /* 192 0 */
/* size: 192, cachelines: 3, members: 22 */
/* sum members: 162, holes: 3, sum holes: 30 */
/* paddings: 1, sum paddings: 2 */
/* forced alignments: 1, forced holes: 1, sum forced holes: 24 */
} __attribute__((__aligned__(64)));
More information about the dev
mailing list