P7 是一个开源的跨平台库,专门设计用于从应用程序中高速发送遥测和追踪数据,同时尽可能少地占用 CPU 和内存资源。以下是 P7 库的一些关键特点:
多种语言支持:支持 C++、C、C# 和 Python。
跨平台:适用于 Linux (x86/x64) 和 Windows (x86/x64)。
高性能:库和服务器都经过设计和优化,以适应高负载情况。例如,在 Intel i7-870 CPU 上,网络传输可达每秒约 570 万条追踪数据,二进制文件写入可达每秒约 1000 万条。
小内存占用:可选的,最小为 16KB,适用于嵌入式设备。
线程安全:可以在多线程环境中安全使用。
Unicode 支持:支持 UTF-8、UTF-32(Linux)、UTF-16(Windows)。
无外部依赖:不依赖外部库。
高精度时间戳:时间戳的分辨率取决于硬件高性能计数器,通常是 100 纳秒。
多种接收器(sink)支持:包括网络(Baical 服务器)、二进制文件、文本文件、控制台、系统日志(Syslog)、自动选择(如果 Baical 服务器可达则发送到服务器,否则发送到文件)和 Null(丢弃所有数据)。
文件轮转设置:可以根据大小或时间进行文件轮转。
文件最大数量设置:自动删除旧文件。
远程管理:通过 Baical 服务器进行远程管理,例如设置模块的详细级别、启用/禁用遥测计数器。
共享内存使用:创建一次追踪和遥测通道,然后可以在任何进程模块或类中访问,无需传递句柄。
崩溃处理:在用户定义的崩溃处理程序中,提供特殊函数以在崩溃时刷新所有 P7 对象的 P7 缓冲区。
二进制格式的追踪和遥测文件:由于速度要求,二进制文件比原始文本更紧凑,提供文本导出功能。
命令行界面:除了应用程序参数外,还可以用于配置。
大小端支持。
支持多种 CPU 架构:包括 Intel/AMD、ARM、MCS、PowerPC、Baikal T1 等。
支持多种编译器:如 GCC、VC++、Clang。
P7 库适用于需要高性能数据记录和分析的应用程序,尤其是在嵌入式系统和需要实时监控和调试的场景中。它通过优化数据传输和存储,使得开发者能够以最小的性能开销捕获和分析大量数据