Documentation
¶
Index ¶
- func GenerateUniqueReportID(client redis_interface.RedisClient) (string, error)
- type EChartsHTMLGenerator
- type JSONFileReader
- type JSONFileWriter
- type MemoryMetricsCollector
- func (c *MemoryMetricsCollector) Collect()
- func (c *MemoryMetricsCollector) Flush() []*report.MetricsSeries
- func (c *MemoryMetricsCollector) Register(name string, fn report.MetricsValueFunc)
- func (c *MemoryMetricsCollector) RegisterWithLabels(name string, labels map[string]string, fn report.MetricsValueFunc)
- func (c *MemoryMetricsCollector) Reset()
- func (c *MemoryMetricsCollector) StartAutoCollect(interval time.Duration)
- func (c *MemoryMetricsCollector) StopAutoCollect()
- func (c *MemoryMetricsCollector) Unregister(name string)
- type MemoryPressureController
- func (p *MemoryPressureController) AddPending()
- func (p *MemoryPressureController) BaselineP50Ns() float64
- func (p *MemoryPressureController) CurrentLevel() report.PressureLevel
- func (p *MemoryPressureController) CurrentQPS() float64
- func (p *MemoryPressureController) DonePending()
- func (p *MemoryPressureController) EffectiveQPS() float64
- func (p *MemoryPressureController) FlushSnapshots() []report.PressureSnapshot
- func (p *MemoryPressureController) Phase() adaptivePhase
- func (p *MemoryPressureController) RecordLatency(d time.Duration)
- func (p *MemoryPressureController) SafeQPS() float64
- func (p *MemoryPressureController) SetTargetQPS(qps float64)
- func (p *MemoryPressureController) Snapshots() []report.PressureSnapshot
- func (p *MemoryPressureController) Start(interval time.Duration)
- func (p *MemoryPressureController) Stop()
- type MemoryTracer
- type RedisReportReader
- type RedisReportWriter
- func (w *RedisReportWriter) BarrierACK(reportID string, caseIndex int) error
- func (w *RedisReportWriter) Close() error
- func (w *RedisReportWriter) WriteMeta(meta *report.ReportMeta) error
- func (w *RedisReportWriter) WriteMetrics(reportID string, series []*report.MetricsSeries) error
- func (w *RedisReportWriter) WriteTracings(reportID string, records []*report.TracingRecord) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GenerateUniqueReportID ¶ added in v1.1.8
func GenerateUniqueReportID(client redis_interface.RedisClient) (string, error)
GenerateUniqueReportID 使用 Redis INCR 生成全局唯一的 ReportID。 格式:{timestamp}-{seq},其中 seq 由 Redis key "report:id:seq" 自增获得。
Types ¶
type EChartsHTMLGenerator ¶
type EChartsHTMLGenerator struct{}
EChartsHTMLGenerator 使用 ECharts CDN 生成独立 HTML 报告
func NewEChartsHTMLGenerator ¶
func NewEChartsHTMLGenerator() *EChartsHTMLGenerator
func (*EChartsHTMLGenerator) Generate ¶
func (g *EChartsHTMLGenerator) Generate(data *report.ReportData) ([]byte, error)
func (*EChartsHTMLGenerator) GenerateToFile ¶
func (g *EChartsHTMLGenerator) GenerateToFile(data *report.ReportData, outputPath string) error
type JSONFileReader ¶
type JSONFileReader struct {
// contains filtered or unexported fields
}
JSONFileReader 从 JSON 文件读取报表数据
func NewJSONFileReader ¶
func NewJSONFileReader(baseDir string) *JSONFileReader
func (*JSONFileReader) ListReports ¶
func (r *JSONFileReader) ListReports() ([]*report.ReportMeta, error)
func (*JSONFileReader) ReadReport ¶
func (r *JSONFileReader) ReadReport(reportID string) (*report.ReportData, error)
type JSONFileWriter ¶
type JSONFileWriter struct {
// contains filtered or unexported fields
}
JSONFileWriter 将报表数据以 JSON 文件形式写入磁盘 目录布局:
{baseDir}/{reportID}/meta.json
{baseDir}/{reportID}/tracings.json
{baseDir}/{reportID}/metrics.json
func NewJSONFileWriter ¶
func NewJSONFileWriter(baseDir string) *JSONFileWriter
func (*JSONFileWriter) Close ¶
func (w *JSONFileWriter) Close() error
func (*JSONFileWriter) WriteMeta ¶
func (w *JSONFileWriter) WriteMeta(meta *report.ReportMeta) error
func (*JSONFileWriter) WriteMetrics ¶
func (w *JSONFileWriter) WriteMetrics(reportID string, series []*report.MetricsSeries) error
func (*JSONFileWriter) WriteTracings ¶
func (w *JSONFileWriter) WriteTracings(reportID string, records []*report.TracingRecord) error
type MemoryMetricsCollector ¶
type MemoryMetricsCollector struct {
// contains filtered or unexported fields
}
MemoryMetricsCollector 是 MetricsCollector 接口的内存实现
func NewMemoryMetricsCollector ¶
func NewMemoryMetricsCollector() *MemoryMetricsCollector
func (*MemoryMetricsCollector) Collect ¶
func (c *MemoryMetricsCollector) Collect()
func (*MemoryMetricsCollector) Flush ¶
func (c *MemoryMetricsCollector) Flush() []*report.MetricsSeries
func (*MemoryMetricsCollector) Register ¶
func (c *MemoryMetricsCollector) Register(name string, fn report.MetricsValueFunc)
func (*MemoryMetricsCollector) RegisterWithLabels ¶
func (c *MemoryMetricsCollector) RegisterWithLabels(name string, labels map[string]string, fn report.MetricsValueFunc)
func (*MemoryMetricsCollector) Reset ¶
func (c *MemoryMetricsCollector) Reset()
func (*MemoryMetricsCollector) StartAutoCollect ¶
func (c *MemoryMetricsCollector) StartAutoCollect(interval time.Duration)
func (*MemoryMetricsCollector) StopAutoCollect ¶
func (c *MemoryMetricsCollector) StopAutoCollect()
func (*MemoryMetricsCollector) Unregister ¶
func (c *MemoryMetricsCollector) Unregister(name string)
type MemoryPressureController ¶
type MemoryPressureController struct {
// contains filtered or unexported fields
}
MemoryPressureController 实现 report.PressureController。
两种模式:
- 固定 QPS(targetQPS > 0):所有方法为空操作,不影响执行。
- 自适应(targetQPS <= 0):基于延迟反馈的 AIMD 拥塞控制,从低 QPS 探测到最优速率。
func NewMemoryPressureController ¶
func NewMemoryPressureController() *MemoryPressureController
func (*MemoryPressureController) AddPending ¶
func (p *MemoryPressureController) AddPending()
func (*MemoryPressureController) BaselineP50Ns ¶ added in v1.1.9
func (p *MemoryPressureController) BaselineP50Ns() float64
BaselineP50Ns 返回基线 P50(纳秒,供测试使用)。
func (*MemoryPressureController) CurrentLevel ¶
func (p *MemoryPressureController) CurrentLevel() report.PressureLevel
func (*MemoryPressureController) CurrentQPS ¶ added in v1.1.9
func (p *MemoryPressureController) CurrentQPS() float64
CurrentQPS 返回当前内部 QPS(供测试使用)。
func (*MemoryPressureController) DonePending ¶
func (p *MemoryPressureController) DonePending()
func (*MemoryPressureController) EffectiveQPS ¶
func (p *MemoryPressureController) EffectiveQPS() float64
func (*MemoryPressureController) FlushSnapshots ¶
func (p *MemoryPressureController) FlushSnapshots() []report.PressureSnapshot
func (*MemoryPressureController) Phase ¶ added in v1.1.9
func (p *MemoryPressureController) Phase() adaptivePhase
Phase 返回当前自适应阶段(供测试使用)。
func (*MemoryPressureController) RecordLatency ¶ added in v1.1.9
func (p *MemoryPressureController) RecordLatency(d time.Duration)
func (*MemoryPressureController) SafeQPS ¶ added in v1.1.9
func (p *MemoryPressureController) SafeQPS() float64
SafeQPS 返回上次确认安全的 QPS(供测试使用)。
func (*MemoryPressureController) SetTargetQPS ¶
func (p *MemoryPressureController) SetTargetQPS(qps float64)
func (*MemoryPressureController) Snapshots ¶
func (p *MemoryPressureController) Snapshots() []report.PressureSnapshot
func (*MemoryPressureController) Start ¶
func (p *MemoryPressureController) Start(interval time.Duration)
func (*MemoryPressureController) Stop ¶
func (p *MemoryPressureController) Stop()
type MemoryTracer ¶
type MemoryTracer struct {
// contains filtered or unexported fields
}
MemoryTracer 分片双缓冲区实现。 写入路径按 goroutine 哈希选择 shard,每个 shard 独立双缓冲,大幅降低锁竞争。 Flush 时切换所有 shard 的活跃 bank,然后合并各 shard 的旧 bank 数据。
func NewMemoryTracer ¶
func NewMemoryTracer() *MemoryTracer
func NewMemoryTracerWithShards ¶ added in v1.1.7
func NewMemoryTracerWithShards(shardCount int) *MemoryTracer
NewMemoryTracerWithShards 创建指定分片数的 MemoryTracer。shardCount 必须为 2 的幂。
func (*MemoryTracer) Flush ¶
func (t *MemoryTracer) Flush() []*report.TracingRecord
Flush 原子切换所有 shard 的活跃 bank,然后收割并合并各 shard 的旧 bank 数据。
func (*MemoryTracer) NewEntry ¶
func (t *MemoryTracer) NewEntry(name string) report.TracingEntry
func (*MemoryTracer) Reset ¶
func (t *MemoryTracer) Reset()
type RedisReportReader ¶
type RedisReportReader struct {
// contains filtered or unexported fields
}
RedisReportReader 从 Redis 读取报表数据(Master 端使用)。
func NewRedisReportReader ¶
func NewRedisReportReader(client redis_interface.RedisClient) *RedisReportReader
NewRedisReportReader 创建 Redis 读取器。
func (*RedisReportReader) BarrierCount ¶
func (r *RedisReportReader) BarrierCount(reportID string, caseIndex int) (int64, error)
BarrierCount 返回指定步骤中已经 ACK 的 agent 数量。
func (*RedisReportReader) ListReports ¶
func (r *RedisReportReader) ListReports() ([]*report.ReportMeta, error)
func (*RedisReportReader) ReadReport ¶
func (r *RedisReportReader) ReadReport(reportID string) (*report.ReportData, error)
type RedisReportWriter ¶
type RedisReportWriter struct {
// contains filtered or unexported fields
}
RedisReportWriter 通过 Redis 写入报表数据(Agent 端使用)。 Key 规范:
report:meta:{reportID} → String (JSON)
report:tracing:{reportID}:{agentID} → List (JSON 分块)
report:metrics:{reportID}:{agentID} → List (JSON 分块)
report:index → SortedSet (member=reportID, score=unix)
func NewRedisReportWriter ¶
func NewRedisReportWriter(client redis_interface.RedisClient, agentID string) *RedisReportWriter
NewRedisReportWriter 创建基于 Redis 的 ReportWriter。
func (*RedisReportWriter) BarrierACK ¶
func (w *RedisReportWriter) BarrierACK(reportID string, caseIndex int) error
BarrierACK 当前 agent 向 barrier 集合写入 ACK,表示该 case 步骤执行完成。
func (*RedisReportWriter) Close ¶
func (w *RedisReportWriter) Close() error
func (*RedisReportWriter) WriteMeta ¶
func (w *RedisReportWriter) WriteMeta(meta *report.ReportMeta) error
func (*RedisReportWriter) WriteMetrics ¶
func (w *RedisReportWriter) WriteMetrics(reportID string, series []*report.MetricsSeries) error
func (*RedisReportWriter) WriteTracings ¶
func (w *RedisReportWriter) WriteTracings(reportID string, records []*report.TracingRecord) error