pub struct TpcConfig {
pub num_cores: usize,
pub key_spec: KeySpec,
pub cpu_pinning: bool,
pub cpu_start: usize,
pub inbox_capacity: usize,
pub outbox_capacity: usize,
pub reactor_config: ReactorConfig,
pub numa_aware: bool,
}Expand description
Configuration for the thread-per-core runtime.
Fields§
§num_cores: usizeNumber of cores to use
key_spec: KeySpecKey specification for routing
cpu_pinning: boolWhether to pin cores to CPUs
cpu_start: usizeStarting CPU ID for pinning (cores use cpu_start, cpu_start+1, …)
inbox_capacity: usizeInbox queue capacity per core
outbox_capacity: usizeOutbox queue capacity per core
reactor_config: ReactorConfigReactor configuration (applied to all cores)
numa_aware: boolEnable NUMA-aware memory allocation
Implementations§
Source§impl TpcConfig
impl TpcConfig
Sourcepub fn builder() -> TpcConfigBuilder
pub fn builder() -> TpcConfigBuilder
Creates a new configuration builder.
Sourcepub fn auto() -> Self
pub fn auto() -> Self
Creates configuration with automatic detection.
Detects system capabilities and generates an optimal configuration:
- Uses all available physical cores (minus 1 on systems with >8 cores)
- Enables CPU pinning on multi-core systems
- Enables NUMA-aware allocation on multi-socket systems
§Example
ⓘ
use laminar_core::tpc::TpcConfig;
let config = TpcConfig::auto();
println!("Using {} cores", config.num_cores);Trait Implementations§
Auto Trait Implementations§
impl Freeze for TpcConfig
impl RefUnwindSafe for TpcConfig
impl Send for TpcConfig
impl Sync for TpcConfig
impl Unpin for TpcConfig
impl UnwindSafe for TpcConfig
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Returns whether the given value has been niched. Read more
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
Writes data to
out indicating that a T is niched.