Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 9 additions & 3 deletions tcmalloc/internal/numa.h
Original file line number Diff line number Diff line change
Expand Up @@ -236,15 +236,19 @@ inline size_t NumaTopology<NumPartitions, ScaleBy>::GetCurrentPartition()
const {
if constexpr (NumPartitions == 1) return 0;
const int cpu = subtle::percpu::GetRealCpuUnsafe();
return gated_cpu_to_scaled_partition_[cpu + kNumaCpuFudge] / ScaleBy;
size_t idx = static_cast<size_t>(cpu + kNumaCpuFudge);
if (ABSL_PREDICT_FALSE(idx >= kCpuMapSize)) return 0;
return gated_cpu_to_scaled_partition_[idx] / ScaleBy;
}

template <size_t NumPartitions, size_t ScaleBy>
inline size_t NumaTopology<NumPartitions, ScaleBy>::GetCurrentScaledPartition()
const {
if constexpr (NumPartitions == 1) return 0;
const int cpu = subtle::percpu::GetRealCpuUnsafe();
return gated_cpu_to_scaled_partition_[cpu + kNumaCpuFudge];
size_t idx = static_cast<size_t>(cpu + kNumaCpuFudge);
if (ABSL_PREDICT_FALSE(idx >= kCpuMapSize)) return 0;
return gated_cpu_to_scaled_partition_[idx];
}

template <size_t NumPartitions, size_t ScaleBy>
Expand All @@ -256,7 +260,9 @@ inline size_t NumaTopology<NumPartitions, ScaleBy>::GetCpuPartition(
template <size_t NumPartitions, size_t ScaleBy>
inline size_t NumaTopology<NumPartitions, ScaleBy>::GetCpuScaledPartition(
const int cpu) const {
return cpu_to_scaled_partition_[cpu + kNumaCpuFudge];
size_t idx = static_cast<size_t>(cpu + kNumaCpuFudge);
if (ABSL_PREDICT_FALSE(idx >= kCpuMapSize)) return 0;
return cpu_to_scaled_partition_[idx];
}

template <size_t NumPartitions, size_t ScaleBy>
Expand Down
Loading