ebpf的主从同步实现,QPS测试与内存池QPS测试。
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
|
||||
mp_pool_t global_mempool;
|
||||
|
||||
static atomic_int g_memory_mode = ATOMIC_VAR_INIT(MEMLEAK_DETECT_OFF);
|
||||
static atomic_int g_memory_mode = ATOMIC_VAR_INIT(ALLOC_OTHER);
|
||||
static atomic_int g_memleak_detect_mode = ATOMIC_VAR_INIT(MEMLEAK_DETECT_OFF);
|
||||
|
||||
// 设置内存池类型
|
||||
@@ -36,7 +36,7 @@ MemLeakDetectMode kvs_get_memleak_detect(void) {
|
||||
|
||||
void *kvs_malloc_impl(size_t size){
|
||||
|
||||
switch (atomic_load(&g_memleak_detect_mode)){
|
||||
switch (atomic_load(&g_memory_mode)){
|
||||
case ALLOC_MALLOC:
|
||||
return malloc(size);
|
||||
case ALLOC_MYPOOL:
|
||||
@@ -51,7 +51,7 @@ void *kvs_malloc_impl(size_t size){
|
||||
}
|
||||
|
||||
void kvs_free_impl(void *ptr) {
|
||||
switch (atomic_load(&g_memleak_detect_mode)){
|
||||
switch (atomic_load(&g_memory_mode)){
|
||||
case ALLOC_MALLOC:
|
||||
free(ptr);
|
||||
break;
|
||||
@@ -75,20 +75,20 @@ void kvs_free_impl(void *ptr) {
|
||||
void *nMalloc(size_t size, const char * filename, const char *func, int line){
|
||||
void *ptr = kvs_malloc_impl(size);
|
||||
|
||||
if(atomic_load(&g_memleak_detect_mode) == MEMLEAK_DETECT_ON) {
|
||||
char buff[128];
|
||||
snprintf(buff, 128, "./mem_leak/%p.mem", ptr);
|
||||
FILE* fp = fopen(buff, "w");
|
||||
if(!fp){
|
||||
kvs_free(ptr);
|
||||
return NULL;
|
||||
}
|
||||
// if(atomic_load(&g_memleak_detect_mode) == MEMLEAK_DETECT_ON) {
|
||||
// char buff[128];
|
||||
// snprintf(buff, 128, "./mem_leak/%p.mem", ptr);
|
||||
// FILE* fp = fopen(buff, "w");
|
||||
// if(!fp){
|
||||
// kvs_free(ptr);
|
||||
// return NULL;
|
||||
// }
|
||||
|
||||
fprintf(fp, "[+] [%s:%d:%s] [%p:%ld]\n", filename, line, func, ptr, size);
|
||||
fflush(fp);
|
||||
fclose(fp);
|
||||
// fprintf(fp, "[+] [%s:%d:%s] [%p:%ld]\n", filename, line, func, ptr, size);
|
||||
// fflush(fp);
|
||||
// fclose(fp);
|
||||
|
||||
}
|
||||
// }
|
||||
return ptr;
|
||||
}
|
||||
|
||||
@@ -97,15 +97,15 @@ void nFree(void *ptr, const char * filename, const char *func, int line){
|
||||
return ;
|
||||
}
|
||||
|
||||
if(atomic_load(&g_memleak_detect_mode) == MEMLEAK_DETECT_ON) {
|
||||
char buff[128];
|
||||
snprintf(buff, 128, "./mem_leak/%p.mem", ptr);
|
||||
// if(atomic_load(&g_memleak_detect_mode) == MEMLEAK_DETECT_ON) {
|
||||
// char buff[128];
|
||||
// snprintf(buff, 128, "./mem_leak/%p.mem", ptr);
|
||||
|
||||
if(unlink(buff) < 0) {
|
||||
return ;
|
||||
}
|
||||
// if(unlink(buff) < 0) {
|
||||
// return ;
|
||||
// }
|
||||
|
||||
}
|
||||
// }
|
||||
|
||||
kvs_free_impl(ptr);
|
||||
}
|
||||
Reference in New Issue
Block a user