- 浏览: 1475072 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (691)
- linux (207)
- shell (33)
- java (42)
- 其他 (22)
- javascript (33)
- cloud (16)
- python (33)
- c (48)
- sql (12)
- 工具 (6)
- 缓存 (16)
- ubuntu (7)
- perl (3)
- lua (2)
- 超级有用 (2)
- 服务器 (2)
- mac (22)
- nginx (34)
- php (2)
- 内核 (2)
- gdb (13)
- ICTCLAS (2)
- mac android (0)
- unix (1)
- android (1)
- vim (1)
- epoll (1)
- ios (21)
- mysql (3)
- systemtap (1)
- 算法 (2)
- 汇编 (2)
- arm (3)
- 我的数据结构 (8)
- websocket (12)
- hadoop (5)
- thrift (2)
- hbase (1)
- graphviz (1)
- redis (1)
- raspberry (2)
- qemu (31)
- opencv (4)
- socket (1)
- opengl (1)
- ibeacons (1)
- emacs (6)
- openstack (24)
- docker (1)
- webrtc (11)
- angularjs (2)
- neutron (23)
- jslinux (18)
- 网络 (13)
- tap (9)
- tensorflow (8)
- nlu (4)
- asm.js (5)
- sip (3)
- xl2tp (5)
- conda (1)
- emscripten (6)
- ffmpeg (10)
- srt (1)
- wasm (5)
- bert (3)
- kaldi (4)
- 知识图谱 (1)
最新评论
-
wahahachuang8:
我喜欢代码简洁易读,服务稳定的推送服务,前段时间研究了一下go ...
websocket的helloworld -
q114687576:
http://www.blue-zero.com/WebSoc ...
websocket的helloworld -
zhaoyanzimm:
感谢您的分享,给我提供了很大的帮助,在使用过程中发现了一个问题 ...
nginx的helloworld模块的helloworld -
haoningabc:
leebyte 写道太NB了,期待早日用上Killinux!么 ...
qemu+emacs+gdb调试内核 -
leebyte:
太NB了,期待早日用上Killinux!
qemu+emacs+gdb调试内核
使用qemu-kvm建立一个虚拟机,然后虚拟机的线程绑定到具体的一个cpu的核上
环境,centos6.5,双核,
1,在主机上修改grub,把主机的核隔离
2.使用taskset 把qemu的线程绑定到隔离的核上。
打开vmware或者bios的cpu的VT
kvm在/usr/libexec/qemu-kvm
新建一个硬盘
第一次使用iso新建系统
第二次就不用iso了
如果模拟具体某种cpu
看支持的cpu
启动之后用vnc连上去
ctrl+alt+2 切换到qemu
info cpus
info kvm
修改grup,然后重启主机,
把 isolcpus=1 把第二个核隔离,
重启之后
看出差别
第二个核上的线程数很少,只有linux基本的
看qemu的进程绑定到哪个cpu
注意第五列,都是0
把id绑定到1的核上
注意,第一个核实0x1 第二个是0x2,第三个是0x4,第四个是0x8
发现第五列的核的编号都变成1了
ps -eLo ruser,pid,ppid,lwp,psr,args |awk '{if($5==1) print $0}'
再对比一下,第二个核上,除了linux基本的进程,多qemu相关的进程
除了开始的基本的linux进程,又多了这几个qemu的进程
实现了,把qemu绑定到特殊的核上,进行了qemu独享某个核,资源的合理分配和高校利用
cpu的其他相关的
其他的调用
环境,centos6.5,双核,
1,在主机上修改grub,把主机的核隔离
2.使用taskset 把qemu的线程绑定到隔离的核上。
yum install glib2 glib2-devel libtool gcc-c++ gcc zlib zlib-devel flex bison lsmod |grep kvm ls -l /dev/kvm
打开vmware或者bios的cpu的VT
kvm在/usr/libexec/qemu-kvm
新建一个硬盘
dd if=/dev/zero of=rhel65.img bs=1M count=8192
第一次使用iso新建系统
/usr/libexec/qemu-kvm -m 2048 -smp 2 -boot order=cd -hda /root/kvm/rhel65.img -cdrom /root/kvm/CentOS-6.5-x86_64.iso
第二次就不用iso了
/usr/libexec/qemu-kvm -m 2048 -smp 2 -boot order=cd -hda /root/kvm/rhel65.img -vnc 192.168.137.188:1 &
如果模拟具体某种cpu
/usr/libexec/qemu-kvm -cpu SandyBridge -m 2048 -smp 2 -boot order=cd -hda /root/kvm/rhel65.img -vnc 192.168.137.188:1 -daemonize
看支持的cpu
/usr/libexec/qemu-kvm -cpu ?
启动之后用vnc连上去
ctrl+alt+2 切换到qemu
info cpus
info kvm
修改grup,然后重启主机,
[root@haoning kvm]# cat /boot/grub/grub.conf # grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/sda2 # initrd /initrd-[generic-]version.img #boot=/dev/sda default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title CentOS (2.6.32-431.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=UUID=89c4d858-c966-44b9-b2a8-df121e83cb78 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet isolcpus=1 initrd /initramfs-2.6.32-431.el6.x86_64.img
把 isolcpus=1 把第二个核隔离,
重启之后
[root@haoning kvm]# ps -eLo psr|grep 0|wc -l 351 [root@haoning kvm]# [root@haoning kvm]# [root@haoning kvm]# ps -eLo psr|grep 1|wc -l 35 [root@haoning kvm]#
看出差别
第二个核上的线程数很少,只有linux基本的
[root@haoning ~]# ps -eLo ruser,pid,ppid,lwp,psr,args |awk '{if($5==1) print $0}' root 2 0 2 1 [kthreadd] root 7 2 7 1 [migration/1] root 8 2 8 1 [migration/1] root 9 2 9 1 [ksoftirqd/1] root 10 2 10 1 [watchdog/1] root 12 2 12 1 [events/1] root 13 2 13 1 [cgroup] root 14 2 14 1 [khelper] root 15 2 15 1 [netns] root 19 2 19 1 [bdi-default] root 21 2 21 1 [kintegrityd/1] root 23 2 23 1 [kblockd/1] root 29 2 29 1 [ata_sff/1] root 31 2 31 1 [khubd] root 34 2 34 1 [md/1] root 36 2 36 1 [md_misc/1] root 38 2 38 1 [khungtaskd] root 43 2 43 1 [aio/1] root 45 2 45 1 [crypto/1] root 51 2 51 1 [kthrotld/1] root 164 2 164 1 [mpt_poll_0] root 844 2 844 1 [vmmemctl] root 990 2 990 1 [xfslogd/1] root 992 2 992 1 [xfsdatad/1] root 994 2 994 1 [xfsconvertd/1] root 996 2 996 1 [xfsalloc/1] root 998 2 998 1 [xfseofblocks/1] root 1000 2 1000 1 [xfssyncd/dm-1] root 1054 2 1054 1 [kauditd]
看qemu的进程绑定到哪个cpu
[root@haoning kvm]# ps -eLo ruser,pid,ppid,lwp,psr,args |grep qemu|grep -v grep root 29518 4956 29518 0 /usr/libexec/qemu-kvm -m 2048 -smp 2 -boot order=cd -hda /root/kvm/rhel65.img -vnc 192.168.137.188:1 root 29518 4956 29524 0 /usr/libexec/qemu-kvm -m 2048 -smp 2 -boot order=cd -hda /root/kvm/rhel65.img -vnc 192.168.137.188:1 root 29518 4956 29525 0 /usr/libexec/qemu-kvm -m 2048 -smp 2 -boot order=cd -hda /root/kvm/rhel65.img -vnc 192.168.137.188:1 root 29518 4956 29842 0 /usr/libexec/qemu-kvm -m 2048 -smp 2 -boot order=cd -hda /root/kvm/rhel65.img -vnc 192.168.137.188:1 [root@haoning kvm]#
注意第五列,都是0
把id绑定到1的核上
注意,第一个核实0x1 第二个是0x2,第三个是0x4,第四个是0x8
[root@haoning kvm]# taskset -p 0x2 29524 pid 29524's current affinity mask: 1 pid 29524's new affinity mask: 2 [root@haoning kvm]# [root@haoning kvm]# [root@haoning kvm]# taskset -p 0x2 29525 pid 29525's current affinity mask: 1 pid 29525's new affinity mask: 2 [root@haoning kvm]# [root@haoning kvm]# [root@haoning kvm]# ps -eLo ruser,pid,ppid,lwp,psr,args |grep qemu|grep -v grep root 29518 4956 29518 1 /usr/libexec/qemu-kvm -m 2048 -smp 2 -boot order=cd -hda /root/kvm/rhel65.img -vnc 192.168.137.188:1 root 29518 4956 29524 1 /usr/libexec/qemu-kvm -m 2048 -smp 2 -boot order=cd -hda /root/kvm/rhel65.img -vnc 192.168.137.188:1 root 29518 4956 29525 1 /usr/libexec/qemu-kvm -m 2048 -smp 2 -boot order=cd -hda /root/kvm/rhel65.img -vnc 192.168.137.188:1 root 29518 4956 29862 1 /usr/libexec/qemu-kvm -m 2048 -smp 2 -boot order=cd -hda /root/kvm/rhel65.img -vnc 192.168.137.188:1 [root@haoning kvm]#
发现第五列的核的编号都变成1了
ps -eLo ruser,pid,ppid,lwp,psr,args |awk '{if($5==1) print $0}'
再对比一下,第二个核上,除了linux基本的进程,多qemu相关的进程
除了开始的基本的linux进程,又多了这几个qemu的进程
实现了,把qemu绑定到特殊的核上,进行了qemu独享某个核,资源的合理分配和高校利用
cpu的其他相关的
/usr/libexec/qemu-kvm -m 2048 -smp 8,sockets=2,cores=2,threads=2 -hda /root/kvm/rhel65.img -vnc 192.168.137.188:1 (1)socket就是主板上插cpu的槽的数目,也即管理员说的"路" (2)core就是我们平时说的”核“,即双核,4核等 (3)thread就是每个core的硬件线程数,即超线程 http://labs.chinamobile.com/mblog/854855_199265
其他的调用
/usr/libexec/qemu-kvm -name http1 -S -M rhel6.5.0 -m 1024 -realtime mlock=off -smp 1,sockets=1,cores=1,threads=1 -uuid 0e4189c4-4006-6ee7-d1e5-fa03c8cf0130 -nodefconfig -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/http1.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -no-shutdown -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -drive file=/opt/zhangjl/pacemaker/http1.img,if=none,id=drive-virtio-disk0,format=qcow2,cache=none -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x5,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 -netdev tap,fd=24,id=hostnet0,vhost=on,vhostfd=26 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:8f:ab:fd,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -device usb-tablet,id=input0 -vnc 0.0.0.0:4109 -vga cirrus -device intel-hda,id=sound0,bus=pci.0,addr=0x4 -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x6 qemu-system-x86_64 -name http1 -S -machine rhel6.5.0 -m 1024 -realtime mlock=off -smp 1,sockets=1,cores=1,threads=1 -uuid 0e4189c4-4006-6ee7-d1e5-fa03c8cf0130 -nodefconfig -nodefaults -chardev socket,id=charmonitor -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -no-shutdown -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -drive file=cirros-0.3.1-x86_64-disk.img,if=none,id=drive-virtio-disk0,format=qcow2,cache=none -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x5,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 -netdev tap,fd=24,id=hostnet0,vhost=on,vhostfd=26 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:8f:ab:fd,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -device usb-tablet,id=input0 -vnc 0.0.0.0:4109 -vga cirrus -device intel-hda,id=sound0,bus=pci.0,addr=0x4 -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x6
发表评论
-
tinyemu
2019-01-24 17:59 1431参考https://bellard.org/jslinux/t ... -
jslinux-deobfuscated-network
2017-02-13 22:37 707基础知识 查看网络包 tcpdump -i eth0 -e ... -
用buildroot为jslinux建立最小rootfs
2016-11-18 17:59 1266############################### ... -
nginx rewrite替代apache rewrite
2016-10-18 20:30 829清理chrome的缓存 chrome://appcache-i ... -
qemu用tap方式启动vm的网络试验(ip route)
2016-09-14 11:29 2798ip route add 192.168.8.0/24 via ... -
qemu的不断网动态迁移的试验
2016-06-28 16:16 948需求: 目前有两台服务器 192.168.139.117 19 ... -
kvm的nested嵌套
2016-06-27 18:25 1327关键点是 modprobe kvm_intel nested= ... -
qemu的动态迁移的试验
2016-06-25 21:48 14251.安装qemu-2.5.1.tar 解决 ... -
libvirt建立快照和基本使用
2016-06-25 15:51 1631如果使用qemu的快照方式 在monitor中操作 (qe ... -
socket的方式使用qemu建立虚拟机
2016-06-24 17:54 1900qemu的-net参数 -net nic 必须有,基本配置mo ... -
tap的方式使用qemu建立虚拟机NAT网络
2016-06-23 18:03 9820基本概念: vm:虚拟机 ... -
qemu建立基本的虚拟机
2016-06-23 17:04 1979使用qemu建立虚拟机 1.需要内核文件 bzImage ... -
qemu用nat的方式使用tap建立虚拟机
2016-06-23 16:15 11普通桥接参考 http://haoningabc.iteye. ... -
tap的方式使用qemu建立虚拟机桥接网络
2016-06-22 20:53 7815需求:建立一个虚拟机,使网络和内网一样,当一台普通接入内网的服 ... -
使用buildroot为jslinux创建root.bin
2016-05-02 00:37 1345环境 gcc 版本 4.8.5 centos ... -
i386上的busybox
2016-04-26 22:51 1024环境:在64位机器上总莫名其妙问题,交叉编译也会有想不到的地方 ... -
qemu以64位和32位的方式跑busybox
2016-04-07 22:06 1602两种方式x86_64 和32位的i386方式 ------ ... -
neutron基础九(qemu nat网络)
2016-02-06 17:21 1618接上基础八,kvm透传nested忽略 1.在主机ce ... -
neutron基础七(qemu tap)
2016-02-02 17:02 1028使用qemu 建立个虚拟机 然后用tap设备, 根据基础六,t ... -
使用devstack安装magnum
2015-11-18 21:22 1428在redhat6.5上建立个centos7的虚拟机,使用cen ...
相关推荐
在Fedora 19 x86_64操作系统上配置QEMU-KVM虚拟机并使其通过桥接模式上网,涉及到的步骤和知识点可以详细展开如下: 1. CPU虚拟化支持:首先需要确保虚拟化技术支持已经在BIOS中开启。对于Intel处理器,通常是在...
QEMU-KVM 是一款强大的开源虚拟化平台,它允许用户在单个物理机器上运行多个独立的虚拟机。在这个配置过程中,我们将专注于设置 Bridge 模式,使虚拟机能够与网络中的其他主机进行直接通信。 1. **前言** 在开始...
- **Xen**:增加了32位操作系统在64位硬件上的支持、提高了HVM(硬件辅助虚拟化)模式下的时间同步准确性、支持更多的CPU(最多192个)、引入VPID(虚拟进程标识符)、支持1GB的大页面内存管理、实现了PCI设备分配及...
KVM是Linux内核中的一个模块,将硬件虚拟化技术引入Linux系统,允许在一个物理服务器上运行多个独立的虚拟机。KVM利用Linux作为宿主机操作系统,为每个虚拟机提供了一个完整的操作系统实例,从而实现了高性能的虚拟...
KVM是一种开源虚拟化解决方案,能够运行Linux、Windows等操作系统作为客户机,在支持虚拟化的x86架构硬件上,以接近物理机的性能运行虚拟机。 云计算是本书的背景知识之一,作者在第1章中介绍了云计算的相关概念,...
2. **CPU亲和性设置**:KVM支持设置CPU亲和性,即可以将vCPU绑定到特定的物理CPU上,以提高性能或满足特定的应用需求。例如,可以通过libvirt等工具来指定从哪个NUMA节点为虚拟机分配vCPU和内存资源。 3. **vCPU超分...
9. Node Binding:节点绑定是将qemu进程绑定到特定的CPU节点或核心上,以避免L2/L3 Cache miss。 10. Taskset:Taskset是用于设置进程亲和力的工具。可以使用Taskset将qemu进程绑定到特定的CPU节点或核心上,以提高...
KVM虚拟化技术通过硬件虚拟化支持和优化的QEMU,实现了高效的处理器隔离,从而在一台物理服务器上运行多个独立的操作系统实例。这种技术在数据中心和云计算环境中广泛使用,提高了硬件资源的利用率,降低了运营成本...
KVM通过在主机操作系统上添加一个模块来实现虚拟化,这个模块使得Linux内核能够直接管理虚拟机的CPU和内存资源。每个虚拟机都运行在一个独立的进程中,拥有自己的虚拟CPU和内存空间,这些虚拟资源由KVM映射到物理...
QEMU与KVM结合使用时,QEMU负责模拟I/O设备,而KVM专注于CPU虚拟化。 2. **libvirt**:这是一个API库,用于管理虚拟化基础设施,包括KVM、Xen和其他虚拟化技术。它提供了多种语言的绑定,使得管理员可以通过编程方式...
CPU亲和性是指将进程绑定到特定的处理器核心,以避免频繁的上下文切换和提高性能。在KVM中,可以通过设置虚拟机的进程属性,使其在创建或运行时都固定在预设的核心上。 处理器隔离的意义在于,可以确保关键任务或...
2. **CPU亲和性(CPU Affinity)**:将虚拟机的CPU核心与特定的物理核心绑定可以减少上下文切换的开销,并且可以减少虚拟机之间的资源竞争。 3. **CPU资源预留和限制**:可以通过设置虚拟机的CPU份额和限制来保证...
在配置网桥时,需要创建一个网桥 br0,接管 eth0 来连接外部网络,然后将宿主机和虚拟机的网卡 eth0 都绑定到网桥上。然后,需要重启 networking 服务,以便网桥能够生效。 在安装虚拟机时,需要将系统镜像文件放到...
在IT行业中,虚拟化技术是不可或缺的一部分,Libvirt作为一个开源的API库,为管理不同虚拟化平台(如KVM、Xen、QEMU等)提供了统一的接口。本篇文章将聚焦于Libvirt创建虚拟机时XML配置文件中的“Domain vcpu numa”...
OpenStack性能优化是一门涉及到虚拟化技术、尤其是与KVM结合的性能调优技术,它涵盖了API调用、NUMA(非一致性内存访问)配置、大页内存配置和CPU绑定等多个方面。在进行性能调优前,需要先了解OpenStack的基础架构...
- **定义存储池**:使用`virsh`命令创建一个名为`StoragePool`的目录类型存储池,并将其绑定到之前创建的目录:`virsh pool-define-as StoragePool --type dir --target /home/kvm/images`。 - **构建和启动存储池...
- **3.7 CPU亲和性**:通过将特定的任务绑定到特定的CPU核心,减少缓存失效和上下文切换。 - **3.8 环形队列**:用于高效的数据包存储和检索,降低了延迟。 #### 三、影响DPDK性能的因素 在使用DPDK进行网络数据包...
libvirt是由Red Hat公司发起的一个项目,旨在提供一套通用的API,使得开发人员能够轻松地控制各种虚拟化技术,如KVM、Xen、QEMU等。libvirt0.9.4是该库的一个早期版本,虽然相较于最新的版本可能在功能上有所限制,...
4. **QEMU和KVM**:Intel GVT通常与开源虚拟化工具QEMU和KVM(Kernel-based Virtual Machine)结合使用,它们提供了虚拟化层,使GVT能有效地在Linux系统上运行。 5. **驱动程序支持**:Intel为GVT开发了专门的驱动...