MindIE-Service推理服务化框架中默认已添加性能数据采集代码,当前步骤可选。
若需要自定义采集更多性能数据,可以参照如下示例代码对服务化框架中的性能采集代码进行修改,可以使用的接口请参见服务化性能数据采集API参考(C++)或服务化性能数据采集API参考(Python)。
下列示例使用C++接口。
Span类数据采集:
1 2 3 4 5 6 7 8 | // 记录执行开始结束时间 auto span = PROF(INFO, SpanStart("exec")); ... // 用户执行代码 PROF(span.SpanEnd()); // 也可以不调用SpanEnd函数,在析构时会自动调用SpanEnd结束采集 |
Event类数据采集:
1 2 | // 记录缓存交换事件 PROF(INFO, Event("cacheSwap")); |
Metric类数据采集:
1 2 3 4 5 6 | // 普通数据采集:利用率 50% PROF(INFO, Metric("usage", 0.5).Launch()); // 数据的增量采集:请求数量 + 1 PROF(INFO, MetricInc("reqSize", 1).Launch()); // 定义采集数据的范围(默认是全局):第3个队列的当前大小是14 PROF(INFO, Metric("queueSize", 14).MetricScope("queue", 3).Launch()); |
Link类数据采集:
1 2 3 | // 关联不同的资源,实际应用时不同模块对同一个请求使用不同的编号,将两个系统的编号关联起来 // reqID_SYS1 和 reqID_SYS2 对应不同的系统编号 PROF(INFO, Link("reqID_SYS1", "reqID_SYS2")); |
属性数据采集:
1 2 3 4 5 6 | // 以上调用,都可以在结束前,在中间使用链式添加属性 PROF(INFO, Attr("attr", "attrValue").Attr("numAttr", 66.6).Event("test")); // 属性可以自己定义采集级别 PROF(INFO, Attr<msServiceProfiler::VERBOSE>("verboseAttr", 1000).Event("test")); // 其他属性如:Domain(域)、Res(资源,一般是请求ID)等也可以使用链式进行添加 PROF(INFO, Domain("http").Res(reqId).Attr("attr", "attrValue").Event("test")); |