From 77ffbdde6c9cea160850c8347e9a2f509f12327a Mon Sep 17 00:00:00 2001 From: Alex Peck Date: Wed, 26 Aug 2026 09:45:25 -0700 Subject: [PATCH 1/2] use proc id --- BitFaster.Caching/Counters/Striped64.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/BitFaster.Caching/Counters/Striped64.cs b/BitFaster.Caching/Counters/Striped64.cs index 370f6cd7..b7756c55 100644 --- a/BitFaster.Caching/Counters/Striped64.cs +++ b/BitFaster.Caching/Counters/Striped64.cs @@ -81,8 +81,11 @@ namespace BitFaster.Caching.Counters public abstract class Striped64 { // Number of CPUS, to place bound on table size +#if NETCOREAPP2_1_OR_GREATER + private static readonly int MaxBuckets = Environment.ProcessorCount; +#else private static readonly int MaxBuckets = Environment.ProcessorCount * 4; - +#endif /// /// The base value used mainly when there is no contention, but also as a fallback /// during table initialization races. Updated via CAS. @@ -135,7 +138,11 @@ private void VolatileWriteNotBusy() protected static int GetProbe() { // Note: this results in higher throughput than introducing a random. +#if NETCOREAPP2_1_OR_GREATER + return Thread.GetCurrentProcessorId(); +#else return Environment.CurrentManagedThreadId; +#endif } /** From 4b4767af0e66028a13b0e44f3967ed8958940d8d Mon Sep 17 00:00:00 2001 From: Alex Peck Date: Wed, 26 Aug 2026 10:05:02 -0700 Subject: [PATCH 2/2] limit --- BitFaster.Caching/Counters/Striped64.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BitFaster.Caching/Counters/Striped64.cs b/BitFaster.Caching/Counters/Striped64.cs index b7756c55..0856b0fe 100644 --- a/BitFaster.Caching/Counters/Striped64.cs +++ b/BitFaster.Caching/Counters/Striped64.cs @@ -82,7 +82,7 @@ public abstract class Striped64 { // Number of CPUS, to place bound on table size #if NETCOREAPP2_1_OR_GREATER - private static readonly int MaxBuckets = Environment.ProcessorCount; + private static readonly int MaxBuckets = BitOps.CeilingPowerOfTwo(Environment.ProcessorCount); #else private static readonly int MaxBuckets = Environment.ProcessorCount * 4; #endif