Sounds encouraging. I would suggest going with option 2. Otherwise, very few people will bother learning the new, higher performance interface.
On Mon, Feb 8, 2021 at 5:46 PM Walt Karas <wka...@verizonmedia.com.invalid> wrote: > > https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_apache_trafficserver_pull_7452&d=DwIBaQ&c=sWW_bEwW_mLyN3Kx2v57Q8e-CRbmiT9yOhqES_g_wVY&r=GAqM_xZpxNbVqsR-aGvQBjOG3d33Y2-i4ynL-JkEouY&m=T3uKuRdXuJZJ3DyMoQBcYkbjgx3A0sYIMfodLs6GqEo&s=bHquMyBVeX-FU8jZM7jR_NnfBCUBghgDxLgfL9ZvzVU&e= > > This PR changes TS API. It introduces this new type: > > typedef struct TSFDbgCtl_s { > char volatile on; // Flag > char const *tag; > } TSFDbgCtl; > > And this function: > > tsapi TSFDbgCtl const *TSFDbgCtlCreate(char const *tag); > > And this new printf-like macro: > > #define TSFDbg(ctlp, ...) > > Where the first parameter is a pointer returned by TSFDbgCtlCreate(), the > second a printf format string, and the rest the parameters referenced the > format string. > > In my performance test, enabling the new type of debug output resulted in a > 10% reduction in requests per second handled, versus a 95% reduction due to > enabling the old type of debug output. (See > https://urldefense.proofpoint.com/v2/url?u=https-3A__gist.github.com_ywkaras_4b0386341a4a6ce0afacaf46dcce79d6&d=DwIBaQ&c=sWW_bEwW_mLyN3Kx2v57Q8e-CRbmiT9yOhqES_g_wVY&r=GAqM_xZpxNbVqsR-aGvQBjOG3d33Y2-i4ynL-JkEouY&m=T3uKuRdXuJZJ3DyMoQBcYkbjgx3A0sYIMfodLs6GqEo&s=UqdDEzH8fQFsDoVAxnY0X6060A6Go_eBpyvilYn90LI&e= > ) > > If we decide to proceed with this, I think we have two options: > > > 1. Proceed with the approach where enabling low-overhead debug output > will only work for Debug()/TSFDbg calls that use a DbgCtl/TSDbgCtl instance > rather than a simple tag string. This would include adding doc changes and > Au testing. > 2. Switch to an approach similar to what I used for testing. Where > Debug() calls and is_debug_tag_set() will (each) generate a hidden instance > of DbgCtl. I think I can also make TSDebug() generate a hidden pointer to > TSFDbgCt.