Skip to content

add topology option#354

Closed
xrmzju wants to merge 1 commit into
jaypipes:mainfrom
xrmzju:add_topology_option
Closed

add topology option#354
xrmzju wants to merge 1 commit into
jaypipes:mainfrom
xrmzju:add_topology_option

Conversation

@xrmzju

@xrmzju xrmzju commented Dec 7, 2023

Copy link
Copy Markdown
  1. add topology option: DisableNodeCaches, DisableNodeAreas, DisableNodeDistances when collect topology
  2. pop err to ctx when collect topologyNodes so that the caller can know it

@jaypipes

jaypipes commented Dec 9, 2023

Copy link
Copy Markdown
Owner

@xrmzju Hi! Thanks for your submission! Can you tell me a little more about why you want to disable collection of NUMA topology information?

@jaypipes jaypipes requested review from ffromani and jaypipes December 9, 2023 16:36

@ffromani ffromani left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd also love to know about the usecase. I can guess in some scenario the collection of topology data fails? If my guess is right I'd rather fix this usecase.

Comment thread pkg/context/context.go
Comment on lines +28 to +30
DisableNodeCaches bool
DisableNodeAreas bool
DisableNodeDistances bool

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do we need this (kinda unprecedented) level of detail or can we just have a single option controlling everything?

Comment thread pkg/context/context.go
Comment on lines +119 to +121
DisableNodeCaches: option.EnvOrDefaultDisableNodeCaches(),
DisableNodeAreas: option.EnvOrDefaultDisableNodeAreas(),
DisableNodeDistances: option.EnvOrDefaultDisableNodeDistances(),

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm inclined to say to keep consistent with other options are handled even though we should later perhaps refactor. But I'd be consistent meantime.

nodeID, err := strconv.Atoi(filename[4:])
if err != nil {
ctx.Warn("failed to determine node ID: %s\n", err)
ctx.Err = err

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this usecase makes sense, but I'd rather add a new function or enhance the Warn helper to also set err, without exposing the field (just yet)

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sorry i did not get your point, could you give a example code please?

@xrmzju

xrmzju commented Dec 11, 2023

Copy link
Copy Markdown
Author

some scenario the collection of topology data fails

Yes, your guess is correct. There was a failure in collecting memory area for a certain collection of topology data, but no error was raised. As a result, my program continued to run with incorrect topology information. In my scenario, I only require the CPU NUMA topology information and I do not need to consider the NodeCaches, NodeAreas, and NodeDistances. so i made the modification above

@ffromani

ffromani commented Dec 12, 2023

Copy link
Copy Markdown
Collaborator

some scenario the collection of topology data fails

Yes, your guess is correct. There was a failure in collecting memory area for a certain collection of topology data, but no error was raised. As a result, my program continued to run with incorrect topology information. In my scenario, I only require the CPU NUMA topology information and I do not need to consider the NodeCaches, NodeAreas, and NodeDistances. so i made the modification above

Thanks for clarifying. Could you please share a description of the hardware on which the collection fails? E.g was it a regular NUMA x86 machine? Perhaps you were using (relatively) new technology like CXL? Or was it arm?

In general I'm reluctant to add so fine control about collection of information - adds too many knobs and makes the code less regular, so I'd like to learn more about the usecase.

@xrmzju

xrmzju commented Dec 12, 2023

Copy link
Copy Markdown
Author

some scenario the collection of topology data fails

Yes, your guess is correct. There was a failure in collecting memory area for a certain collection of topology data, but no error was raised. As a result, my program continued to run with incorrect topology information. In my scenario, I only require the CPU NUMA topology information and I do not need to consider the NodeCaches, NodeAreas, and NodeDistances. so i made the modification above

Thanks for clarifying. Could you please share a description of the hardware on which the collection fails? E.g was it a regular NUMA x86 machine? Perhaps you were using (relatively) new technology like CXL? Or was it arm?

In general I'm reluctant to add so fine control about collection of information - adds too many knobs and makes the code less regular, so I'd like to learn more about the usecase.

image Here is the failure message. The operating system we are using has been specifically designed by our internal team, which means there might be some bugs or unique features. However, in my current scenario, I do not require any memory area information. Therefore, I have been attempting to find a solution to bypass or skip it. I feel free to add less fine control about collection of information, maybe some option like `CPUTopologyOnly` which will disable collecting `NodeCaches` and `NodeAreas`?

@ffromani

Copy link
Copy Markdown
Collaborator

@xrmzju thanks for sharing. I'll try to think about a more generic solution. I'll get back ASAP.

@jaypipes

jaypipes commented Feb 9, 2026

Copy link
Copy Markdown
Owner

#432 solved much of the problem associated with this PR so @xrmzju I'm going to close this PR out. Please do let us know if you have any questions!

@jaypipes jaypipes closed this Feb 9, 2026
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.

3 participants