Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Turbo码先生
redis
提交
92e28228
R
redis
项目概览
Turbo码先生
/
redis
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
redis
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
92e28228
编写于
11月 02, 2010
作者:
A
antirez
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
zmalloc functions to get RSS and fragmentation refactored into two separated functions
上级
21dbc649
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
26 addition
and
8 deletion
+26
-8
src/zmalloc.c
src/zmalloc.c
+25
-8
src/zmalloc.h
src/zmalloc.h
+1
-0
未找到文件。
src/zmalloc.c
浏览文件 @
92e28228
...
...
@@ -183,7 +183,15 @@ void zmalloc_enable_thread_safeness(void) {
zmalloc_thread_safe
=
1
;
}
/* Fragmentation = RSS / allocated-bytes */
/* Get the RSS information in an OS-specific way.
*
* WARNING: the function zmalloc_get_rss() is not designed to be fast
* and may not be called in the busy loops where Redis tries to release
* memory expiring or swapping out objects.
*
* For this kind of "fast RSS reporting" usages use instead the
* function RedisEstimateRSS() that is a much faster (and less precise)
* version of the funciton. */
#if defined(HAVE_PROCFS)
#include <unistd.h>
...
...
@@ -191,8 +199,7 @@ void zmalloc_enable_thread_safeness(void) {
#include <sys/stat.h>
#include <fcntl.h>
float
zmalloc_get_fragmentation_ratio
(
void
)
{
size_t
allocated
=
zmalloc_used_memory
();
size_t
zmalloc_get_rss
(
void
)
{
int
page
=
sysconf
(
_SC_PAGESIZE
);
size_t
rss
;
char
buf
[
4096
];
...
...
@@ -221,7 +228,7 @@ float zmalloc_get_fragmentation_ratio(void) {
rss
=
strtoll
(
p
,
NULL
,
10
);
rss
*=
page
;
return
(
float
)
rss
/
allocated
;
return
rss
;
}
#elif defined(HAVE_TASKINFO)
#include <unistd.h>
...
...
@@ -232,7 +239,7 @@ float zmalloc_get_fragmentation_ratio(void) {
#include <mach/task.h>
#include <mach/mach_init.h>
float
zmalloc_get_fragmentation_ratio
(
void
)
{
size_t
zmalloc_get_rss
(
void
)
{
task_t
task
=
MACH_PORT_NULL
;
struct
task_basic_info
t_info
;
mach_msg_type_number_t
t_info_count
=
TASK_BASIC_INFO_COUNT
;
...
...
@@ -241,10 +248,20 @@ float zmalloc_get_fragmentation_ratio(void) {
return
0
;
task_info
(
task
,
TASK_BASIC_INFO
,
(
task_info_t
)
&
t_info
,
&
t_info_count
);
return
(
float
)
t_info
.
resident_size
/
zmalloc_used_memory
()
;
return
t_info
.
resident_size
;
}
#else
float
zmalloc_get_fragmentation_ratio
(
void
)
{
return
0
;
float
zmalloc_get_rss
(
void
)
{
/* If we can't get the RSS in an OS-specific way for this system just
* return the memory usage we estimated in zmalloc()..
*
* Fragmentation will appear to be always 1 (no fragmentation)
* of course... */
return
zmalloc_used_memory
();
}
#endif
/* Fragmentation = RSS / allocated-bytes */
float
zmalloc_get_fragmentation_ratio
(
void
)
{
return
(
float
)
zmalloc_get_rss
()
/
zmalloc_used_memory
();
}
src/zmalloc.h
浏览文件 @
92e28228
...
...
@@ -39,5 +39,6 @@ char *zstrdup(const char *s);
size_t
zmalloc_used_memory
(
void
);
void
zmalloc_enable_thread_safeness
(
void
);
float
zmalloc_get_fragmentation_ratio
(
void
);
size_t
zmalloc_get_rss
(
void
);
#endif
/* _ZMALLOC_H */
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录