High performance C++ framework for concurrent servers
Public Member Functions | List of all members
seastar::fair_queue_ticket Class Reference

Detailed Description

describes a request that passes through the fair_queue.

A ticket is specified by a weight and a size. For example, one can specify a request of weight 1 and size 16kB. If the fair_queue accepts one such request per second, it will sustain 1 IOPS at 16kB/s bandwidth.

#include <seastar/core/fair_queue.hh>

Public Member Functions

 fair_queue_ticket (uint32_t weight, uint32_t size) noexcept
fair_queue_ticket operator+ (fair_queue_ticket desc) const noexcept
fair_queue_ticket operator- (fair_queue_ticket desc) const noexcept
fair_queue_ticketoperator+= (fair_queue_ticket desc) noexcept
fair_queue_ticketoperator-= (fair_queue_ticket desc) noexcept
bool operator== (const fair_queue_ticket &desc) const noexcept
 operator bool () const noexcept
bool is_non_zero () const noexcept
float normalize (fair_queue_ticket axis) const noexcept

Constructor & Destructor Documentation

◆ fair_queue_ticket()

seastar::fair_queue_ticket::fair_queue_ticket ( uint32_t  weight,
uint32_t  size 

Constructs a fair_queue_ticket with a given weight and a given size

weightthe weight of the request
sizethe size of the request

Member Function Documentation

◆ normalize()

float seastar::fair_queue_ticket::normalize ( fair_queue_ticket  axis) const
the normalized value of this fair_queue_ticket along a base axis

The normalization function itself is an implementation detail, but one can expect either weight or size to have more or less relative importance depending on which of the dimensions in the denominator is relatively higher. For example, given this request a, and two other requests b and c, such that that c has the same weight but a higher size than b, one can expect the size component of this request to play a larger role.

It is legal for the numerator to have one of the quantities set to zero, in which case only the other quantity is taken into consideration.

It is however not legal for the axis to have any quantity set to zero.

axisanother fair_queue_ticket to be used as a a base vector against which to normalize this fair_queue_ticket.

◆ operator bool()

seastar::fair_queue_ticket::operator bool ( ) const
true if the fair_queue_ticket represents a non-zero quantity.

For a fair_queue ticket to be non-zero, at least one of its represented quantities need to be non-zero

◆ operator+=()

fair_queue_ticket& seastar::fair_queue_ticket::operator+= ( fair_queue_ticket  desc)

Increase the quantity represented in this ticket by the amount represented by desc

descanother fair_queue_ticket whose weight and size will be added to this one

◆ operator-=()

fair_queue_ticket& seastar::fair_queue_ticket::operator-= ( fair_queue_ticket  desc)

Decreases the quantity represented in this ticket by the amount represented by desc

descanother fair_queue_ticket whose weight and size will be decremented from this one

◆ operator==()

bool seastar::fair_queue_ticket::operator== ( const fair_queue_ticket desc) const

Checks if the tickets fully equals to another one

descanother fair_queue_ticket to compare with

The documentation for this class was generated from the following file: