Skip to content

sysinfo: report L2 caches shared by several cores - #3954

Open
kad wants to merge 1 commit into
google:masterfrom
kad:fix/shared-l2-cache
Open

kad wants to merge 1 commit into
google:masterfrom
kad:fix/shared-l2-cache

Conversation

@kad

@kad kad commented Oct 22, 2026

Copy link
Copy Markdown

addCacheInfo does not report an L2 cache that several cores share. It keeps a level 1 or 2 cache only if it belongs to one core, so on CPUs where a few cores share an L2 (Xeon 6 with E-cores, the E-cores of Core i7-12700K) the cache is missing in machine info, although sysfs shows it.

Handle such an L2 like the caches above L2: put it into Node.Caches if all CPUs of the node share it, otherwise into Core.UncoreCaches. A cache private to one core stays in Core.Caches. L3 handling is not changed.

In UncoreCaches the L2 now comes before the L3, so code should use Level to find an entry instead of its position in machine info.

The tests use a fake sysfs with different caches for each CPU: 2-core and 4-core L2 clusters, an L2 shared by the whole node, SMT cores with a private L2, and the layout of Core i7-12700K. ompared machine info from several hosts before and after the change, and it differs only where an L2 is shared by several cores (Xeon with E-cores, hybrid CPUs)

addCacheInfo does not report an L2 cache that several cores share. It
keeps a level 1 or 2 cache only if it belongs to one core, so on CPUs
where a few cores share an L2 (Xeon 6 with E-cores, the E-cores of Core
i7-12700K) the cache is missing in machine info, although sysfs shows
it.

Handle such an L2 like the caches above L2: put it into Node.Caches if
all CPUs of the node share it, otherwise into Core.UncoreCaches. A cache
private to one core stays in Core.Caches. L3 handling is not changed.

In UncoreCaches the L2 now comes before the L3, so code should use Level
to find an entry instead of its position in machine info.

The tests use a fake sysfs with different caches for each CPU: 2-core
and 4-core L2 clusters, an L2 shared by the whole node, SMT cores with a
private L2, and the layout of Core i7-12700K. ompared machine
info from several hosts before and after the change, and it differs only
where an L2 is shared by several cores (Xeon with E-cores, hybrid CPUs)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant