问题标签 [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.
zlib - Qemu 配置抛出 zlib、pthread 和 kvm 缺失错误
我一直试图让我的 qemu 版本在新机器上运行。我安装了 zlib1g-dev、zlib-bin 等。当我执行 whereis zlib 时,我得到了
我也尝试从源代码编译和安装 zlib,但存在同样的问题。
我得到的确切错误是
此外,如果我因此而注释掉出口,我会得到
和
kvm 模块已启用并且机器支持硬件虚拟化。我已经使用 kvm-ok 进行了检查。lsmod 显示 kvm 和 kvm_intel 模块。
我真的对这些错误感到困惑。任何帮助或指示将不胜感激。
virtualization - guestOS 进程在任何给定时间占用 VCPU?
最近我一直在研究一些关于硬件支持的虚拟化的东西。
我读到了主机 cpu 的 3 种状态,因此是最常见的用户空间、内核空间和新来宾状态。正如我从 ps 命令中看到的那样,我启动的 vm 有一个进程,还有一些“子”线程用于虚拟机拥有的每个cpu。另外我注意到当vm运行一些与io相关的程序时,主机上会创建更多的线程,我猜这可能是qemu对硬件仿真的响应。
所以我的问题来了:对于任何特定时间(客户状态的时间,而不是其他两个时间),一个 vcpu 线程是否代表一个正在运行的客户操作系统进程(我的意思是“占用”和“独占”)?就像物理 cpu 一样,对于用户空间中的任何给定时间,用户进程都在其上运行。这可能听起来有点愚蠢,我只是想弄清楚它以供进一步研究。
为了让这个问题变得简单:在主机上运行的 vcpu 线程是否在任何给定时间与某个 guestOS 进程相关联?
进一步简化:当我说guestOS进程实际上直接在主机CPU上运行并作为普通主机进程调度时是否正确?这两种进程之间的区别就是我们所说的虚拟化?
也许我需要另一个线程来解决一些关于guestOS进程切换的问题,但在此之前,希望你们能帮助我解决这个问题。
真诚的MeNok
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 的内联程序集,我也不熟悉。
我附上了下面的代码。有人可以解释里面发生了什么吗?它不必非常详细。任何信息都会有所帮助,谢谢。
kvm - 如何用 veewee 创建 KVM?
我正在寻找有关如何使用veewee创建KVM的简短教程?我想使用veewee来构建适合我的应用程序需求的操作系统
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文件中捕获对上述函数的所有调用
但是,我仍然缺少某些指令的加载/存储,例如
问题 :
- 有人可以指出我缺少的其他加载/存储点(直接或间接)吗?
- qemu 是否为访问来宾内存(如
guest_read()
)提供了单一入口点功能,可用于跟踪来自来宾内存的所有负载? - 有人可以指出一个好的文档,我可以在其中了解 qemu 如何维护客户内存的状态?
抱歉朋友们在之前的邮件中的误导性说明。
似乎所有上述说明都被tcg_gen_ld/st
助手覆盖了。
但是现在我偶然发现了另一个问题:
我最初认为与客户内存的所有交互都是通过 translate.c 文件中的帮助指令发生的。但是,我发现一些指令的帮助程序功能,例如cmpxcgh8b
并且cmpxchg16b
实际上正在访问客户内存。
那么,这是否意味着读取客户记忆的入口点不止一个。有人可以解释一下 ldq 和 stq 指令是如何翻译来访问客户内存的吗?
ssh - KVM/网桥:没有到主机的路由
我已经在 Fedora 17 上使用 KVM 设置了一个 VM,并为 KVM 配置了一个桥接网络。主机和虚拟机都使用手动IP配置,主机IP为192.168.0.2,虚拟机为192.168.0.10。从虚拟机我可以毫无问题地连接到主机,但从主机我无法通过 SSH 连接到虚拟机,即使我仍然可以从主机 ping KVM。尝试 ssh 只会给我结果“没有主机路由”。
哦,我禁用了 iptables,所以我认为这不是防火墙的问题。
qemu - Kvm/Qemu 最大虚拟机计数限制
对于一个研究项目,我试图在 Ubuntu 服务器 12.04 下的 KVM 中使用 python libvirt 绑定启动尽可能多的 VM。所有虚拟机在启动后都设置为空闲,并使用最少的内存。最多我能够在单个主机上启动 1000 个 VM,此时内核(Linux 3x)变得无响应,即使 CPU 和内存使用量都远未接近极限(48 核 AMD,128GB 内存。)之前这样,在几百个 VM 之后,启动过程逐渐变慢。
我认为这一定与 KVM/Qemu 驱动程序有关,因为 linux 内核本身在处理这几个进程时应该没有问题。但是,我确实读到 Qemu 驱动程序现在是多线程的。关于这种缓慢的原因可能是什么的任何想法 - 或者至少我应该从哪里开始寻找?
python - KVM api 启动虚拟机
我想知道是否有一个 KVM API,它允许您使用简单的命令从 python 脚本启动 KVM 虚拟机。
我的 Python 脚本执行一系列检查以查看我们是否需要启动特定 VM,如果需要,我想启动 VM。
我现在需要的只是找到 API 调用,但我无法在 libvirt 网站中找到一个简单的调用来启动它们。有人知道这是否可能吗?
c - 跟踪并保存代码流
我想知道是否有任何方法可以编译程序(我自己的程序或开源程序),当我执行该程序时,我可以使用它来跟踪该程序的流程。理想情况下,我想输出程序执行时所经过的具体方法。每次它调用一个特定的方法时,我想输出它已经这样做了,我想把它保存到一个文件中以供以后分析。
例如,我试图更好地理解 KVM(一种开源虚拟机管理程序)中的流程,但显然有很多行代码,除非我花几周的时间来找出代码,否则我不可能知道代码的去向。
我正在查看的代码主要是用 C 编写的,但也使用其他语言。请问有什么想法吗?
linux-kernel - 使用系统调用 fork 克隆一个 kvm vm
呈现为 qemu-kvm 进程的 KVM 虚拟机。在某些情况下,如果我们想克隆虚拟机,为什么不使用 fork?如我所见,至少有两个优点:
- sub VM 将与copy-on-write共享内存,减少内存消耗。
- 使用写时复制即时克隆虚拟机
当然,还有一些问题需要解决,比如
- 设计磁盘写入时复制以共享主 VM 映像文件。
- 重定向子虚拟机 IO。