QEMU 的 CPU 配置

转载:

http://mathslinux.org/?p=277

http://blog.chinaunix.net/uid-26000137-id-3957724.html

CPU 基本知识

以下是 CPU 中比较容易混淆的概念:

socket

可以理解为主板上的一个插座, 用来连接物理 CPU 芯片到主板上, 简单讲, 有多少个 socket 就有多少个物理 CPU.

core

core 的概念涉及到 多核心技术 是将多个一样的 CPU 放置于一个封装内(或直接将两个 CPU 做成一个芯片), 每个这样的 CPU 叫做一个 core, 每个 core 是一个的独立的 执行单元.

thread

thread 涉及到 超线程技术 , 简单的讲, 就是把两个逻辑内核模拟成两个物理芯片, 让单个处理器都能使用线程级并行计算.

逻辑 CPU 数量

综上, CPU 的数量不能简单的通过物理 CPU 的数量(或者 socket 的数量) 来判断, 如果用了多核技术, 则需要计算全部 core 的数量, 如果用了超线程, 则需要加上 所有 CPU 线程. 所以每一个 CPU(包括 core 或者 thread) 都叫一个逻辑 CPU.

Linux 下的 CPU 计算

在 Linux 下, kernel 抛出了一个统计了 CPU 一般信息的文件 /proc/cpuinfo, 通过这个文件, 可以知道本机的 CPU 信息, 包括厂商, CPU 型号, CPU 缓存, 核心, 超线程等等信息.

下面以一台 intel 酷睿双核为例说明:

gentoo-company tmp # cat /proc/cpuinfo
processor   : 0
physical id : 0
siblings    : 2
core id     : 0
cpu cores   : 2
 
processor   : 1
physical id : 0
siblings    : 2
core id     : 1
cpu cores   : 2

我省略的不必要的输出, 对以上信息做一个解释

processor
这个表示逻辑 CPU 的 ID
physical id
物理 CPU(socket) 的 ID, 具有相同 physical id 的逻辑 CPU 在同一个 CPU 封装内.
siblings
同一个 CPU 封装(socket)里的逻辑 CPU 数量, 这个数字表示在该物理 CPU 里面有多少个逻辑 CPU
core id
核心 ID, 具有相同 core id 的逻辑 CPU 在同一个 core 里, 即是使用 了超线程的逻辑 CPU
cpu cores
CPU 核心数, 在该物理 CPU 内封装的 core 数目.

通过上面的说明, 该机器有一个物理 CPU(只有一个 physical id), 用了双核技术(cpu cores 为2), 没有使用超线程技术(没有相同的 core id)

QEMU 的 CPU 配置

根据前面描述 CPU 的基本知识, 可以知道 CPU 有物理 CPU, 多核 CPU, 超线程 CPU 之分.

事实上, QEMU 支持所有这些配置, 下面一一举例来说明如何模拟这些 CPU.

基本的 CPU 模拟

下面的指令模拟了一个具有 1 个物理 CPU, 两个逻辑 CPU 的系统

$ qemu -enable-kvm -m 1024 ArchLinux.img -smp 2,sockets=1

在 guest 上看看 cpuinfo 的信息:

$ cat /proc/cpuinfo
processor   : 0 physical id : 0 siblings    : 2 core id : 0 cpu cores   : 2  
processor   : 1 physical id : 0 siblings    : 2 core id : 1 cpu cores   : 2

可以看到两个逻辑 CPU 是双核的, 没有使用超线程技术.

指定核心数

模拟一个具有 1 个物理 CPU(双核), 四个逻辑 CPU 的系统. 此时为了满足双核 四线程的概念, 得启用超线程技术, 如下

$ qemu -enable-kvm -m 1024 ArchLinux.img -smp 4,sockets=1,cores=2
$ cat /proc/cpuinfo
processor   : 0 physical id : 0 siblings    : 4 core id : 0 cpu cores   : 2  
processor   : 1 physical id : 0 siblings    : 4 core id : 0 cpu cores   : 2  
processor   : 2 physical id : 0 siblings    : 4 core id : 1 cpu cores   : 2  
processor   : 3 physical id : 0 siblings    : 4 core id : 1 cpu cores   : 2

指定 thread 数

模拟一个具有 2 个物理 CPU, 四个逻辑 CPU 的系统, 启用超线程技术, 每个核心两个 线程. 不难算出, 此时每个 CPU 都是单核的(4 = 2*2*1).

$ qemu -enable-kvm -m 1024 ArchLinux.img -smp 4,sockets=2,threads=2
$ cat /proc/cpuinfo
processor   : 0 physical id : 0 siblings    : 2 core id : 0 cpu cores   : 1  
processor   : 1 physical id : 0 siblings    : 2 core id : 0 cpu cores   : 1  
processor   : 2 physical id : 1 siblings    : 2 core id : 0 cpu cores   : 1  
processor   : 3 physical id : 1 siblings    : 2 core id : 0 cpu cores   : 1

其它

