Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
0608e908
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
0608e908
编写于
8月 19, 2021
作者:
A
AlexDuan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
nElasticBlocks replace nBufBlocks
上级
79a18b24
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
21 addition
and
16 deletion
+21
-16
src/tsdb/inc/tsdbBuffer.h
src/tsdb/inc/tsdbBuffer.h
+2
-1
src/tsdb/src/tsdbBuffer.c
src/tsdb/src/tsdbBuffer.c
+6
-2
src/tsdb/src/tsdbHealth.c
src/tsdb/src/tsdbHealth.c
+4
-9
src/tsdb/src/tsdbMemTable.c
src/tsdb/src/tsdbMemTable.c
+9
-4
未找到文件。
src/tsdb/inc/tsdbBuffer.h
浏览文件 @
0608e908
...
...
@@ -29,6 +29,7 @@ typedef struct {
int
tBufBlocks
;
int
nBufBlocks
;
int
nRecycleBlocks
;
int
nElasticBlocks
;
int64_t
index
;
SList
*
bufBlockList
;
}
STsdbBufPool
;
...
...
@@ -41,7 +42,7 @@ int tsdbOpenBufPool(STsdbRepo* pRepo);
void
tsdbCloseBufPool
(
STsdbRepo
*
pRepo
);
SListNode
*
tsdbAllocBufBlockFromPool
(
STsdbRepo
*
pRepo
);
int
tsdbExpandPool
(
STsdbRepo
*
pRepo
,
int32_t
oldTotalBlocks
);
void
tsdbRecycleBufferBlock
(
STsdbBufPool
*
pPool
,
SListNode
*
pNode
);
void
tsdbRecycleBufferBlock
(
STsdbBufPool
*
pPool
,
SListNode
*
pNode
,
bool
bELastic
);
// health cite
STsdbBufBlock
*
tsdbNewBufBlock
(
int
bufBlockSize
);
...
...
src/tsdb/src/tsdbBuffer.c
浏览文件 @
0608e908
...
...
@@ -67,6 +67,7 @@ int tsdbOpenBufPool(STsdbRepo *pRepo) {
pPool
->
bufBlockSize
=
pCfg
->
cacheBlockSize
*
1024
*
1024
;
// MB
pPool
->
tBufBlocks
=
pCfg
->
totalBlocks
;
pPool
->
nBufBlocks
=
0
;
pPool
->
nElasticBlocks
=
0
;
pPool
->
index
=
0
;
pPool
->
nRecycleBlocks
=
0
;
...
...
@@ -199,10 +200,13 @@ err:
return
err
;
}
void
tsdbRecycleBufferBlock
(
STsdbBufPool
*
pPool
,
SListNode
*
pNode
)
{
void
tsdbRecycleBufferBlock
(
STsdbBufPool
*
pPool
,
SListNode
*
pNode
,
bool
bELastic
)
{
STsdbBufBlock
*
pBufBlock
=
NULL
;
tdListNodeGetData
(
pPool
->
bufBlockList
,
pNode
,
(
void
*
)(
&
pBufBlock
));
tsdbFreeBufBlock
(
pBufBlock
);
free
(
pNode
);
pPool
->
nBufBlocks
--
;
if
(
bELastic
)
pPool
->
nElasticBlocks
--
;
else
pPool
->
nBufBlocks
--
;
}
\ No newline at end of file
src/tsdb/src/tsdbHealth.c
浏览文件 @
0608e908
...
...
@@ -32,16 +32,13 @@ int32_t tsdbInsertNewBlock(STsdbRepo * pRepo) {
if
(
tsdbIdleMemEnough
()
&&
tsdbAllowNewBlock
(
pRepo
))
{
STsdbBufBlock
*
pBufBlock
=
tsdbNewBufBlock
(
pPool
->
bufBlockSize
);
if
(
pBufBlock
)
{
if
(
tsdbLockRepo
(
pRepo
)
>=
0
)
{
if
(
tdListAppend
(
pPool
->
bufBlockList
,
(
void
*
)(
&
pBufBlock
))
<
0
)
{
// append error
tsdbFreeBufBlock
(
pBufBlock
);
}
else
{
pPool
->
n
Recycle
Blocks
++
;
pPool
->
n
Elastic
Blocks
++
;
cnt
++
;
}
tsdbUnlockRepo
(
pRepo
);
}
}
}
return
cnt
;
...
...
@@ -91,13 +88,11 @@ bool tsdbIdleMemEnough() {
bool
tsdbAllowNewBlock
(
STsdbRepo
*
pRepo
)
{
//TODO config to taos.cfg
int32_t
n
ElasticBlocks
=
10
;
int32_t
n
MaxElastic
=
3
;
STsdbBufPool
*
pPool
=
pRepo
->
pPool
;
int32_t
nOverBlocks
=
pPool
->
nBufBlocks
-
pRepo
->
config
.
totalBlocks
;
if
(
nOverBlocks
>
nElasticBlocks
)
{
tsdbWarn
(
"tsdbHealth allowNewBlock forbid. nOverBlocks(%d) > nElasticBlocks(%d)"
,
nOverBlocks
,
nElasticBlocks
);
if
(
pPool
->
nElasticBlocks
>=
nMaxElastic
)
{
tsdbWarn
(
"tsdbAllowNewBlock return fasle. nElasticBlock(%d) >= MaxElasticBlocks(%d)"
,
pPool
->
nElasticBlocks
,
nMaxElastic
);
return
false
;
}
return
true
;
}
src/tsdb/src/tsdbMemTable.c
浏览文件 @
0608e908
...
...
@@ -99,17 +99,22 @@ int tsdbUnRefMemTable(STsdbRepo *pRepo, SMemTable *pMemTable) {
STsdbBufPool
*
pBufPool
=
pRepo
->
pPool
;
SListNode
*
pNode
=
NULL
;
bool
recycleBlocks
=
pBufPool
->
nRecycleBlocks
>
0
;
bool
addNew
=
false
;
if
(
tsdbLockRepo
(
pRepo
)
<
0
)
return
-
1
;
while
((
pNode
=
tdListPopHead
(
pMemTable
->
bufBlockList
))
!=
NULL
)
{
if
(
pBufPool
->
nRecycleBlocks
>
0
)
{
tsdbRecycleBufferBlock
(
pBufPool
,
pNode
);
tsdbRecycleBufferBlock
(
pBufPool
,
pNode
,
false
);
pBufPool
->
nRecycleBlocks
-=
1
;
}
else
{
tdListAppendNode
(
pBufPool
->
bufBlockList
,
pNode
);
if
(
pBufPool
->
nElasticBlocks
>
0
&&
listNEles
(
pBufPool
->
bufBlockList
)
>
0
)
{
tsdbRecycleBufferBlock
(
pBufPool
,
pNode
,
true
);
}
else
{
tdListAppendNode
(
pBufPool
->
bufBlockList
,
pNode
);
addNew
=
true
;
}
}
}
if
(
!
recycleBlocks
)
{
if
(
addNew
)
{
int
code
=
pthread_cond_signal
(
&
pBufPool
->
poolNotEmpty
);
if
(
code
!=
0
)
{
if
(
tsdbUnlockRepo
(
pRepo
)
<
0
)
return
-
1
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录