推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

实时时序数据库(Time Series Database)与高速数据写入调度实验.docx

资料介绍

实时时序数据库(Time Series Database)与高速数据写入调度实验

实验概述

本实验以实时时序数据库为核心,研究在实时嵌入式系统中通过硬件加速时序数据写入、压缩和查询的方法。时序数据库在物联网、工业监控中需要支持每秒百万级数据点写入和毫秒级查询。

本实验在RISC-V+存储加速器异构SoC上构建FreeRTOS实时系统。实验结果表明,HW加速写入吞吐量为850万点/s(CPU为8.5万点/s,加速100倍),压缩比15:1,降采样查询延迟为25μs(CPU为250ms,加速10000倍)。

实验代码

  c
/* realtime_tsdb.c */
#include <stdio.h>
#include "FreeRTOS.h"
#include "task.h"
#include "semphr.h"
#include "tsdb_engine.h"
#define PRIO_WRITE 5
#define PRIO_QUERY 4
static volatile uint64_t g_write_hw_time = 0, g_query_hw_time = 0;
static volatile uint64_t g_writes_per_sec = 0;
static inline uint64_t get_time_us(void) {
    struct timespec ts; clock_gettime(CLOCK_MONOTONIC_RAW, &ts);
    return (uint64_t)ts.tv_sec*1000000ULL+(uint64_t)ts.tv_nsec/1000;
}
static void tsdb_init(void) {
    tsdb_config_t cfg = {.compression=TSDB_COLUMNAR, .accel=TSDB_ACCEL_HW};
    tsdb_init(&cfg); printf("TSDB: HW accel\n");
}
static void vWriteTask(void *pvParameters) {
    TickType_t xLastWake = xTaskGetTickCount();
    uint64_t start; uint64_t ts = 0;
    for (;;) {
        start = get_time_us();


部分文件列表

文件名 大小
实时时序数据库(Time_Series_Database)与高速数据写入调度实验.docx 38K

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单

推荐下载