Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
tp-qemu
提交
1cc0cb0d
T
tp-qemu
项目概览
openeuler
/
tp-qemu
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
tp-qemu
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
1cc0cb0d
编写于
5月 18, 2020
作者:
X
Xu Han
提交者:
GitHub
5月 18, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #2100 from zhenyzha/hugepage_specify_numa
hugepage_specify_node: New case to test qemu allocate hugepage from node
上级
d3a4436d
2e3462a6
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
94 addition
and
0 deletion
+94
-0
qemu/tests/cfg/hugepage_specify_node.cfg
qemu/tests/cfg/hugepage_specify_node.cfg
+9
-0
qemu/tests/hugepage_specify_node.py
qemu/tests/hugepage_specify_node.py
+85
-0
未找到文件。
qemu/tests/cfg/hugepage_specify_node.cfg
0 → 100644
浏览文件 @
1cc0cb0d
- hugepage_specify_node:
type = hugepage_specify_node
virt_test_type = qemu
kill_vm = yes
start_vm = no
not_preprocess = yes
mem = 4096
idle_node_mem = 1024
extra_params += " -mem-path /mnt/kvm_hugepage"
qemu/tests/hugepage_specify_node.py
0 → 100644
浏览文件 @
1cc0cb0d
import
logging
import
math
from
avocado.utils
import
memory
from
virttest
import
env_process
from
virttest
import
error_context
from
virttest
import
test_setup
from
virttest
import
utils_misc
from
virttest.utils_numeric
import
normalize_data_size
@
error_context
.
context_aware
def
run
(
test
,
params
,
env
):
"""
Qemu allocate hugepage from specify node.
Steps:
1) Setup total of 4G mem hugepages for specify node.
2) Setup total of 1G mem hugepages for idle node.
3) Mount this hugepage to /mnt/kvm_hugepage.
4) Boot guest only allocate hugepage from specify node.
5) Check the hugepage used from every node.
:params test: QEMU test object.
:params params: Dictionary with the test parameters.
:params env: Dictionary with test environment.
"""
memory
.
drop_caches
()
hugepage_size
=
memory
.
get_huge_page_size
()
mem_size
=
int
(
normalize_data_size
(
"%sM"
%
params
[
"mem"
],
"K"
))
idle_node_mem
=
int
(
normalize_data_size
(
"%sM"
%
params
[
"idle_node_mem"
],
"K"
))
error_context
.
context
(
"Get host numa topological structure."
,
logging
.
info
)
host_numa_node
=
utils_misc
.
NumaInfo
()
node_list
=
host_numa_node
.
get_online_nodes_withmem
()
idle_node_list
=
node_list
.
copy
()
node_meminfo
=
host_numa_node
.
get_all_node_meminfo
()
for
node_id
in
node_list
:
error_context
.
base_context
(
"Check preprocess HugePages Free on host "
"numa node %s."
%
node_id
,
logging
.
info
)
node_memfree
=
int
(
node_meminfo
[
node_id
][
"MemFree"
])
if
node_memfree
<
idle_node_mem
:
idle_node_list
.
remove
(
node_id
)
if
node_memfree
<
mem_size
:
node_list
.
remove
(
node_id
)
if
len
(
idle_node_list
)
<
2
or
not
node_list
:
test
.
cancel
(
"Host node does not have enough nodes to run the test, "
"skipping test..."
)
for
node_id
in
node_list
:
error_context
.
base_context
(
"Specify qemu process only allocate "
"HugePages from node%s."
%
node_id
,
logging
.
info
)
params
[
"target_nodes"
]
=
"%s"
%
node_id
params
[
"target_num_node%s"
%
node_id
]
=
math
.
ceil
(
mem_size
/
hugepage_size
)
error_context
.
context
(
"Setup huge pages for specify node%s."
%
node_id
,
logging
.
info
)
check_list
=
[
_
for
_
in
idle_node_list
if
_
!=
node_id
]
for
idle_node
in
check_list
:
params
[
"target_nodes"
]
+=
" %s"
%
idle_node
params
[
"target_num_node%s"
%
idle_node
]
=
math
.
ceil
(
idle_node_mem
/
hugepage_size
)
error_context
.
context
(
"Setup huge pages for idle node%s."
%
idle_node
,
logging
.
info
)
params
[
"setup_hugepages"
]
=
"yes"
hp_config
=
test_setup
.
HugePageConfig
(
params
).
setup
()
params
[
"qemu_command_prefix"
]
=
"numactl --membind=%s"
%
node_id
params
[
"start_vm"
]
=
"yes"
env_process
.
preprocess_vm
(
test
,
params
,
env
,
params
[
"main_vm"
])
try
:
vm
=
env
.
get_vm
(
params
[
"main_vm"
])
vm
.
verify_alive
()
vm
.
wait_for_login
()
meminfo
=
host_numa_node
.
get_all_node_meminfo
()
for
index
in
check_list
:
error_context
.
base_context
(
"Check process HugePages Free on host "
"numa node %s."
%
index
,
logging
.
info
)
hugepages_free
=
int
(
meminfo
[
index
][
"HugePages_Free"
])
if
int
(
node_meminfo
[
index
][
"HugePages_Free"
])
>
hugepages_free
:
test
.
fail
(
"Qemu still use HugePages from other node."
"Expect: node%s, used: node%s."
%
(
node_id
,
index
))
finally
:
vm
.
destroy
()
hp_config
.
cleanup
()
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录