事实上, QEMU 还有更强大的 CPU 的配置, 比如配置 CPU 指令级, 配置 NUMA, 等等, 这里不一一列举.

时间: 2024-12-08 08:21:49

QEMU 的 CPU 配置的相关文章

YARN的内存和CPU配置

Hadoop YARN同时支持内存和CPU两种资源的调度,本文介绍如何配置YARN对内存和CPU的使用. YARN作为一个资源调度器,应该考虑到集群里面每一台机子的计算资源,然后根据application申请的资源进行分配Container.Container是YARN里面资源分配的基本单位,具有一定的内存以及CPU资源. 在YARN集群中,平衡内存.CPU.磁盘的资源的很重要的,根据经验,每两个container使用一块磁盘以及一个CPU核的时候可以使集群的资源得到一个比较好的利用. 内存配置

Hadoop性能调优、YARN的内存和CPU配置

转自: https://blog.csdn.net/tototuzuoquan/article/details/80671128 转: https://blog.csdn.net/dehu_zhou/article/details/52808752 https://blog.csdn.net/dxl342/article/details/52840455 Hadoop为用户作业提供了多种可配置的参数,以允许用户根据作业特点调整这些参数值使作业运行效率达到最优. 一 应用程序编写规范 1.设置Co

kvm中的cpu配置

在QEMU/KVM中,qemu提供对cpu的模拟,展现给客户机一定的cpu数目和cpu特性:在KVM打开的情况下,客户机中cpu指令的执行有硬件处理器的虚拟化功能来辅助执行,具有非常高的效率. Qemu/kvm为客户机提供一套完整的硬件系统环境,在客户机看来其所拥有的cpu即是vcpu(virtual CPU).在KVM环境中,每个客户机都是一个标准的Linux进程(qemu进程),而每一个vCPU在宿主机中是Qemu进程派生的一个普通线程. 在普通的Linux系统中,进程一般有两种执行模式:内

从零到一:caffe-windows(CPU)配置与利用mnist数据集训练第一个caffemodel

一.前言 本文会详细地阐述caffe-windows的配置教程.由于博主自己也只是个在校学生,目前也写不了太深入的东西,所以准备从最基础的开始一步步来.个人的计划是分成配置和运行官方教程,利用自己的数据集进行训练和利用caffe来实现别人论文中的模型(目前在尝试的是轻量级的SqueezeNet)三步走.不求深度,但求详细.因为说实话caffe-windows的配置当初花了挺多时间的,目前貌似还真没有从头开始一步步讲起的教程,所以博主就争取试着每一步都讲清楚吧. 这里说些题外话:之所以选择Sque

faster r-cnn 在CPU配置下训练自己的数据

因为没有GPU,所以在CPU下训练自己的数据,中间遇到了各种各样的坑,还好没有放弃,特以此文记录此过程. 1.在CPU下配置faster r-cnn,参考博客:http://blog.csdn.net/wjx2012yt/article/details/52197698#quote 2.在CPU下训练数据集,需要对py-faster-rcnn内的roi_pooling_layer和smooth_L1_loss_layer改为CPU版本, 并重新编译.这位博主对其进行了修改,可直接进行替换:htt

Nginx 开启多核cpu配置

nginx默认是没有开启利用多核cpu的配置的.需要通过增加worker_cpu_affinity配置参数来充分利用多核cpu; 需要在nginx配置里添加 worker_processes 和 orker_cpu_affinity 两个配置: 1.假设服务器是 4核 CPU 开启 4个进程: worker_processes 4;worker_cpu_affinity 0001 0010 0100 1000; 2.假设服务器是 8核 CPU 开启 8个进程: worker_processes

aix 查看内存,CPU 配置信息

内存lsattr -El mem0cpu lsdev -C |grep procCPU的信息lsattr -El proc0 #bootinfo -r查看物理内存 使用命令#  lsdev -Cc memory查看配置的物理内存设备,下面为其输出示例:  mem0 Available 00-00 Memory   L2cache0 Available 00-00 L2 Cache 再使用命令# lsattr -El mem0输出如下  size 512 Total amount of physi

用Qemu模拟vexpress-a9 --- 配置 qemu 的网络功能

转载:http://wiki.sylixos.com/index.php/Linux%E7%8E%AF%E5%A2%83%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97 环境介绍: Win7 64 + Vmware 11 + ubuntu12.04 32 u-boot 版本:u-boot-2015-04 Linux kernel版本:linux-3.16.y busybox版本:1_24_stable 交叉编译工具链:arm-linux-gnueabi- qemu 支持多

路由器逆向分析------MIPS系统网络的配置(QEMU)

本文博客地址:http://blog.csdn.net/qq1084283172/article/details/69378333 MIPS系统网络的配置  使用QEMU 模拟正在运行的MIPS系统并配置MIPS系统网络,这样本地主机ubuntu系统就可以和QEMU虚拟机进行网络通讯和传输数据了.在进行MIPS程序的测试时是很有用处. 01.获取安装依赖文件,执行下面的命令: $ sudo apt-get install bridge-utils uml-utilities 02.修改 ubun