Skip to content

Commit 2a49e18

Browse files
committed
crsync: add a few more comments for Counters
1 parent ab3080f commit 2a49e18

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

crsync/counters.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,8 +169,14 @@ func (c *Counters) All() iter.Seq[int64] {
169169
// counters at a time.
170170
var vals [countersPerCacheLine]int64
171171
for i := 0; i < c.numCounters; i += countersPerCacheLine {
172-
vals = [countersPerCacheLine]int64{}
172+
// We have a total of c.numCounters logical counters and we are processing
173+
// countersPerCacheLine logical counters at a time. So the last iteration
174+
// of this loop will have fewer than countersPerCacheLine logical counters
175+
// to read. n is the number of logical counters to read in this iteration.
173176
n := min(c.numCounters-i, countersPerCacheLine)
177+
// Iterate over all the shards and for this logical cache line, read the
178+
// physical cache line from each shard and aggregate into vals.
179+
vals = [countersPerCacheLine]int64{}
174180
for s := range c.numShards {
175181
start := int(s*c.shardSize) + i
176182
counters := c.counters[start : start+n]
@@ -180,6 +186,9 @@ func (c *Counters) All() iter.Seq[int64] {
180186
vals[j] += counters[j].Load()
181187
}
182188
}
189+
// Yield the values for the next set of n logical counters. Across the
190+
// iterations of the outer loop we will in total yield c.numCounters
191+
// values.
183192
for j := range n {
184193
if !yield(vals[j]) {
185194
return

0 commit comments

Comments
 (0)