Struct concread::arcache::ARCacheBuilder

source ·
pub struct ARCacheBuilder { /* private fields */ }
Expand description

A configurable builder to create new concurrent Adaptive Replacement Caches.

Implementations§

source§

impl ARCacheBuilder

source

pub fn new() -> Self

Create a new ARCache builder that you can configure before creation.

source

pub fn set_expected_workload( self, total: usize, threads: usize, ex_ro_miss: usize, ex_rw_miss: usize, read_cache: bool, ) -> Self

Configure a new ARCache, that derives its size based on your expected workload.

The values are total number of items you want to have in memory, the number of read threads you expect concurrently, the expected average number of cache misses per read operation, and the expected average number of writes or write cache misses per operation. The following formula is assumed:

max + (threads * (max/16)) + (threads * avg number of misses per op) + avg number of writes per transaction

The cache may still exceed your provided total, and inaccurate tuning numbers will yield a situation where you may use too-little ram, or too much. This could be to your read misses exceeding your expected amount causing the queues to have more items in them at a time, or your writes are larger than expected.

If you set ex_ro_miss to zero, no read thread local cache will be configured, but space will still be reserved for channel communication.

source

pub fn set_size(self, max: usize, read_max: usize) -> Self

Configure a new ARCache, with a capacity of max main cache items and read_max Note that due to the way the cache operates, the number of items can and will exceed max on a regular basis, so you should consider using set_expected_workload and specifying your expected workload parameters to have a better derived cache size.

source

pub fn set_watermark(self, watermark: usize) -> Self

See ARCache::new_size for more information. This allows manual configuration of the data tracking watermark. To disable this, set to 0. If watermark is greater than max, it will be clamped to max.

source

pub fn set_reader_quiesce(self, reader_quiesce: bool) -> Self

Enable or Disable reader cache quiescing. In some cases this can improve reader performance, at the expense that cache includes or hits may be delayed before acknowledgement. You must MANUALLY run periodic quiesces if you mark this as “false” to disable reader quiescing.

source

pub fn build<K, V>(self) -> Option<ARCache<K, V>>
where K: Hash + Eq + Ord + Clone + Debug + Sync + Send + 'static, V: Clone + Debug + Sync + Send + 'static,

Consume this builder, returning a cache if successful. If configured parameters are missing or incorrect, a None will be returned.

Trait Implementations§

source§

impl Default for ARCacheBuilder

source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more