Re: [RFC PATCH v4 00/25] RSEQ node id and virtual cpu id extensions

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2022-09-21 15:24, Mathieu Desnoyers wrote:
Extend the rseq ABI to expose a NUMA node ID and a vm_vcpu_id field.

The NUMA node ID field allows implementing a faster getcpu(2) in libc.

The virtual cpu id allows ideal scaling (down or up) of user-space
per-cpu data structures. The virtual cpu ids allocated within a memory
space are tracked by the scheduler, which takes into account the number
of concurrently running threads, thus implicitly considering the number
of threads, the cpu affinity, the cpusets applying to those threads, and
the number of logical cores on the system.

This series is based on the v5.19 tag.

Hi Peter,

I'm having MTA issues at the moment. I will resend the series as soon as I can get hold of my sysadmin.

Sorry about that.

Thanks,

Mathieu


Thanks,

Mathieu

Mathieu Desnoyers (25):
   rseq: Introduce feature size and alignment ELF auxiliary vector
     entries
   rseq: Introduce extensible rseq ABI
   rseq: Extend struct rseq with numa node id
   selftests/rseq: Use ELF auxiliary vector for extensible rseq
   selftests/rseq: Implement rseq numa node id field selftest
   lib: Invert _find_next_bit source arguments
   lib: Implement find_{first,next}_{zero,one}_and_zero_bit
   cpumask: Implement cpumask_{first,next}_{zero,one}_and_zero
   sched: Introduce per memory space current virtual cpu id
   rseq: Extend struct rseq with per memory space vcpu id
   selftests/rseq: Remove RSEQ_SKIP_FASTPATH code
   selftests/rseq: Implement rseq vm_vcpu_id field support
   selftests/rseq: x86: Template memory ordering and percpu access mode
   selftests/rseq: arm: Template memory ordering and percpu access mode
   selftests/rseq: arm64: Template memory ordering and percpu access mode
   selftests/rseq: mips: Template memory ordering and percpu access mode
   selftests/rseq: ppc: Template memory ordering and percpu access mode
   selftests/rseq: s390: Template memory ordering and percpu access mode
   selftests/rseq: riscv: Template memory ordering and percpu access mode
   selftests/rseq: Implement basic percpu ops vm_vcpu_id test
   selftests/rseq: Implement parametrized vm_vcpu_id test
   selftests/rseq: x86: Implement rseq_load_u32_u32
   selftests/rseq: Implement numa node id vs vm_vcpu_id invariant test
   selftests/rseq: parametrized test: Report/abort on negative cpu id
   tracing/rseq: Add mm_vcpu_id field to rseq_update

  fs/binfmt_elf.c                               |    5 +
  fs/exec.c                                     |    6 +
  include/linux/cpumask.h                       |   86 ++
  include/linux/find.h                          |  123 +-
  include/linux/mm.h                            |   25 +
  include/linux/mm_types.h                      |  110 +-
  include/linux/sched.h                         |    9 +
  include/trace/events/rseq.h                   |    7 +-
  include/uapi/linux/auxvec.h                   |    2 +
  include/uapi/linux/rseq.h                     |   22 +
  init/Kconfig                                  |    4 +
  kernel/fork.c                                 |   11 +-
  kernel/ptrace.c                               |    2 +-
  kernel/rseq.c                                 |   61 +-
  kernel/sched/core.c                           |   49 +
  kernel/sched/sched.h                          |  166 +++
  kernel/signal.c                               |    2 +
  lib/find_bit.c                                |   17 +-
  tools/include/linux/find.h                    |    9 +-
  tools/lib/find_bit.c                          |   17 +-
  tools/testing/selftests/rseq/.gitignore       |    5 +
  tools/testing/selftests/rseq/Makefile         |   20 +-
  .../testing/selftests/rseq/basic_numa_test.c  |  117 ++
  .../selftests/rseq/basic_percpu_ops_test.c    |   46 +-
  tools/testing/selftests/rseq/basic_test.c     |    4 +
  tools/testing/selftests/rseq/compiler.h       |    6 +
  tools/testing/selftests/rseq/param_test.c     |  157 ++-
  tools/testing/selftests/rseq/rseq-abi.h       |   22 +
  tools/testing/selftests/rseq/rseq-arm-bits.h  |  505 +++++++
  tools/testing/selftests/rseq/rseq-arm.h       |  701 +---------
  .../testing/selftests/rseq/rseq-arm64-bits.h  |  392 ++++++
  tools/testing/selftests/rseq/rseq-arm64.h     |  520 +------
  .../testing/selftests/rseq/rseq-bits-reset.h  |   10 +
  .../selftests/rseq/rseq-bits-template.h       |   39 +
  tools/testing/selftests/rseq/rseq-mips-bits.h |  462 +++++++
  tools/testing/selftests/rseq/rseq-mips.h      |  646 +--------
  tools/testing/selftests/rseq/rseq-ppc-bits.h  |  454 +++++++
  tools/testing/selftests/rseq/rseq-ppc.h       |  617 +--------
  .../testing/selftests/rseq/rseq-riscv-bits.h  |  410 ++++++
  tools/testing/selftests/rseq/rseq-riscv.h     |  529 +-------
  tools/testing/selftests/rseq/rseq-s390-bits.h |  474 +++++++
  tools/testing/selftests/rseq/rseq-s390.h      |  495 +------
  tools/testing/selftests/rseq/rseq-skip.h      |   65 -
  tools/testing/selftests/rseq/rseq-x86-bits.h  | 1036 ++++++++++++++
  tools/testing/selftests/rseq/rseq-x86.h       | 1193 +----------------
  tools/testing/selftests/rseq/rseq.c           |   86 +-
  tools/testing/selftests/rseq/rseq.h           |  229 +++-
  .../testing/selftests/rseq/run_param_test.sh  |    5 +
  48 files changed, 5286 insertions(+), 4692 deletions(-)
  create mode 100644 tools/testing/selftests/rseq/basic_numa_test.c
  create mode 100644 tools/testing/selftests/rseq/rseq-arm-bits.h
  create mode 100644 tools/testing/selftests/rseq/rseq-arm64-bits.h
  create mode 100644 tools/testing/selftests/rseq/rseq-bits-reset.h
  create mode 100644 tools/testing/selftests/rseq/rseq-bits-template.h
  create mode 100644 tools/testing/selftests/rseq/rseq-mips-bits.h
  create mode 100644 tools/testing/selftests/rseq/rseq-ppc-bits.h
  create mode 100644 tools/testing/selftests/rseq/rseq-riscv-bits.h
  create mode 100644 tools/testing/selftests/rseq/rseq-s390-bits.h
  delete mode 100644 tools/testing/selftests/rseq/rseq-skip.h
  create mode 100644 tools/testing/selftests/rseq/rseq-x86-bits.h



--
Mathieu Desnoyers
EfficiOS Inc.
https://www.efficios.com



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux