我在具有两个 Opteron 核心的 Debian Lenny 机器上运行 VMWare Server 2.0。我想知道是否有办法手动设置处理器亲和性,以便虚拟机 1 和 2 从单个处理器启动,而虚拟机 #3 从另一个处理器启动?
我知道这不是一个开箱即用的功能,但可能有一个命令行黑客可以帮我实现我想要的功能:)。
答案1
您可以在事后使用设置亲和性taskset
。我个人会使用一个脚本来优先处理或设置 VMWare 进程的 CPU 亲和性vmware-vmx
。将其放入 cron 每小时一次或运行一次。例如,典型的 VMWare Server 2.0ps aux
输出如下所示:
[root@xxxx ~]# ps auxwww| grep vmx
root 30372 24.9 1.1 2026132 137092 ? S<sl 2010 25896:06 /usr/lib/vmware/bin/vmware-vmx -# product=2;name=VMware Server;version=2.0.2;buildnumber=203138;licensename=VMware GSX Server for Linux;licenseversion=3.0 build-203138; -@ pipe=/tmp/vmhsdaemon-0/vmxd6074b323529c88a;readyEvent=40 /vmware/xxxx_Web/xxxx_Web.vmx
要将其设置为 CPU 核心 2,我会使用类似以下命令:
#!/bin/bash
# Set CPU affinity for vmware-vmx processes to CPU core 2
for i in `pgrep -f vmware-vmx | xargs`; do taskset -c -p 1 $i; done
或者您可以手动运行taskset
相关的 PID。