Hi kuriakose, There was no cpc sampling job when my dtrace scripts (test_clk_rma.d or test_rma.d) running. I tried your test script, it didn't hook the function core_pcbe_sample. eg: some pieces from trace log.
2 4076 core_pcbe_overflow_bitmap:rdmsr 38E 17179869184(0x400000000) 2 4074 core_pcbe_overflow_bitmap:wrmsr 390 17179869184(0x400000000) 2 4072 core_pcbe_allstop:wrmsr 38F 0(0x0) 2 4072 core_pcbe_allstop:wrmsr 38F 0(0x0) 2 4073 core_pcbe_program:wrmsr 390 13835058085346934799(0xC00000070000000F) 2 4073 core_pcbe_program:wrmsr C1 281474976710555(0xFFFFFFFFFF9B) 2 4073 core_pcbe_program:wrmsr 186 5443599(0x53100F) 2 4073 core_pcbe_program:wrmsr 30B 281474975710655(0xFFFFFFF0BDBF) 2 4073 core_pcbe_program:wrmsr 38D 2816(0xB00) 2 4073 core_pcbe_program:wrmsr 38F 17179869185(0x400000001) Another question is I checked the codes of kcpc_hw_overflow_intr, one bitmap indicates which counters get overflow. And the function will not reset the counter when the related bit in bitmap is not set. bitmap = pcbe_ops->pcbe_overflow_bitmap(); if (dtrace_cpc_in_use) { /* Reset any counters that have overflowed */ for (i = 0; i < ctx->kc_set->ks_nreqs; i++) { req = ctx->kc_set->ks_req[i]; if (bitmap & (1 << req.kr_picnum)) { pcbe_ops->pcbe_configure(req.kr_picnum, req.kr_event, req.kr_preset, req.kr_flags, req.kr_nattrs, req.kr_attr, &(req.kr_config), (void *)ctx); } } pcbe_ops->pcbe_program(ctx); return (DDI_INTR_CLAIMED); } So it looks like the rma counter will not be reset to initial value when the clk counter overflows. Correct me if I'm wrong. Thanks Jin Yao -- This message posted from opensolaris.org _______________________________________________ perf-discuss mailing list perf-discuss@opensolaris.org