《Linux内存管理:实验驱动的深度探索》【附录】【实验环境搭建 4】【Qemu 如何模拟numa架构】

我们在学习 linux 内核时,会涉及到很多 numa 的知识,那我们该如何在 qemu 中模拟这种情况,来配合我们的学习呢?

我们该如何模拟 如下的 numa 架构
在这里插入图片描述

Qemu 模拟 NUMA 架构

-M virt,gic-version=3,virtualization=on,type=virt \
-cpu cortex-a57 -nographic -m 4G \
-smp cores=4,threads=1,sockets=2 \
-object memory-backend-ram,id=mem0,size=2G  \
-object memory-backend-ram,id=mem1,size=2G  \
-numa node,memdev=mem0,cpus=0-3,nodeid=0 \
-numa node,memdev=mem1,cpus=4-7,nodeid=1 \

1. 基础虚拟化参数

-M virt,gic-version=3,virtualization=on,type=virt

  • -M virt: 指定机器类型为 virt,这是一个通用的虚拟平台

  • gic-version=3: 使用 GICv3 (Generic Interrupt Controller version 3) 中断控制器

  • virtualization=on: 启用虚拟化支持

  • type=virt: 进一步指定虚拟平台类型

2. CPU 配置

-cpu cortex-a57 -nographic -m 4G

  • -cpu cortex-a57: 模拟 ARM Cortex-A57 处理器

  • -nographic: 不使用图形界面,直接输出到控制台

  • -m 4G: 为虚拟机分配 4GB 内存

3. SMP (对称多处理) 配置

-smp cores=4,threads=1,sockets=2

  • cores=4: 每个 CPU socket 有 4 个核心

  • threads=1: 每个核心 1 个线程 (无超线程)

  • sockets=2: 2 个 CPU sockets

  • 总 CPU 数 = sockets × cores × threads = 2 × 4 × 1 = 8 个 CPU

4. 内存后端配置

-object memory-backend-ram,id=mem0,size=2G
-object memory-backend-ram,id=mem1,size=2G

  • 创建两个内存后端对象:

    • mem0: 2GB RAM

    • mem1: 2GB RAM

  • 总共 4GB (2G + 2G) 内存,与 -m 4G 匹配

5. NUMA 配置

-numa node,memdev=mem0,cpus=0-3,nodeid=0
-numa node,memdev=mem1,cpus=4-7,nodeid=1

  • 定义两个 NUMA 节点:

    • 节点 0:

      • 使用 mem0 内存后端 (2GB)

      • 关联 CPU 0-3 (即第一个 socket 的 4 个核心)

      • 节点 ID 为 0

    • 节点 1:

      • 使用 mem1 内存后端 (2GB)

      • 关联 CPU 4-7 (即第二个 socket 的 4 个核心)

      • 节点 ID 为 1

6. 这种配置的特点

  1. NUMA 特性:CPU 访问本地节点内存比访问远程节点内存更快

  2. CPU 拓扑

    • Socket 0: CPU 0-3 (关联 Node 0)

    • Socket 1: CPU 4-7 (关联 Node 1)

  3. 内存分布:内存平均分布在两个节点上,各 2GB

这种配置非常适合测试和开发 NUMA 相关的应用程序或内核功能,比如:

  • NUMA 感知的内存分配策略

  • 进程/线程绑定到特定 NUMA 节点

  • 内存访问性能优化等

7. 可运行的配置如下:

