Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
libvirt
提交
001b9dc1
L
libvirt
项目概览
openeuler
/
libvirt
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
libvirt
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
001b9dc1
编写于
6月 17, 2014
作者:
M
Martin Kletzander
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
qemu: enable disjoint numa cpu ranges
Signed-off-by:
N
Martin Kletzander
<
mkletzan@redhat.com
>
上级
1a324c2f
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
51 addition
and
12 deletion
+51
-12
src/qemu/qemu_command.c
src/qemu/qemu_command.c
+14
-12
tests/qemuxml2argvdata/qemuxml2argv-cpu-numa-disjoint.args
tests/qemuxml2argvdata/qemuxml2argv-cpu-numa-disjoint.args
+6
-0
tests/qemuxml2argvdata/qemuxml2argv-cpu-numa-disjoint.xml
tests/qemuxml2argvdata/qemuxml2argv-cpu-numa-disjoint.xml
+28
-0
tests/qemuxml2argvtest.c
tests/qemuxml2argvtest.c
+2
-0
tests/qemuxml2xmltest.c
tests/qemuxml2xmltest.c
+1
-0
未找到文件。
src/qemu/qemu_command.c
浏览文件 @
001b9dc1
...
...
@@ -6376,11 +6376,13 @@ qemuBuildSmpArgStr(const virDomainDef *def,
}
static
int
qemuBuildNumaArgStr
(
const
virDomainDef
*
def
,
virCommandPtr
cmd
)
qemuBuildNumaArgStr
(
const
virDomainDef
*
def
,
virCommandPtr
cmd
,
virQEMUCapsPtr
qemuCaps
)
{
size_t
i
;
virBuffer
buf
=
VIR_BUFFER_INITIALIZER
;
char
*
cpumask
=
NULL
;
char
*
cpumask
=
NULL
,
*
tmpmask
=
NULL
,
*
next
=
NULL
;
int
ret
=
-
1
;
for
(
i
=
0
;
i
<
def
->
cpu
->
ncells
;
i
++
)
{
...
...
@@ -6392,7 +6394,8 @@ qemuBuildNumaArgStr(const virDomainDef *def, virCommandPtr cmd)
if
(
!
(
cpumask
=
virBitmapFormat
(
def
->
cpu
->
cells
[
i
].
cpumask
)))
goto
cleanup
;
if
(
strchr
(
cpumask
,
','
))
{
if
(
strchr
(
cpumask
,
','
)
&&
!
virQEMUCapsGet
(
qemuCaps
,
QEMU_CAPS_NUMA
))
{
virReportError
(
VIR_ERR_CONFIG_UNSUPPORTED
,
"%s"
,
_
(
"disjoint NUMA cpu ranges are not supported "
"with this QEMU"
));
...
...
@@ -6401,15 +6404,14 @@ qemuBuildNumaArgStr(const virDomainDef *def, virCommandPtr cmd)
virCommandAddArg
(
cmd
,
"-numa"
);
virBufferAsprintf
(
&
buf
,
"node,nodeid=%zu"
,
i
);
virBufferAddLit
(
&
buf
,
",cpus="
);
/* Up through qemu 1.4, -numa does not accept a cpus
* argument any more complex than start-stop.
*
* XXX For qemu 1.5, the syntax has not yet been decided
;
* but when it is, we need a capability bit and
* translation of our cpumask into the qemu syntax. */
virBufferAdd
(
&
buf
,
cpumask
,
-
1
);
for
(
tmpmask
=
cpumask
;
tmpmask
;
tmpmask
=
next
)
{
if
((
next
=
strchr
(
tmpmask
,
','
)))
*
(
next
++
)
=
'\0'
;
virBufferAddLit
(
&
buf
,
",cpus="
)
;
virBufferAdd
(
&
buf
,
tmpmask
,
-
1
);
}
virBufferAsprintf
(
&
buf
,
",mem=%d"
,
cellmem
);
virCommandAddArgBuffer
(
cmd
,
&
buf
);
...
...
@@ -7313,7 +7315,7 @@ qemuBuildCommandLine(virConnectPtr conn,
VIR_FREE
(
smp
);
if
(
def
->
cpu
&&
def
->
cpu
->
ncells
)
if
(
qemuBuildNumaArgStr
(
def
,
cmd
)
<
0
)
if
(
qemuBuildNumaArgStr
(
def
,
cmd
,
qemuCaps
)
<
0
)
goto
error
;
if
(
virQEMUCapsGet
(
qemuCaps
,
QEMU_CAPS_UUID
))
...
...
tests/qemuxml2argvdata/qemuxml2argv-cpu-numa-disjoint.args
0 → 100644
浏览文件 @
001b9dc1
LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=none \
/usr/bin/qemu -S -M pc \
-m 214 -smp 16 -numa node,nodeid=0,cpus=0-3,cpus=8-11,mem=107 \
-numa node,nodeid=1,cpus=4-7,cpus=12-15,mem=107 -nographic -monitor \
unix:/tmp/test-monitor,server,nowait -no-acpi -boot n -usb -net none -serial none \
-parallel none
tests/qemuxml2argvdata/qemuxml2argv-cpu-numa-disjoint.xml
0 → 100644
浏览文件 @
001b9dc1
<domain
type=
'qemu'
>
<name>
QEMUGuest1
</name>
<uuid>
c7a5fdbd-edaf-9455-926a-d65c16db1809
</uuid>
<memory
unit=
'KiB'
>
219100
</memory>
<currentMemory
unit=
'KiB'
>
219100
</currentMemory>
<vcpu
placement=
'static'
>
16
</vcpu>
<os>
<type
arch=
'x86_64'
machine=
'pc'
>
hvm
</type>
<boot
dev=
'network'
/>
</os>
<cpu>
<topology
sockets=
'2'
cores=
'4'
threads=
'2'
/>
<numa>
<cell
id=
'0'
cpus=
'0-3,8-11'
memory=
'109550'
/>
<cell
id=
'1'
cpus=
'4-7,12-15'
memory=
'109550'
/>
</numa>
</cpu>
<clock
offset=
'utc'
/>
<on_poweroff>
destroy
</on_poweroff>
<on_reboot>
restart
</on_reboot>
<on_crash>
destroy
</on_crash>
<devices>
<emulator>
/usr/bin/qemu
</emulator>
<controller
type=
'usb'
index=
'0'
/>
<controller
type=
'pci'
index=
'0'
model=
'pci-root'
/>
<memballoon
model=
'virtio'
/>
</devices>
</domain>
tests/qemuxml2argvtest.c
浏览文件 @
001b9dc1
...
...
@@ -1179,6 +1179,8 @@ mymain(void)
DO_TEST
(
"cpu-numa1"
,
NONE
);
DO_TEST
(
"cpu-numa2"
,
QEMU_CAPS_SMP_TOPOLOGY
);
DO_TEST_PARSE_ERROR
(
"cpu-numa3"
,
NONE
);
DO_TEST_FAILURE
(
"cpu-numa-disjoint"
,
NONE
);
DO_TEST
(
"cpu-numa-disjoint"
,
QEMU_CAPS_NUMA
);
DO_TEST
(
"cpu-host-model"
,
NONE
);
skipLegacyCPUs
=
true
;
DO_TEST
(
"cpu-host-model-fallback"
,
NONE
);
...
...
tests/qemuxml2xmltest.c
浏览文件 @
001b9dc1
...
...
@@ -372,6 +372,7 @@ mymain(void)
DO_TEST_DIFFERENT
(
"cpu-numa1"
);
DO_TEST_DIFFERENT
(
"cpu-numa2"
);
DO_TEST
(
"cpu-numa-disjoint"
);
DO_TEST_DIFFERENT
(
"numatune-auto-prefer"
);
DO_TEST_DIFFERENT
(
"numatune-memnode"
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录