主从同步性能优化,主从同步性能测试。

This commit is contained in:
1iaan
2026-02-01 16:49:50 +00:00
parent 003566b69a
commit 6d1a50cf88
31 changed files with 2119 additions and 400 deletions

59
ebpf/c/replica_shm.h Normal file
View File

@@ -0,0 +1,59 @@
#ifndef __REPLICA_SHM_H__
#define __REPLICA_SHM_H__
#include <stdint.h>
#include <stddef.h>
#ifndef REPLICA_SHM_NAME
#define REPLICA_SHM_NAME "/kvs_replica_shm"
#endif
#ifndef REPLICA_SHM_SIZE
// 64MB按需调
#define REPLICA_SHM_SIZE (256u * 1024u * 1024u)
#endif
// 每条记录头部(放在 shm 的 data 区里)
typedef struct __attribute__((packed)) {
uint64_t seq; // 单调递增
uint32_t len; // payload bytes
uint32_t flags; // 预留:压缩、类型等
uint32_t crc32; // 可选0 表示不校验
uint32_t reserved; // 对齐
// uint8_t payload[len] 紧跟其后
} replica_rec_hdr_t;
// shm 顶部元数据
typedef struct __attribute__((packed)) {
uint32_t magic;
uint32_t version;
uint64_t capacity; // data 区大小(字节)
uint64_t write_off; // producer 写指针0..capacity-1
uint64_t last_seq; // producer 最新 seq
uint8_t _pad[64]; // cacheline padding
// 后面紧跟 data[capacity]
} replica_shm_hdr_t;
typedef struct {
int fd;
size_t map_size;
replica_shm_hdr_t *hdr;
uint8_t *data;
} replica_shm_t;
// kvstore: 初始化create/open + mmap
int replica_shm_open(replica_shm_t *s, const char *name, size_t total_size, int create);
// kvstore: append 一条记录,返回 off相对 data 起始),用于 notify
// 单写者设计:无需锁。返回 0 成功,<0 失败(空间不足或参数错误)
int replica_shm_append(replica_shm_t *s, uint64_t seq, const void *buf, uint32_t len, uint32_t *out_off);
// replicator: 读取记录头(不移动游标),你也可以直接 memcpy payload
// off 是 data 内偏移
int replica_shm_peek(replica_shm_t *s, uint32_t off, replica_rec_hdr_t *out_hdr);
// 关闭
void replica_shm_close(replica_shm_t *s);
extern replica_shm_t g_rep_shm;
#endif