Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Investigate and Improve CPU core and NUMA node selection #1440

Closed
cryptonemo opened this issue Mar 23, 2021 · 3 comments
Closed

Investigate and Improve CPU core and NUMA node selection #1440

cryptonemo opened this issue Mar 23, 2021 · 3 comments
Labels
enhancement New feature or request

Comments

@cryptonemo
Copy link
Collaborator

Description

Some background is detailed here:

filecoin-project/lotus#5848

Acceptance criteria

Risks + pitfalls

Where to begin

@cryptonemo cryptonemo added the enhancement New feature or request label Mar 23, 2021
@porcuquine
Copy link
Collaborator

cc: @jleni.

@rwxr-xr-x
Copy link

Some details for this issue.

There is no problems with SDR enabled in 1x CPU setup. But it leads to problems in 2x CPU setups where two lotus-workers running (each binded to its own CPU and NUMA).

Looks like lotus-woker spawn its sealing tasks always from core 0 even if he binded to another NUMA node with cores 16-31 for example.

Typical picture of what is happening (2 cores per CCX, for example):

  • lotus-worker-1 binded to cpus 0-15 and numa node 1.
  • lotus-worker-2 binded to cpus 16-31 and numa node 2.
  • lotus-worker-1 spawn its first sealing task on cores 0+1.
  • lotus-worker-1 spawn its first sealing task on cores 0+1 too.
  • both sealing tasks run on cores 0+1 and affects each other.

Same situsation is observed when running by numactl with cpunodebind, numactl with physcpubind, taskset wich list of cores.
Current correctly wirking workaround is to manually create two different cgroups with different cpusets+mems and run workers inside them.

P.S. There are many processors with different configurations of CCX and L3 shares.

It will be better to give miner operator some low level config options.
So that the miner can specify the list of working cores for worker and sequence of launch this cores.

For example, if I work without SDR enabled in multicore CPUs I also don't want to run tasks on neighbor cores which shares L3 cache.
I want my miner use only cores with untuched L3 cahce. But its an another issue...

@vmx
Copy link
Contributor

vmx commented Nov 2, 2023

I think things have improved with #1588. If not, please re-open this issue.

@vmx vmx closed this as completed Nov 2, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

4 participants