我的电脑有以下规格
- 2 个英特尔 CPU x86_64
- 总内存 8GB(每个 CPU 4GB)
- 操作系统是 Rocky Linux 9
我想使用memmap
grub 中的参数为每个 CPU 保留 1GB 内存。我检查过dmesg
,/proc/meminfo
甚至使用过numaclt -H
。但我找不到每个CPU的内存物理地址。
如何获取每个CPU本地内存的物理地址?
答案1
如果您的目的是在特定的 CPU 核心上运行应用程序,为其分配特定的资源(内存)集,您可以执行以下操作:
#launch google-chrome on CPU core 0
taskset 0x1 google-chrome
# 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
通过操作系统抽象与硬件交互总是一个好主意,除非我们确切地知道我们正在做什么/撤消什么。