/home/leo/data_4t/github/kernel_version/qemu-7.2.0-rc1/build/aarch64-softmmu/qemu-system-aarch64 \-nographic \-M virt,gic-version=3,virtualization=on,type=virt \-cpu cortex-a57 -nographic -m 4G \-smp cores=4,threads=1,sockets=2 \-object memory-backend-ram,id=mem0,size=2G  \-object memory-backend-ram,id=mem1,size=2G  \-numa node,memdev=mem0,cpus=0-3,nodeid=0 \-numa node,memdev=mem1,cpus=4-7,nodeid=1 \-kernel /home/leo/data_4t/github/kernel_version/linux-5.4/build/arch/arm64/boot/Image \-append "nokaslr root=/dev/ram init=/linuxrc console=ttyAMA0 console=ttyS0" \-initrd /home/leo/data_4t/github/kernel_version/initrd.ext4

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/900144.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv12 从预训练迈向自主训练,第一步数据准备

视频讲解: YOLOv12 从预训练迈向自主训练,第一步数据准备 前面复现过yolov12,使用pre-trained的模型进行过测试,今天来讲下如何训练自己的模型,第一步先准备数据和训练格式 https://gitcode.com/open-source-toolkit/…

Keil 5 找不到编译器 Missing:Compiler Version 5 的解决方法

用到自记: 下载地址: Keil5 MDK541.zip ​编辑https://pan.baidu.com/s/1bOPsuVZhD_Wj4RJS90Mbtg?pwdMDK5 问题描述 没有找到 compiler version5 : 1. 下载 Arm Compiler 5 也可以直接点击下载文章开头的文件。 2. 安装 直接安装在KEI…

结肠镜3D视频数据集-C3VD论文中文版

文章目录 标题作者摘要一、介绍1.1. 相关工作1.1.1. 内镜重建数据集1.1.2. 注册真实和虚拟内窥镜图像1.1.3. 2D-3D注册1.2. 贡献 二、方法2.1. 幻影模型生产2.2. 数据采集2.3. 注册流程概述2.3.1. 数据预处理2.3.2. 目标深度估计2.3.3. 渲染深度帧2.3.4. 边缘损失和优化 2.4. 模…

hadoop 集群的常用命令

# 查看HDFS目录内容 hadoop fs -ls /path # 创建目录 hadoop fs -mkdir /path/to/dir # 上传本地文件到HDFS hadoop fs -put localfile /hdfs/path # 下载HDFS文件到本地 hadoop fs -get /hdfs/path localfile # 查看文件内容 hadoop fs -cat /hdfs/path/file # 删除文件/…

MaxEnt物种分布建模全流程;R+ArcGIS+MaxEnt模型物种分布模拟、参数优化方法、结果分析制图与论文写作

融合R语言的MaxEnt模型具有以下具体优势: 数据处理高效便捷 📊强大的数据预处理功能:R语言提供了丰富的数据处理工具,能够轻松完成数据清洗、筛选、转换等操作,为MaxEnt模型提供高质量的输入数据。 🌐自动…

Java基础 4.4

