提交 3725cafe 编写于 作者: D dapan1121

enh: add disk cache

上级 7221f447
...@@ -20,35 +20,48 @@ extern "C" { ...@@ -20,35 +20,48 @@ extern "C" {
#endif #endif
#define GROUP_CACHE_DEFAULT_MAX_FILE_SIZE 104857600 #define GROUP_CACHE_DEFAULT_MAX_FILE_SIZE 104857600
#define GROUP_CACHE_MAX_FILE_FDS 10
#pragma pack(push, 1) #pragma pack(push, 1)
typedef struct SGcBlkBufBasic {
int64_t blkId;
int64_t offset;
int64_t bufSize;
uint32_t fileId;
} SGcBlkBufBasic;
typedef struct SGcBlkBufInfo { typedef struct SGcBlkBufInfo {
void* prev; SGcBlkBufBasic basic;
void* next; void* next;
int64_t blkId; void* pBuf;
int64_t offset; SGcDownstreamCtx* pCtx;
int64_t bufSize; SGroupCacheData* pGroup;
void* pBuf;
uint32_t fileId;
} SGcBlkBufInfo; } SGcBlkBufInfo;
#pragma pack(pop) #pragma pack(pop)
typedef struct SGcVgroupFileFd {
TdThreadMutex mutex;
TdFilePtr fd;
} SGcVgroupFileFd;
typedef struct SGcVgroupCtx { typedef struct SGcVgroupCtx {
SArray* pTbList; SArray* pTbList;
uint64_t lastUid; uint64_t lastUid;
int64_t fileSize; int64_t fileSize;
uint32_t fileId; uint32_t fileId;
SSHashObj* pCacheFile;
int32_t baseNameLen;
char baseFilename[PATH_MAX];
} SGcVgroupCtx; } SGcVgroupCtx;
typedef struct SGroupSeqBlkList { typedef struct SGroupSeqBlkList {
int64_t startBlkId; SRWLatch lock;
int64_t endBlkId; SArray* pList;
} SGroupSeqBlkList; } SGroupSeqBlkList;
typedef struct SGroupBatchBlkList { typedef struct SGroupBatchBlkList {
SRWLatch lock; SRWLatch lock;
SArray* pBlkList; SArray* pList;
} SGroupBatchBlkList; } SGroupBatchBlkList;
typedef struct SGroupCacheData { typedef struct SGroupCacheData {
...@@ -91,6 +104,7 @@ typedef struct SGcNewGroupInfo { ...@@ -91,6 +104,7 @@ typedef struct SGcNewGroupInfo {
} SGcNewGroupInfo; } SGcNewGroupInfo;
typedef struct SGcDownstreamCtx { typedef struct SGcDownstreamCtx {
int32_t id;
SRWLatch grpLock; SRWLatch grpLock;
int64_t fetchSessionId; int64_t fetchSessionId;
SArray* pNewGrpList; // SArray<SGcNewGroupInfo> SArray* pNewGrpList; // SArray<SGcNewGroupInfo>
...@@ -101,7 +115,10 @@ typedef struct SGcDownstreamCtx { ...@@ -101,7 +115,10 @@ typedef struct SGcDownstreamCtx {
SArray* pFreeBlock; SArray* pFreeBlock;
int64_t lastBlkUid; int64_t lastBlkUid;
SHashObj* pSessions; SHashObj* pSessions;
SHashObj* pWaitSessions; SHashObj* pWaitSessions;
int32_t cacheFileFdNum;
TdFilePtr cacheFileFd[GROUP_CACHE_MAX_FILE_FDS];
char baseFilename[PATH_MAX];
} SGcDownstreamCtx; } SGcDownstreamCtx;
typedef struct SGcSessionCtx { typedef struct SGcSessionCtx {
...@@ -128,12 +145,12 @@ typedef struct SGcCacheFile { ...@@ -128,12 +145,12 @@ typedef struct SGcCacheFile {
typedef struct SGcBlkCacheInfo { typedef struct SGcBlkCacheInfo {
SRWLatch dirtyLock; SRWLatch dirtyLock;
SSHashObj* pCacheFile;
SHashObj* pDirtyBlk; SHashObj* pDirtyBlk;
SGcBlkBufInfo* pDirtyHead; SGcBlkBufInfo* pDirtyHead;
SGcBlkBufInfo* pDirtyTail; SGcBlkBufInfo* pDirtyTail;
SHashObj* pReadBlk; SHashObj* pReadBlk;
int64_t blkCacheSize; int64_t blkCacheSize;
int32_t writeDownstreamId;
} SGcBlkCacheInfo; } SGcBlkCacheInfo;
typedef struct SGroupCacheOperatorInfo { typedef struct SGroupCacheOperatorInfo {
...@@ -144,7 +161,6 @@ typedef struct SGroupCacheOperatorInfo { ...@@ -144,7 +161,6 @@ typedef struct SGroupCacheOperatorInfo {
bool globalGrp; bool globalGrp;
bool grpByUid; bool grpByUid;
bool batchFetch; bool batchFetch;
bool fetchDone;
SGcDownstreamCtx* pDownstreams; SGcDownstreamCtx* pDownstreams;
SGcBlkCacheInfo blkCache; SGcBlkCacheInfo blkCache;
SHashObj* pGrpHash; SHashObj* pGrpHash;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册