在有两个CPU的计算机中,如何获取每个CPU的本地内存的物理地址?

在有两个CPU的计算机中,如何获取每个CPU的本地内存的物理地址?

我的电脑有以下规格

  • 2 个英特尔 CPU x86_64
  • 总内存 8GB(每个 CPU 4GB)
  • 操作系统是 Rocky Linux 9

我想使用memmapgrub 中的参数为每个 CPU 保留 1GB 内存。我检查过dmesg/proc/meminfo甚至使用过numaclt -H。但我找不到每个CPU的内存物理地址。

如何获取每个CPU本地内存的物理地址?

答案1

如果您的目的是在特定的 CPU 核心上运行应用程序,为其分配特定的资源(内存)集,您可以执行以下操作:

任务集

#launch google-chrome on CPU core 0
taskset 0x1 google-chrome

C组

# Create a cgroup
mkdir /sys/fs/cgroup/memory/my_cgroup

# Add the process to it
echo $PID > /sys/fs/cgroup/memory/my_cgroup/cgroup.procs

# Set the limit to 100MB
echo $((100 * 1024 * 1024)) > /sys/fs/cgroup/memory/my_cgroup/memory.limit_in_bytes

通过操作系统抽象与硬件交互总是一个好主意,除非我们确切地知道我们正在做什么/撤消什么。

相关内容