1.方法快速入门 public class Method01 {//编写一个main方法public static void main(String[] args) {//方法使用//1.方法写好后,如果不去调用(使用),不会输出Person p1 new Person();p1.speak();//调用方法 p1.cal01();//调用计算方法1p1.cal02(10);…

Tiktok矩阵运营中使用云手机的好处

Tiktok矩阵运营中使用云手机的好处 云手机在TikTok矩阵运营中能够大幅提高管理效率、降低封号风险,并节省成本,是非常实用的运营工具。TikTok矩阵运营使用云手机有很多优势,特别是对于需要批量管理账号、提高运营效率的团队来说。以下是几个…

指针函数、函数指针和指针函数指针的全面总结

C中指针函数、函数指针和指针函数指针的全面总结 一、核心概念区别 概念本质声明示例核心特征指针函数返回指针的函数int* func(int);函数定义,返回值是指针类型函数指针指向函数的指针int (*ptr)(int);变量,存储函数地址指针函数指针指向指针函数的指…

CherryStudio MCP实战(一)filesystem篇

随着DeepSeek的爆火,各行各业都在围绕着大模型寻找新质量生产力。简单来说,DeepSeek像是人的大脑,他可以推理,帮你思考一些问题,但是具体要做一些事情的时候,他还需要“手脚”来协同。MCP(Model…

TCP基础篇(一)

文章目录 1.TCP 是如何保证可靠性的?2. 滑动窗口机制3 超时重传4.TCP 报文格式5. 什么是 TCP 协议5.1 如何唯一确定一个 TCP 连接 6.TCP 三次握手过程6.1 可以两次握手吗? 7.TCP 的四次挥手7.1 为什么客户端要等待2MSL? 8.linux 中查看 TCP 的连接9.TCP 为什么要有…

【Axure元件分享】时间范围选择器

时间范围选择器下拉选择开始时间和结束时间,实现效果如下。 源文件截图: 元件获取方式:

大模型学习一:deepseek api 调用实战以及参数介绍

一、说明 DeepSeek(杭州深度求索人工智能基础技术研究有限公司)是一家专注于大语言模型(LLM)研发的中国创新型科技公司,成立于2023年7月17日,由幻方量化孵化。其核心产品包括开源推理模型DeepSeek-R1、多模…

【Linux网络与网络编程】03.UDP Socket编程

一、UDP Socket编程接口 // 创建套接字 int socket(int domain, int type, int protocol); // 参数: // domain:域(协议家族),这里使用 AF_INET 表示进行网络编程 // type:网络通信传输的类型&#xff0…

linux gcc

一、常用编译选项 ​基本编译 gcc [input].c -o [output] ​示例: gcc hello.c -o hello # 将 hello.c 编译为可执行文件 hello ./hello # 运行程序 ​分步编译 预处理:-E(生成 .i 文件) gcc -E hello.c -o hello…

若依框架二次开发——RuoYi-AI 集成本地大模型

文章目录 前提条件1. RuoYi-AI 已成功部署并运行2. Ollama 本地大模型已安装1. 配置本地大模型2. 切换至本地模型3. 开始对话总结本文将详细介绍如何在 RuoYi-AI 中集成本地 Ollama 大模型,使系统能够在 离线环境 下提供智能对话能力。 前提条件 在开始集成本地大模型之前,…

Flask学习笔记 - 模板渲染

Flask 模板渲染 模板是包含占位符的 HTML 文件 Flask 使用 Jinja2 模板引擎来处理模板渲染。模板渲染允许你将动态内容插入到 HTML 页面中,使得应用能够生成动态的网页内容。 创建模板:将 HTML 文件放在 templates 文件夹中,使用 Jinja2 占…

解码 from XXX import * - 导入的真相

文章目录 前言一、 什么是 from XXX import *?二、基本用法:导入的实际效果三、默认行为:无 __all__ 的情况四、与直接运行 XXX.py 的对比示例模块使用 from XXX import *直接运行 python example.py关键差异五、为什么需要注意 from XXX import *?最佳实践六、实际应用场景…

JavaScript 中常见的鼠标事件及应用

JavaScript 中常见的鼠标事件及应用 在 JavaScript 中,鼠标事件是用户与网页进行交互的重要方式,通过监听这些事件,开发者可以实现各种交互效果,如点击、悬停、拖动等。 在 JavaScript 中,鼠标事件类型多样&#xff0…

Nacos注册中心AP模式核心源码分析(单机模式)

文章目录 概述一、客户端启动主线流程源码分析1.1、客户端与Spring Boot整合1.2、注册实例(服务注册)1.3、发送心跳1.4、拉取服务端实例列表(服务发现) 二、服务端接收请求主线流程源码分析2.1、接收注册请求2.1.1、初始化注册表2…

prism WPF 模块

模块 DLL ModuleA 和 ModuleB 都要安装 Prism.Unity 引用方式1 项目引用 直接 在引用中添加项目引用 App.xaml.cs 添加模块 ConfigureModuleCatalog using ModuleA; using ModuleB; using Prism.Ioc; using Prism.Modularity; using Prism.Unity; using PrismWpfApp.ViewMo…