session: limit pacer bucket size
Type: feature
Change-Id: I3ca27b09670716eba463d7b16771f765a1bd6dcd
Signed-off-by: Florin Coras <fcoras@cisco.com>
(cherry picked from commit 7c8f828ba3
)
This commit is contained in:

committed by
Andrew Yourtchenko

parent
3d7e472309
commit
079895d95f
@ -581,7 +581,7 @@ spacer_max_burst (spacer_t * pacer, u64 norm_time_now)
|
|||||||
if (n_periods > 0 && (inc = n_periods * pacer->tokens_per_period) > 10)
|
if (n_periods > 0 && (inc = n_periods * pacer->tokens_per_period) > 10)
|
||||||
{
|
{
|
||||||
pacer->last_update = norm_time_now;
|
pacer->last_update = norm_time_now;
|
||||||
pacer->bucket += inc;
|
pacer->bucket = clib_min (pacer->bucket + inc, pacer->bytes_per_sec);
|
||||||
}
|
}
|
||||||
|
|
||||||
return clib_min (pacer->bucket, TRANSPORT_PACER_MAX_BURST);
|
return clib_min (pacer->bucket, TRANSPORT_PACER_MAX_BURST);
|
||||||
@ -598,13 +598,14 @@ static inline void
|
|||||||
spacer_set_pace_rate (spacer_t * pacer, u64 rate_bytes_per_sec)
|
spacer_set_pace_rate (spacer_t * pacer, u64 rate_bytes_per_sec)
|
||||||
{
|
{
|
||||||
ASSERT (rate_bytes_per_sec != 0);
|
ASSERT (rate_bytes_per_sec != 0);
|
||||||
|
pacer->bytes_per_sec = rate_bytes_per_sec;
|
||||||
pacer->tokens_per_period = rate_bytes_per_sec / transport_pacer_period;
|
pacer->tokens_per_period = rate_bytes_per_sec / transport_pacer_period;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline u64
|
static inline u64
|
||||||
spacer_pace_rate (spacer_t * pacer)
|
spacer_pace_rate (spacer_t * pacer)
|
||||||
{
|
{
|
||||||
return pacer->tokens_per_period * transport_pacer_period;
|
return pacer->bytes_per_sec;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -49,6 +49,7 @@ typedef enum transport_connection_flags_
|
|||||||
|
|
||||||
typedef struct _spacer
|
typedef struct _spacer
|
||||||
{
|
{
|
||||||
|
u64 bytes_per_sec;
|
||||||
u64 bucket;
|
u64 bucket;
|
||||||
u64 last_update;
|
u64 last_update;
|
||||||
f32 tokens_per_period;
|
f32 tokens_per_period;
|
||||||
|
Reference in New Issue
Block a user