问题标签 [kvm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3008 浏览

zlib - Qemu 配置抛出 zlib、pthread 和 kvm 缺失错误

我一直试图让我的 qemu 版本在新机器上运行。我安装了 zlib1g-dev、zlib-bin 等。当我执行 whereis zlib 时,我得到了

我也尝试从源代码编译和安装 zlib,但存在同样的问题。

我得到的确切错误是

此外,如果我因此而注释掉出口,我会得到

kvm 模块已启用并且机器支持硬件虚拟化。我已经使用 kvm-ok 进行了检查。lsmod 显示 kvm 和 kvm_intel 模块。

我真的对这些错误感到困惑。任何帮助或指示将不胜感激。

0 投票
2 回答
114 浏览

virtualization - guestOS 进程在任何给定时间占用 VCPU?

最近我一直在研究一些关于硬件支持的虚拟化的东西。

我读到了主机 cpu 的 3 种状态,因此是最常见的用户空间、内核空间和新来宾状态。正如我从 ps 命令中看到的那样,我启动的 vm 有一个进程,还有一些“子”线程用于虚拟机拥有的每个cpu。另外我注意到当vm运行一些与io相关的程序时,主机上会创建更多的线程,我猜这可能是qemu对硬件仿真的响应。

所以我的问题来了:对于任何特定时间(客户状态的时间,而不是其他两个时间),一个 vcpu 线程是否代表一个正在运行的客户操作系统进程(我的意思是“占用”和“独占”)?就像物理 cpu 一样,对于用户空间中的任何给定时间,用户进程都在其上运行。这可能听起来有点愚蠢,我只是想弄清楚它以供进一步研究。

为了让这个问题变得简单:在主机上运行的 vcpu 线程是否在任何给定时间与某个 guestOS 进程相关联?

进一步简化:当我说guestOS进程实际上直接在主机CPU上运行并作为普通主机进程调度时是否正确?这两种进程之间的区别就是我们所说的虚拟化?

也许我需要另一个线程来解决一些关于guestOS进程切换的问题,但在此之前,希望你们能帮助我解决这个问题。

真诚的MeNok

0 投票
1 回答
359 浏览

linux-kernel - native_apic_mem_write 和 native_apic_msr_write 之间的区别?

我是linux内核的新手,对它了解不多。出于某种原因,我还必须跟踪 linux 主机内核和 kvm 来宾内核上的延迟问题。现在我只需要将native_apic_msr_write(用于linux 主机内核)与naitve_apic_mem_write(用于kvm guset 内核)进行比较。

基于我有限的知识,我尝试阅读这两个函数调用的源代码,并且我相信 native_apic_msr_write 用于将值写入 msr 寄存器(希望这是正确的)。我的问题是我不明白 native_apic_mem_write 做了什么,因为它调用了一些称为 ALTERNATIVE 的内联程序集,我也不熟悉。

我附上了下面的代码。有人可以解释里面发生了什么吗?它不必非常详细。任何信息都会有所帮助,谢谢。

0 投票
1 回答
410 浏览

kvm - 如何用 veewee 创建 KVM?

我正在寻找有关如何使用veewee创建KVM的简短教程?我想使用veewee来构建适合我的应用程序需求的操作系统

0 投票
1 回答
1340 浏览

memory - qemu 内存操作

我打算使用 Qemu 为执行 x86 客户操作系统生成内存跟踪。

根据 tcg wiki 页面,Qemu 使用一些帮助程序来生成目标(来宾)内存的加载/存储。这个指令列表是tcg_gen_qemu_ld8s/u, tcg_gen_qemu_ld16s/u, tcg_gen_qemu_ld32s/u, tcg_gen_qemu_ld64。(我们有一套类似的商店说明)。我在target-i386/translate.c文件中捕获对上述函数的所有调用

但是,我仍然缺少某些指令的加载/存储,例如

问题 :

  1. 有人可以指出我缺少的其他加载/存储点(直接或间接)吗?
  2. qemu 是否为访问来宾内存(如guest_read())提供了单一入口点功能,可用于跟踪来自来宾内存的所有负载?
  3. 有人可以指出一个好的文档,我可以在其中了解 qemu 如何维护客户内存的状态?

抱歉朋友们在之前的邮件中的误导性说明。

似乎所有上述说明都被tcg_gen_ld/st助手覆盖了。

但是现在我偶然发现了另一个问题:
我最初认为与客户内存的所有交互都是通过 translate.c 文件中的帮助指令发生的。但是,我发现一些指令的帮助程序功能,例如cmpxcgh8b并且cmpxchg16b实际上正在访问客户内存。

那么,这是否意味着读取客户记忆的入口点不止一个。有人可以解释一下 ldq 和 stq 指令是如何翻译来访问客户内存的吗?

0 投票
2 回答
8023 浏览

ssh - KVM/网桥:没有到主机的路由

我已经在 Fedora 17 上使用 KVM 设置了一个 VM,并为 KVM 配置了一个桥接网络。主机和虚拟机都使用手动IP配置,主机IP为192.168.0.2,虚拟机为192.168.0.10。从虚拟机我可以毫无问题地连接到主机,但从主机我无法通过 SSH 连接到虚拟机,即使我仍然可以从主机 ping KVM。尝试 ssh 只会给我结果“没有主机路由”。

哦,我禁用了 iptables,所以我认为这不是防火墙的问题。

0 投票
2 回答
6010 浏览

qemu - Kvm/Qemu 最大虚拟机计数限制

对于一个研究项目,我试图在 Ubuntu 服务器 12.04 下的 KVM 中使用 python libvirt 绑定启动尽可能多的 VM。所有虚拟机在启动后都设置为空闲,并使用最少的内存。最多我能够在单个主机上启动 1000 个 VM,此时内核(Linux 3x)变得无响应,即使 CPU 和内存使用量都远未接近极限(48 核 AMD,128GB 内存。)之前这样,在几百个 VM 之后,启动过程逐渐变慢。

我认为这一定与 KVM/Qemu 驱动程序有关,因为 linux 内核本身在处理这几个进程时应该没有问题。但是,我确实读到 Qemu 驱动程序现在是多线程的。关于这种缓慢的原因可能是什么的任何想法 - 或者至少我应该从哪里开始寻找?

0 投票
4 回答
10524 浏览

python - KVM api 启动虚拟机

我想知道是否有一个 KVM API,它允许您使用简单的命令从 python 脚本启动 KVM 虚拟机。

我的 Python 脚本执行一系列检查以查看我们是否需要启动特定 VM,如果需要,我想启动 VM。

我现在需要的只是找到 API 调用,但我无法在 libvirt 网站中找到一个简单的调用来启动它们。有人知道这是否可能吗?

0 投票
1 回答
87 浏览

c - 跟踪并保存代码流

我想知道是否有任何方法可以编译程序(我自己的程序或开源程序),当我执行该程序时,我可以使用它来跟踪该程序的流程。理想情况下,我想输出程序执行时所经过的具体方法。每次它调用一个特定的方法时,我想输出它已经这样做了,我想把它保存到一个文件中以供以后分析。

例如,我试图更好地理解 KVM(一种开源虚拟机管理程序)中的流程,但显然有很多行代码,除非我花几周的时间来找出代码,否则我不可能知道代码的去向。

我正在查看的代码主要是用 C 编写的,但也使用其他语言。请问有什么想法吗?

0 投票
1 回答
996 浏览

linux-kernel - 使用系统调用 fork 克隆一个 kvm vm

呈现为 qemu-kvm 进程的 KVM 虚拟机。在某些情况下,如果我们想克隆虚拟机,为什么不使用 fork?如我所见,至少有两个优点:

  1. sub VM 将与copy-on-write共享内存,减少内存消耗。
  2. 使用写时复制即时克隆虚拟机

当然,还有一些问题需要解决,比如

  1. 设计磁盘写入时复制以共享主 VM 映像文件。
  2. 重定向子虚拟机 IO。