Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
libvirt
提交
901d2b9c
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,发现更多精彩内容 >>
提交
901d2b9c
编写于
7月 20, 2018
作者:
P
Pavel Hrdina
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
vircgroup: Introduce virCgroupGetMemoryStat
Signed-off-by:
N
Pavel Hrdina
<
phrdina@redhat.com
>
上级
db868852
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
96 addition
and
0 deletion
+96
-0
src/libvirt_private.syms
src/libvirt_private.syms
+1
-0
src/util/vircgroup.c
src/util/vircgroup.c
+88
-0
src/util/vircgroup.h
src/util/vircgroup.h
+7
-0
未找到文件。
src/libvirt_private.syms
浏览文件 @
901d2b9c
...
@@ -1532,6 +1532,7 @@ virCgroupGetDomainTotalCpuStats;
...
@@ -1532,6 +1532,7 @@ virCgroupGetDomainTotalCpuStats;
virCgroupGetFreezerState;
virCgroupGetFreezerState;
virCgroupGetMemoryHardLimit;
virCgroupGetMemoryHardLimit;
virCgroupGetMemorySoftLimit;
virCgroupGetMemorySoftLimit;
virCgroupGetMemoryStat;
virCgroupGetMemoryUsage;
virCgroupGetMemoryUsage;
virCgroupGetMemSwapHardLimit;
virCgroupGetMemSwapHardLimit;
virCgroupGetMemSwapUsage;
virCgroupGetMemSwapUsage;
...
...
src/util/vircgroup.c
浏览文件 @
901d2b9c
...
@@ -2427,6 +2427,94 @@ virCgroupSetMemory(virCgroupPtr group, unsigned long long kb)
...
@@ -2427,6 +2427,94 @@ virCgroupSetMemory(virCgroupPtr group, unsigned long long kb)
}
}
/**
* virCgroupGetMemoryStat:
*
* @group: The cgroup to change memory for
* @cache: page cache memory in KiB
* @activeAnon: anonymous and swap cache memory in KiB
* @inactiveAnon: anonymous and swap cache memory in KiB
* @activeFile: file-backed memory in KiB
* @inactiveFile: file-backed memory in KiB
* @unevictable: memory that cannot be reclaimed KiB
*
* Returns: 0 on success, -1 on error
*/
int
virCgroupGetMemoryStat
(
virCgroupPtr
group
,
unsigned
long
long
*
cache
,
unsigned
long
long
*
activeAnon
,
unsigned
long
long
*
inactiveAnon
,
unsigned
long
long
*
activeFile
,
unsigned
long
long
*
inactiveFile
,
unsigned
long
long
*
unevictable
)
{
int
ret
=
-
1
;
char
*
stat
=
NULL
;
char
*
line
=
NULL
;
unsigned
long
long
cacheVal
=
0
;
unsigned
long
long
activeAnonVal
=
0
;
unsigned
long
long
inactiveAnonVal
=
0
;
unsigned
long
long
activeFileVal
=
0
;
unsigned
long
long
inactiveFileVal
=
0
;
unsigned
long
long
unevictableVal
=
0
;
if
(
virCgroupGetValueStr
(
group
,
VIR_CGROUP_CONTROLLER_MEMORY
,
"memory.stat"
,
&
stat
)
<
0
)
{
return
-
1
;
}
line
=
stat
;
while
(
line
)
{
char
*
newLine
=
strchr
(
line
,
'\n'
);
char
*
valueStr
=
strchr
(
line
,
' '
);
unsigned
long
long
value
;
if
(
newLine
)
*
newLine
=
'\0'
;
if
(
!
valueStr
)
{
virReportError
(
VIR_ERR_INTERNAL_ERROR
,
"%s"
,
_
(
"Cannot parse 'memory.stat' cgroup file."
));
goto
cleanup
;
}
*
valueStr
=
'\0'
;
if
(
virStrToLong_ull
(
valueStr
+
1
,
NULL
,
10
,
&
value
)
<
0
)
goto
cleanup
;
if
(
STREQ
(
line
,
"cache"
))
cacheVal
=
value
>>
10
;
else
if
(
STREQ
(
line
,
"active_anon"
))
activeAnonVal
=
value
>>
10
;
else
if
(
STREQ
(
line
,
"inactive_anon"
))
inactiveAnonVal
=
value
>>
10
;
else
if
(
STREQ
(
line
,
"active_file"
))
activeFileVal
=
value
>>
10
;
else
if
(
STREQ
(
line
,
"inactive_file"
))
inactiveFileVal
=
value
>>
10
;
else
if
(
STREQ
(
line
,
"unevictable"
))
unevictableVal
=
value
>>
10
;
}
*
cache
=
cacheVal
;
*
activeAnon
=
activeAnonVal
;
*
inactiveAnon
=
inactiveAnonVal
;
*
activeFile
=
activeFileVal
;
*
inactiveFile
=
inactiveFileVal
;
*
unevictable
=
unevictableVal
;
ret
=
0
;
cleanup:
VIR_FREE
(
stat
);
return
ret
;
}
/**
/**
* virCgroupGetMemoryUsage:
* virCgroupGetMemoryUsage:
*
*
...
...
src/util/vircgroup.h
浏览文件 @
901d2b9c
...
@@ -177,6 +177,13 @@ int virCgroupGetBlkioDeviceWriteBps(virCgroupPtr group,
...
@@ -177,6 +177,13 @@ int virCgroupGetBlkioDeviceWriteBps(virCgroupPtr group,
unsigned
long
long
*
wbps
);
unsigned
long
long
*
wbps
);
int
virCgroupSetMemory
(
virCgroupPtr
group
,
unsigned
long
long
kb
);
int
virCgroupSetMemory
(
virCgroupPtr
group
,
unsigned
long
long
kb
);
int
virCgroupGetMemoryStat
(
virCgroupPtr
group
,
unsigned
long
long
*
cache
,
unsigned
long
long
*
activeAnon
,
unsigned
long
long
*
inactiveAnon
,
unsigned
long
long
*
activeFile
,
unsigned
long
long
*
inactiveFile
,
unsigned
long
long
*
unevictable
);
int
virCgroupGetMemoryUsage
(
virCgroupPtr
group
,
unsigned
long
*
kb
);
int
virCgroupGetMemoryUsage
(
virCgroupPtr
group
,
unsigned
long
*
kb
);
int
virCgroupSetMemoryHardLimit
(
virCgroupPtr
group
,
unsigned
long
long
kb
);
int
virCgroupSetMemoryHardLimit
(
virCgroupPtr
group
,
unsigned
long
long
kb
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录