Lines Matching +full:mem +full:- +full:io
1 /*-
2 * Copyright (c) 2014-2015 Netflix, Inc.
89 strcpy(arg1, "-c"); in my_popen()
97 case -1: /* Error. */ in my_popen()
105 /* Close out un-used sides */ in my_popen()
144 * pclose --
145 * Pclose returns -1 if stream is not associated with a `popened' command,
149 my_pclose(FILE *io, pid_t the_pid) in my_pclose() argument
157 (void)fclose(io); in my_pclose()
162 } while (pid == -1 && errno == EINTR); in my_pclose()
291 …printf(" MACHINE_CLEAR.COUNT) * ((UOPS_ISSUED.ANY - UOPS_RETIRED.RETIRE_SLOTS + 4 * INT_MI… in explain_name_ib()
310 printf("Examine (ICACHE.IFETCH_STALL - ITLB_MISSES.WALK_DURATION)/ CPU_CLK_UNHALTED.THREAD_P\n"); in explain_name_ib()
457 if (strncmp(at->counter_name, name, len) == 0) { in find_counter()
460 at = at->next_cpu; in find_counter()
466 printf("- %s\n", at->counter_name); in find_counter()
467 at = at->next_cpu; in find_counter()
469 exit(-1); in find_counter()
475 /* 1 - PARTIAL_RAT_STALLS.SLOW_LEA_WINDOW/CPU_CLK_UNHALTED.THREAD_P (thresh > .05)*/ in allocstall1()
482 if (pos != -1) { in allocstall1()
483 par = partial->vals[pos] * 1.0; in allocstall1()
484 un = unhalt->vals[pos] * 1.0; in allocstall1()
486 par = partial->sum * 1.0; in allocstall1()
487 un = unhalt->sum * 1.0; in allocstall1()
497 /* 2 - PARTIAL_RAT_STALLS.FLAGS_MERGE_UOP_CYCLES/CPU_CLK_UNHALTED.THREAD_P (thresh >.05) */ in allocstall2()
504 if (pos != -1) { in allocstall2()
505 par = partial->vals[pos] * 1.0; in allocstall2()
506 un = unhalt->vals[pos] * 1.0; in allocstall2()
508 par = partial->sum * 1.0; in allocstall2()
509 un = unhalt->sum * 1.0; in allocstall2()
522 /* 3 - (20 * BR_MISP_RETIRED.ALL_BRANCHES)/CPU_CLK_UNHALTED.THREAD_P (thresh >= .2) */ in br_mispredict()
528 if (pos != -1) { in br_mispredict()
529 br = brctr->vals[pos] * 1.0; in br_mispredict()
530 un = unhalt->vals[pos] * 1.0; in br_mispredict()
532 br = brctr->sum * 1.0; in br_mispredict()
533 un = unhalt->sum * 1.0; in br_mispredict()
549 …-s CPU_CLK_UNHALTED.THREAD_P -s BR_MISP_RETIRED.ALL_BRANCHES -s MACHINE_CLEARS.MEMORY_ORDERING -s … in br_mispredictib()
555 …* ((UOPS_ISSUED.ANY - UOPS_RETIRED.RETIRE_SLOTS + 4 * INT_MISC.RECOVERY_CYCLES) / (4 * CPU_CLK_… in br_mispredictib()
569 if (pos != -1) { in br_mispredictib()
570 br = brctr->vals[pos] * 1.0; in br_mispredictib()
571 cl = clear->vals[pos] * 1.0; in br_mispredictib()
572 cl2 = clear2->vals[pos] * 1.0; in br_mispredictib()
573 cl3 = clear3->vals[pos] * 1.0; in br_mispredictib()
574 uo = uops->vals[pos] * 1.0; in br_mispredictib()
575 re = recv->vals[pos] * 1.0; in br_mispredictib()
576 is = iss->vals[pos] * 1.0; in br_mispredictib()
577 un = unhalt->vals[pos] * 1.0; in br_mispredictib()
579 br = brctr->sum * 1.0; in br_mispredictib()
580 cl = clear->sum * 1.0; in br_mispredictib()
581 cl2 = clear2->sum * 1.0; in br_mispredictib()
582 cl3 = clear3->sum * 1.0; in br_mispredictib()
583 uo = uops->sum * 1.0; in br_mispredictib()
584 re = recv->sum * 1.0; in br_mispredictib()
585 is = iss->sum * 1.0; in br_mispredictib()
586 un = unhalt->sum * 1.0; in br_mispredictib()
588 res = (br/(br + cl + cl2 + cl3) * ((is - uo + con * re) / (con * un))); in br_mispredictib()
615 if (pos != -1) { in br_mispredict_broad()
616 un = unhalt->vals[pos] * 1.0; in br_mispredict_broad()
617 br = brctr->vals[pos] * 1.0; in br_mispredict_broad()
618 cl = clear->vals[pos] * 1.0; in br_mispredict_broad()
619 uo = uops->vals[pos] * 1.0; in br_mispredict_broad()
620 uo_r = uops_ret->vals[pos] * 1.0; in br_mispredict_broad()
621 re = recv->vals[pos] * 1.0; in br_mispredict_broad()
623 un = unhalt->sum * 1.0; in br_mispredict_broad()
624 br = brctr->sum * 1.0; in br_mispredict_broad()
625 cl = clear->sum * 1.0; in br_mispredict_broad()
626 uo = uops->sum * 1.0; in br_mispredict_broad()
627 uo_r = uops_ret->sum * 1.0; in br_mispredict_broad()
628 re = recv->sum * 1.0; in br_mispredict_broad()
630 res = br / (br + cl) * (uo - uo_r + con * re) / (un * con); in br_mispredict_broad()
639 struct counters *mem; in splitloadib() local
645 …* "pmcstat -s CPU_CLK_UNHALTED.THREAD_P -s L1D_PEND_MISS.PENDING -s MEM_LOAD_UOPS_RETIRED.L1_MISS … in splitloadib()
649 mem = find_counter(cpu, "MEM_LOAD_UOPS_RETIRED.L1_MISS"); in splitloadib()
652 if (pos != -1) { in splitloadib()
653 memd = mem->vals[pos] * 1.0; in splitloadib()
654 l1 = l1d->vals[pos] * 1.0; in splitloadib()
655 ldb = ldblock->vals[pos] * 1.0; in splitloadib()
656 un = unhalt->vals[pos] * 1.0; in splitloadib()
658 memd = mem->sum * 1.0; in splitloadib()
659 l1 = l1d->sum * 1.0; in splitloadib()
660 ldb = ldblock->sum * 1.0; in splitloadib()
661 un = unhalt->sum * 1.0; in splitloadib()
673 struct counters *mem; in splitload() local
676 /* 4 - (MEM_UOPS_RETIRED.SPLIT_LOADS * 5) / CPU_CLK_UNHALTED.THREAD_P (thresh >= .1)*/ in splitload()
680 mem = find_counter(cpu, "MEM_UOPS_RETIRED.SPLIT_LOADS"); in splitload()
681 if (pos != -1) { in splitload()
682 memd = mem->vals[pos] * 1.0; in splitload()
683 un = unhalt->vals[pos] * 1.0; in splitload()
685 memd = mem->sum * 1.0; in splitload()
686 un = unhalt->sum * 1.0; in splitload()
698 struct counters *mem; in splitload_sb() local
701 /* 4 - (MEM_UOP_RETIRED.SPLIT_LOADS * 5) / CPU_CLK_UNHALTED.THREAD_P (thresh >= .1)*/ in splitload_sb()
705 mem = find_counter(cpu, "MEM_UOP_RETIRED.SPLIT_LOADS"); in splitload_sb()
706 if (pos != -1) { in splitload_sb()
707 memd = mem->vals[pos] * 1.0; in splitload_sb()
708 un = unhalt->vals[pos] * 1.0; in splitload_sb()
710 memd = mem->sum * 1.0; in splitload_sb()
711 un = unhalt->sum * 1.0; in splitload_sb()
722 /* 5 - MEM_UOP_RETIRED.SPLIT_STORES / MEM_UOP_RETIRED.ALL_STORES (thresh > 0.01) */ in splitstore_sb()
729 if (pos != -1) { in splitstore_sb()
730 memsplit = mem_split->vals[pos] * 1.0; in splitstore_sb()
731 memstore = mem_stores->vals[pos] * 1.0; in splitstore_sb()
733 memsplit = mem_split->sum * 1.0; in splitstore_sb()
734 memstore = mem_stores->sum * 1.0; in splitstore_sb()
746 /* 5 - MEM_UOPS_RETIRED.SPLIT_STORES / MEM_UOPS_RETIRED.ALL_STORES (thresh > 0.01) */ in splitstore()
753 if (pos != -1) { in splitstore()
754 memsplit = mem_split->vals[pos] * 1.0; in splitstore()
755 memstore = mem_stores->vals[pos] * 1.0; in splitstore()
757 memsplit = mem_split->sum * 1.0; in splitstore()
758 memstore = mem_stores->sum * 1.0; in splitstore()
769 …/* 6 - (MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HITM * 60) / CPU_CLK_UNHALTED.THREAD_P (thresh >.05) … in contested()
771 struct counters *mem; in contested() local
777 mem = find_counter(cpu, "MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HITM"); in contested()
778 if (pos != -1) { in contested()
779 memd = mem->vals[pos] * 1.0; in contested()
780 un = unhalt->vals[pos] * 1.0; in contested()
782 memd = mem->sum * 1.0; in contested()
783 un = unhalt->sum * 1.0; in contested()
793 …/* 6 - (MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HITM * 84) / CPU_CLK_UNHALTED.THREAD_P (thresh >.05) … in contested_has()
795 struct counters *mem; in contested_has() local
801 mem = find_counter(cpu, "MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HITM"); in contested_has()
802 if (pos != -1) { in contested_has()
803 memd = mem->vals[pos] * 1.0; in contested_has()
804 un = unhalt->vals[pos] * 1.0; in contested_has()
806 memd = mem->sum * 1.0; in contested_has()
807 un = unhalt->sum * 1.0; in contested_has()
817 …/* 6 - (MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HITM * 84) / CPU_CLK_UNHALTED.THREAD_P (thresh >.05) … in contestedbroad()
819 struct counters *mem; in contestedbroad() local
826 mem = find_counter(cpu, "MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HITM"); in contestedbroad()
829 if (pos != -1) { in contestedbroad()
830 memd = mem->vals[pos] * 1.0; in contestedbroad()
831 memtoo = mem2->vals[pos] * 1.0; in contestedbroad()
832 un = unhalt->vals[pos] * 1.0; in contestedbroad()
834 memd = mem->sum * 1.0; in contestedbroad()
835 memtoo = mem2->sum * 1.0; in contestedbroad()
836 un = unhalt->sum * 1.0; in contestedbroad()
847 /* 7 - (LD_BLOCKS_STORE_FORWARD * 13) / CPU_CLK_UNHALTED.THREAD_P (thresh >= .05)*/ in blockstoreforward()
856 if (pos != -1) { in blockstoreforward()
857 ld = ldb->vals[pos] * 1.0; in blockstoreforward()
858 un = unhalt->vals[pos] * 1.0; in blockstoreforward()
860 ld = ldb->sum * 1.0; in blockstoreforward()
861 un = unhalt->sum * 1.0; in blockstoreforward()
872 * 8 - ((MEM_LOAD_RETIRED.L3_HIT * 26) + (MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HIT * 43) + in cache2()
888 if (pos != -1) { in cache2()
889 me_1 = mem1->vals[pos] * 1.0; in cache2()
890 me_2 = mem2->vals[pos] * 1.0; in cache2()
891 me_3 = mem3->vals[pos] * 1.0; in cache2()
892 un = unhalt->vals[pos] * 1.0; in cache2()
894 me_1 = mem1->sum * 1.0; in cache2()
895 me_2 = mem2->sum * 1.0; in cache2()
896 me_3 = mem3->sum * 1.0; in cache2()
897 un = unhalt->sum * 1.0; in cache2()
911 struct counters *mem; in datasharing() local
917 mem = find_counter(cpu, "MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HIT"); in datasharing()
918 if (pos != -1) { in datasharing()
919 me = mem->vals[pos] * 1.0; in datasharing()
920 un = unhalt->vals[pos] * 1.0; in datasharing()
922 me = mem->sum * 1.0; in datasharing()
923 un = unhalt->sum * 1.0; in datasharing()
939 struct counters *mem; in datasharing_has() local
945 mem = find_counter(cpu, "MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HIT"); in datasharing_has()
946 if (pos != -1) { in datasharing_has()
947 me = mem->vals[pos] * 1.0; in datasharing_has()
948 un = unhalt->vals[pos] * 1.0; in datasharing_has()
950 me = mem->sum * 1.0; in datasharing_has()
951 un = unhalt->sum * 1.0; in datasharing_has()
967 struct counters *mem; in cache2ib() local
973 mem = find_counter(cpu, "MEM_LOAD_UOPS_RETIRED.LLC_HIT"); in cache2ib()
974 if (pos != -1) { in cache2ib()
975 me = mem->vals[pos] * 1.0; in cache2ib()
976 un = unhalt->vals[pos] * 1.0; in cache2ib()
978 me = mem->sum * 1.0; in cache2ib()
979 un = unhalt->sum * 1.0; in cache2ib()
1007 if (pos != -1) { in cache2has()
1008 me1 = mem1->vals[pos] * 1.0; in cache2has()
1009 me2 = mem2->vals[pos] * 1.0; in cache2has()
1010 me3 = mem3->vals[pos] * 1.0; in cache2has()
1011 un = unhalt->vals[pos] * 1.0; in cache2has()
1013 me1 = mem1->sum * 1.0; in cache2has()
1014 me2 = mem2->sum * 1.0; in cache2has()
1015 me3 = mem3->sum * 1.0; in cache2has()
1016 un = unhalt->sum * 1.0; in cache2has()
1031 struct counters *mem; in cache2broad() local
1037 mem = find_counter(cpu, "MEM_LOAD_UOPS_RETIRED.L3_HIT"); in cache2broad()
1038 if (pos != -1) { in cache2broad()
1039 me = mem->vals[pos] * 1.0; in cache2broad()
1040 un = unhalt->vals[pos] * 1.0; in cache2broad()
1042 me = mem->sum * 1.0; in cache2broad()
1043 un = unhalt->sum * 1.0; in cache2broad()
1054 /* 9 - (MEM_LOAD_UOPS_MISC_RETIRED.LLC_MISS * 180) / CPU_CLK_UNHALTED.THREAD_P (thresh >= .2) */ in cache1()
1056 struct counters *mem; in cache1() local
1062 mem = find_counter(cpu, "MEM_LOAD_UOPS_MISC_RETIRED.LLC_MISS"); in cache1()
1063 if (pos != -1) { in cache1()
1064 me = mem->vals[pos] * 1.0; in cache1()
1065 un = unhalt->vals[pos] * 1.0; in cache1()
1067 me = mem->sum * 1.0; in cache1()
1068 un = unhalt->sum * 1.0; in cache1()
1078 …/* 9 - (MEM_LOAD_UOPS_L3_MISS_RETIRED.LCOAL_DRAM * 180) / CPU_CLK_UNHALTED.THREAD_P (thresh >= .… in cache1ib()
1080 struct counters *mem; in cache1ib() local
1086 mem = find_counter(cpu, "MEM_LOAD_UOPS_LLC_MISS_RETIRED.LOCAL_DRAM"); in cache1ib()
1087 if (pos != -1) { in cache1ib()
1088 me = mem->vals[pos] * 1.0; in cache1ib()
1089 un = unhalt->vals[pos] * 1.0; in cache1ib()
1091 me = mem->sum * 1.0; in cache1ib()
1092 un = unhalt->sum * 1.0; in cache1ib()
1103 …/* 9 - (MEM_LOAD_UOPS_L3_MISS_RETIRED.LCOAL_DRAM * 180) / CPU_CLK_UNHALTED.THREAD_P (thresh >= .… in cache1broad()
1105 struct counters *mem; in cache1broad() local
1111 mem = find_counter(cpu, "MEM_LOAD_UOPS_RETIRED.L3_MISS"); in cache1broad()
1112 if (pos != -1) { in cache1broad()
1113 me = mem->vals[pos] * 1.0; in cache1broad()
1114 un = unhalt->vals[pos] * 1.0; in cache1broad()
1116 me = mem->sum * 1.0; in cache1broad()
1117 un = unhalt->sum * 1.0; in cache1broad()
1128 …/* 10 - ((DTLB_LOAD_MISSES.STLB_HIT * 7) + DTLB_LOAD_MISSES.WALK_DURATION) / CPU_CLK_UNHALTED.THR… in dtlb_missload()
1138 if (pos != -1) { in dtlb_missload()
1139 d1 = dtlb_m->vals[pos] * 1.0; in dtlb_missload()
1140 d2 = dtlb_d->vals[pos] * 1.0; in dtlb_missload()
1141 un = unhalt->vals[pos] * 1.0; in dtlb_missload()
1143 d1 = dtlb_m->sum * 1.0; in dtlb_missload()
1144 d2 = dtlb_d->sum * 1.0; in dtlb_missload()
1145 un = unhalt->sum * 1.0; in dtlb_missload()
1168 if (pos != -1) { in dtlb_missstore()
1169 d1 = dtsb_m->vals[pos] * 1.0; in dtlb_missstore()
1170 d2 = dtsb_d->vals[pos] * 1.0; in dtlb_missstore()
1171 un = unhalt->vals[pos] * 1.0; in dtlb_missstore()
1173 d1 = dtsb_m->sum * 1.0; in dtlb_missstore()
1174 d2 = dtsb_d->sum * 1.0; in dtlb_missstore()
1175 un = unhalt->sum * 1.0; in dtlb_missstore()
1193 if (pos != -1) { in itlb_miss()
1194 d1 = itlb->vals[pos] * 1.0; in itlb_miss()
1195 un = unhalt->vals[pos] * 1.0; in itlb_miss()
1197 d1 = itlb->sum * 1.0; in itlb_miss()
1198 un = unhalt->sum * 1.0; in itlb_miss()
1219 if (pos != -1) { in itlb_miss_broad()
1220 d1 = itlb->vals[pos] * 1.0; in itlb_miss_broad()
1221 un = unhalt->vals[pos] * 1.0; in itlb_miss_broad()
1222 k = four_k->vals[pos] * 1.0; in itlb_miss_broad()
1224 d1 = itlb->sum * 1.0; in itlb_miss_broad()
1225 un = unhalt->sum * 1.0; in itlb_miss_broad()
1226 k = four_k->sum * 1.0; in itlb_miss_broad()
1237 /* (ICACHE.IFETCH_STALL - ITLB_MISSES.WALK_DURATION) / CPU_CLK_UNHALTED.THREAD_P IB */ in icache_miss()
1247 if (pos != -1) { in icache_miss()
1248 d1 = itlb->vals[pos] * 1.0; in icache_miss()
1249 ic = icache->vals[pos] * 1.0; in icache_miss()
1250 un = unhalt->vals[pos] * 1.0; in icache_miss()
1252 d1 = itlb->sum * 1.0; in icache_miss()
1253 ic = icache->sum * 1.0; in icache_miss()
1254 un = unhalt->sum * 1.0; in icache_miss()
1256 res = (ic-d1)/un; in icache_miss()
1275 if (pos != -1) { in icache_miss_has()
1276 ic = icache->vals[pos] * 1.0; in icache_miss_has()
1277 un = unhalt->vals[pos] * 1.0; in icache_miss_has()
1279 ic = icache->sum * 1.0; in icache_miss_has()
1280 un = unhalt->sum * 1.0; in icache_miss_has()
1299 if (pos != -1) { in lcp_stall()
1300 d1 = ild->vals[pos] * 1.0; in lcp_stall()
1301 un = unhalt->vals[pos] * 1.0; in lcp_stall()
1303 d1 = ild->sum * 1.0; in lcp_stall()
1304 un = unhalt->sum * 1.0; in lcp_stall()
1316 /* 12 - IDQ_UOPS_NOT_DELIVERED.CORE / (CPU_CLK_UNHALTED.THREAD_P * 4) (thresh >= .15) */ in frontendstall()
1325 if (pos != -1) { in frontendstall()
1326 id = idq->vals[pos] * 1.0; in frontendstall()
1327 un = unhalt->vals[pos] * 1.0; in frontendstall()
1329 id = idq->sum * 1.0; in frontendstall()
1330 un = unhalt->sum * 1.0; in frontendstall()
1340 /* 13 - ((MACHINE_CLEARS.MEMORY_ORDERING + MACHINE_CLEARS.SMC + MACHINE_CLEARS.MASKMOV ) * 100 ) in clears()
1354 if (pos != -1) { in clears()
1355 cl1 = clr1->vals[pos] * 1.0; in clears()
1356 cl2 = clr2->vals[pos] * 1.0; in clears()
1357 cl3 = clr3->vals[pos] * 1.0; in clears()
1358 un = unhalt->vals[pos] * 1.0; in clears()
1360 cl1 = clr1->sum * 1.0; in clears()
1361 cl2 = clr2->sum * 1.0; in clears()
1362 cl3 = clr3->sum * 1.0; in clears()
1363 un = unhalt->sum * 1.0; in clears()
1386 if (pos != -1) { in clears_broad()
1387 cl1 = clr1->vals[pos] * 1.0; in clears_broad()
1388 cl2 = clr2->vals[pos] * 1.0; in clears_broad()
1389 cl3 = clr3->vals[pos] * 1.0; in clears_broad()
1390 cy = cyc->vals[pos] * 1.0; in clears_broad()
1391 un = unhalt->vals[pos] * 1.0; in clears_broad()
1393 cl1 = clr1->sum * 1.0; in clears_broad()
1394 cl2 = clr2->sum * 1.0; in clears_broad()
1395 cl3 = clr3->sum * 1.0; in clears_broad()
1396 cy = cyc->sum * 1.0; in clears_broad()
1397 un = unhalt->sum * 1.0; in clears_broad()
1412 /* 14 - IDQ.MS_CYCLES / CPU_CLK_UNHALTED.THREAD_P (thresh > .05) */ in microassist()
1421 if (pos != -1) { in microassist()
1422 id = idq->vals[pos] * 1.0; in microassist()
1423 un = unhalt->vals[pos] * 1.0; in microassist()
1425 id = idq->sum * 1.0; in microassist()
1426 un = unhalt->sum * 1.0; in microassist()
1449 if (pos != -1) { in microassist_broad()
1450 id = idq->vals[pos] * 1.0; in microassist_broad()
1451 un = unhalt->vals[pos] * 1.0; in microassist_broad()
1452 uoi = uopiss->vals[pos] * 1.0; in microassist_broad()
1453 uor = uopret->vals[pos] * 1.0; in microassist_broad()
1455 id = idq->sum * 1.0; in microassist_broad()
1456 un = unhalt->sum * 1.0; in microassist_broad()
1457 uoi = uopiss->sum * 1.0; in microassist_broad()
1458 uor = uopret->sum * 1.0; in microassist_broad()
1469 /* 15 - (LD_BLOCKS_PARTIAL.ADDRESS_ALIAS * 5) / CPU_CLK_UNHALTED.THREAD_P (thresh > .1) */ in aliasing()
1478 if (pos != -1) { in aliasing()
1479 lds = ld->vals[pos] * 1.0; in aliasing()
1480 un = unhalt->vals[pos] * 1.0; in aliasing()
1482 lds = ld->sum * 1.0; in aliasing()
1483 un = unhalt->sum * 1.0; in aliasing()
1493 /* 15 - (LD_BLOCKS_PARTIAL.ADDRESS_ALIAS * 5) / CPU_CLK_UNHALTED.THREAD_P (thresh > .1) */ in aliasing_broad()
1502 if (pos != -1) { in aliasing_broad()
1503 lds = ld->vals[pos] * 1.0; in aliasing_broad()
1504 un = unhalt->vals[pos] * 1.0; in aliasing_broad()
1506 lds = ld->sum * 1.0; in aliasing_broad()
1507 un = unhalt->sum * 1.0; in aliasing_broad()
1518 /* 16 - FP_ASSIST.ANY/INST_RETIRED.ANY_P */ in fpassists()
1526 if (pos != -1) { in fpassists()
1527 fpd = fp->vals[pos] * 1.0; in fpassists()
1528 un = inst->vals[pos] * 1.0; in fpassists()
1530 fpd = fp->sum * 1.0; in fpassists()
1531 un = inst->sum * 1.0; in fpassists()
1541 /* 17 - (OTHER_ASSISTS.AVX_TO_SSE * 75)/CPU_CLK_UNHALTED.THREAD_P thresh .1*/ in otherassistavx()
1550 if (pos != -1) { in otherassistavx()
1551 ot = oth->vals[pos] * 1.0; in otherassistavx()
1552 un = unhalt->vals[pos] * 1.0; in otherassistavx()
1554 ot = oth->sum * 1.0; in otherassistavx()
1555 un = unhalt->sum * 1.0; in otherassistavx()
1575 if (pos != -1) { in otherassistsse()
1576 ot = oth->vals[pos] * 1.0; in otherassistsse()
1577 un = unhalt->vals[pos] * 1.0; in otherassistsse()
1579 ot = oth->sum * 1.0; in otherassistsse()
1580 un = unhalt->sum * 1.0; in otherassistsse()
1600 if (pos != -1) { in efficiency1()
1601 ot = uops->vals[pos] * 1.0; in efficiency1()
1602 un = unhalt->vals[pos] * 1.0; in efficiency1()
1604 ot = uops->sum * 1.0; in efficiency1()
1605 un = unhalt->sum * 1.0; in efficiency1()
1621 /* 20 - CPU_CLK_UNHALTED.THREAD_P/INST_RETIRED.ANY_P good if > 1. (comp factor)*/ in efficiency2()
1624 if (pos != -1) { in efficiency2()
1625 ot = uops->vals[pos] * 1.0; in efficiency2()
1626 un = unhalt->vals[pos] * 1.0; in efficiency2()
1628 ot = uops->sum * 1.0; in efficiency2()
1629 un = unhalt->sum * 1.0; in efficiency2()
1639 "pmcstat -s CPU_CLK_UNHALTED.THREAD_P -s PARTIAL_RAT_STALLS.SLOW_LEA_WINDOW -w 1",
1641 /* -- not defined for SB right (partial-rat_stalls) 02*/
1643 "pmcstat -s CPU_CLK_UNHALTED.THREAD_P -s PARTIAL_RAT_STALLS.FLAGS_MERGE_UOP -w 1",
1646 "pmcstat -s CPU_CLK_UNHALTED.THREAD_P -s BR_MISP_RETIRED.ALL_BRANCHES -w 1",
1649 "pmcstat -s CPU_CLK_UNHALTED.THREAD_P -s MEM_UOP_RETIRED.SPLIT_LOADS -w 1",
1652 "pmcstat -s MEM_UOP_RETIRED.SPLIT_STORES -s MEM_UOP_RETIRED.ALL_STORES -w 1",
1655 "pmcstat -s MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HITM -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1658 "pmcstat -s LD_BLOCKS_STORE_FORWARD -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1661 …t -s MEM_LOAD_UOPS_RETIRED.LLC_HIT -s MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HIT -s MEM_LOAD_UOPS_LLC_…
1664 "pmcstat -s MEM_LOAD_UOPS_MISC_RETIRED.LLC_MISS -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1667 …"pmcstat -s DTLB_LOAD_MISSES.STLB_HIT -s DTLB_LOAD_MISSES.WALK_DURATION -s CPU_CLK_UNHALTED.THREAD…
1670 …"pmcstat -s DTLB_STORE_MISSES.STLB_HIT -s DTLB_STORE_MISSES.WALK_DURATION -s CPU_CLK_UNHALTED.THRE…
1673 "pmcstat -s IDQ_UOPS_NOT_DELIVERED.CORE -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1676 …"pmcstat -s MACHINE_CLEARS.MEMORY_ORDERING -s MACHINE_CLEARS.SMC -s MACHINE_CLEARS.MASKMOV -s CPU_…
1679 "pmcstat -s IDQ.MS_UOPS,cmask=1 -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1682 "pmcstat -s LD_BLOCKS_PARTIAL.ADDRESS_ALIAS -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1685 "pmcstat -s FP_ASSIST.ANY -s INST_RETIRED.ANY_P -w 1",
1688 "pmcstat -s OTHER_ASSISTS.AVX_TO_SSE -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1691 "pmcstat -s OTHER_ASSISTS.SSE_TO_AVX -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1694 "pmcstat -s UOPS_RETIRED.RETIRE_SLOTS -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1697 "pmcstat -s INST_RETIRED.ANY_P -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1705 "pmcstat -s UOPS_RETIRED.RETIRE_SLOTS -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1708 "pmcstat -s INST_RETIRED.ANY_P -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1711 "pmcstat -s ITLB_MISSES.WALK_DURATION -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1714 "pmcstat -s ICACHE.IFETCH_STALL -s ITLB_MISSES.WALK_DURATION -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1717 "pmcstat -s ILD_STALL.LCP -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1720 "pmcstat -s MEM_LOAD_UOPS_LLC_MISS_RETIRED.LOCAL_DRAM -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1723 "pmcstat -s MEM_LOAD_UOPS_RETIRED.LLC_HIT -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1726 "pmcstat -s MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HITM -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1729 "pmcstat -s MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HIT -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1732 "pmcstat -s LD_BLOCKS_STORE_FORWARD -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1735 …"pmcstat -s CPU_CLK_UNHALTED.THREAD_P -s L1D_PEND_MISS.PENDING -s MEM_LOAD_UOPS_RETIRED.L1_MISS -s…
1738 "pmcstat -s MEM_UOPS_RETIRED.SPLIT_STORES -s MEM_UOPS_RETIRED.ALL_STORES -w 1",
1741 "pmcstat -s LD_BLOCKS_PARTIAL.ADDRESS_ALIAS -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1744 …"pmcstat -s DTLB_LOAD_MISSES.STLB_HIT -s DTLB_LOAD_MISSES.WALK_DURATION -s CPU_CLK_UNHALTED.THREAD…
1747 …"pmcstat -s DTLB_STORE_MISSES.STLB_HIT -s DTLB_STORE_MISSES.WALK_DURATION -s CPU_CLK_UNHALTED.THRE…
1750 …-s CPU_CLK_UNHALTED.THREAD_P -s BR_MISP_RETIRED.ALL_BRANCHES -s MACHINE_CLEARS.MEMORY_ORDERING -s …
1753 …"pmcstat -s MACHINE_CLEARS.MEMORY_ORDERING -s MACHINE_CLEARS.SMC -s MACHINE_CLEARS.MASKMOV -s CPU_…
1756 "pmcstat -s IDQ.MS_UOPS,cmask=1 -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1759 "pmcstat -s FP_ASSIST.ANY -s INST_RETIRED.ANY_P -w 1",
1762 "pmcstat -s OTHER_ASSISTS.AVX_TO_SSE -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1765 "pmcstat -s OTHER_ASSISTS.SSE_TO_AVX -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1772 "pmcstat -s UOPS_RETIRED.RETIRE_SLOTS -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1775 "pmcstat -s INST_RETIRED.ANY_P -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1778 "pmcstat -s ITLB_MISSES.WALK_DURATION -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1781 "pmcstat -s ICACHE.MISSES -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1784 "pmcstat -s ILD_STALL.LCP -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1787 "pmcstat -s MEM_LOAD_UOPS_LLC_MISS_RETIRED.LOCAL_DRAM -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1790 …t -s MEM_LOAD_UOPS_RETIRED.LLC_HIT -s MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HIT -s MEM_LOAD_UOPS_LLC…
1793 "pmcstat -s MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HITM -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1796 "pmcstat -s MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HIT -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1799 "pmcstat -s LD_BLOCKS_STORE_FORWARD -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1802 "pmcstat -s CPU_CLK_UNHALTED.THREAD_P -s MEM_UOPS_RETIRED.SPLIT_LOADS -w 1",
1805 "pmcstat -s MEM_UOPS_RETIRED.SPLIT_STORES -s MEM_UOPS_RETIRED.ALL_STORES -w 1",
1808 "pmcstat -s LD_BLOCKS_PARTIAL.ADDRESS_ALIAS -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1811 …"pmcstat -s DTLB_LOAD_MISSES.STLB_HIT -s DTLB_LOAD_MISSES.WALK_DURATION -s CPU_CLK_UNHALTED.THREAD…
1814 "pmcstat -s CPU_CLK_UNHALTED.THREAD_P -s BR_MISP_RETIRED.ALL_BRANCHES -w 1",
1817 …"pmcstat -s MACHINE_CLEARS.MEMORY_ORDERING -s MACHINE_CLEARS.SMC -s MACHINE_CLEARS.MASKMOV -s CPU_…
1820 "pmcstat -s IDQ.MS_UOPS,cmask=1 -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1823 "pmcstat -s FP_ASSIST.ANY -s INST_RETIRED.ANY_P -w 1",
1826 "pmcstat -s OTHER_ASSISTS.AVX_TO_SSE -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1829 "pmcstat -s OTHER_ASSISTS.SSE_TO_AVX -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1878 printf(" (UOPS_ISSUEDF.ANY - UOPS_RETIRED.RETIRE_SLOTS + 4 * INT_MISC.RECOVERY_CYCLES) /\n"); in explain_name_broad()
1907 "pmcstat -s UOPS_RETIRED.RETIRE_SLOTS -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1910 "pmcstat -s INST_RETIRED.ANY_P -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1913 …"pmcstat -s ITLB_MISSES.WALK_DURATION -s CPU_CLK_UNHALTED.THREAD_P -s ITLB_MISSES.STLB_HIT_4K -w 1…
1916 "pmcstat -s ICACHE.MISSES -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1919 "pmcstat -s ILD_STALL.LCP -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1922 "pmcstat -s MEM_LOAD_UOPS_RETIRED.L3_MISS -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1925 "pmcstat -s MEM_LOAD_UOPS_RETIRED.L3_HIT -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1928 …"pmcstat -s MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HITM -s CPU_CLK_UNHALTED.THREAD_P -s MEM_LOAD_UOP…
1931 "pmcstat -s MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_HIT -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1934 "pmcstat -s LD_BLOCKS_STORE_FORWARD -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1937 "pmcstat -s LD_BLOCKS_PARTIAL.ADDRESS_ALIAS -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1940 …"pmcstat -s DTLB_LOAD_MISSES.STLB_HIT_4K -s DTLB_LOAD_MISSES.WALK_DURATION -s CPU_CLK_UNHALTED.THR…
1943 …-s CPU_CLK_UNHALTED.THREAD_P -s BR_MISP_RETIRED.ALL_BRANCHES -s MACHINE_CLEARS.CYCLES -s UOPS_ISSU…
1946 …pmcstat -s MACHINE_CLEARS.CYCLES -s MACHINE_CLEARS.MEMORY_ORDERING -s MACHINE_CLEARS.SMC -s MACHIN…
1949 "pmcstat -s FP_ASSIST.ANY -s INST_RETIRED.ANY_P -w 1",
1952 "pmcstat -s OTHER_ASSISTS.AVX_TO_SSE -s CPU_CLK_UNHALTED.THREAD_P -w 1",
1955 …"pmcstat -s IDQ.MS_UOPS,cmask=1 -s CPU_CLK_UNHALTED.THREAD_P -s UOPS_ISSUED.ANY -s UOPS_RETIRED.RE…
2015 exit(-1); in set_expression()
2017 return(-1); in set_expression()
2026 exit(-1); in set_expression()
2048 return(-1); in validate_expression()
2073 printf("Check -- invalid header no s/ in %s\n", in process_header()
2078 up->cpu = strtol(&p[2], NULL, 10); in process_header()
2083 if (nlen < (MAX_NLEN-1)) { in process_header()
2084 strcpy(up->counter_name, &p[(i+1)]); in process_header()
2086 strncpy(up->counter_name, &p[(i+1)], (MAX_NLEN-1)); in process_header()
2093 build_counters_from_header(FILE *io) in build_counters_from_header() argument
2102 if (fgets(buffer, sizeof(buffer), io) == NULL) { in build_counters_from_header()
2153 read_a_line(FILE *io) in read_a_line() argument
2158 if (fgets(buffer, sizeof(buffer), io) == NULL) { in read_a_line()
2209 if (cpat->next_cpu) { in lace_cpus_together()
2213 lace_cpu = cpat->cpu; in lace_cpus_together()
2224 /* Ok look forward for cpu->cpu and link in */ in lace_cpus_together()
2227 if (at->next_cpu) { in lace_cpus_together()
2230 if (at->cpu == lace_cpu) { in lace_cpus_together()
2232 cpat->next_cpu = at; in lace_cpus_together()
2243 FILE *io; in process_file() local
2249 io = my_popen(command, "r", &pid_of_command); in process_file()
2250 if (io == NULL) { in process_file()
2255 io = fopen(filename, "r"); in process_file()
2256 if (io == NULL) { in process_file()
2262 build_counters_from_header(io); in process_file()
2265 printf("Nothing to do -- no counters built\n"); in process_file()
2267 fclose(io); in process_file()
2269 my_pclose(io, pid_of_command); in process_file()
2285 if (read_a_line(io)) { in process_file()
2297 do_expression(glob_cpu[i], (line_at-1)); in process_file()
2309 fclose(io); in process_file()
2311 my_pclose(io, pid_of_command); in process_file()
2338 FILE *io; in get_cpuid_set() local
2402 case 0x1C: /* Per Intel document 320047-002. */ in get_cpuid_set()
2408 * Per Intel document 253669-032 9/2009, in get_cpuid_set()
2409 * pages A-2 and A-57 in get_cpuid_set()
2412 * Per Intel document 253669-032 9/2009, in get_cpuid_set()
2413 * pages A-2 and A-57 in get_cpuid_set()
2422 case 0x25: /* Per Intel document 253669-033US 12/2009. */ in get_cpuid_set()
2423 case 0x2C: /* Per Intel document 253669-033US 12/2009. */ in get_cpuid_set()
2427 case 0x2F: /* Westmere-EX, seen in wild */ in get_cpuid_set()
2431 case 0x2A: /* Per Intel document 253669-039US 05/2011. */ in get_cpuid_set()
2435 case 0x2D: /* Per Intel document 253669-044US 08/2012. */ in get_cpuid_set()
2439 case 0x3A: /* Per Intel document 253669-043US 05/2012. */ in get_cpuid_set()
2443 case 0x3E: /* Per Intel document 325462-045US 01/2013. */ in get_cpuid_set()
2447 case 0x3F: /* Per Intel document 325462-045US 09/2014. */ in get_cpuid_set()
2451 case 0x3C: /* Per Intel document 325462-045US 01/2013. */ in get_cpuid_set()
2460 printf("Intel SKY-LAKE\n"); in get_cpuid_set()
2475 /* Per Intel document 330061-001 01/2014. */ in get_cpuid_set()
2480 printf("Intel model 0x%x is not known -- sorry\n", in get_cpuid_set()
2495 io = my_popen("/usr/sbin/pmccontrol -L", "r", &pid_of_command); in get_cpuid_set()
2503 exit(-1); in get_cpuid_set()
2508 while (fgets(linebuf, sizeof(linebuf), io) != NULL) { in get_cpuid_set()
2510 /* sometimes headers ;-) */ in get_cpuid_set()
2514 if (linebuf[(len-1)] == '\n') { in get_cpuid_set()
2516 linebuf[(len-1)] = 0; in get_cpuid_set()
2523 exit(-1); in get_cpuid_set()
2529 /* Got to expand -- unlikely */ in get_cpuid_set()
2536 exit(-1); in get_cpuid_set()
2545 my_pclose(io, pid_of_command); in get_cpuid_set()
2549 exit(-1); in get_cpuid_set()
2557 printf("-------------------------------------------------------------\n"); in explain_all()
2559 printf("For -e %s ", the_cpu.ents[i].name); in explain_all()
2561 printf("----------------------------\n"); in explain_all()
2568 FILE *io; in test_for_a_pmc() local
2576 len = 50 - out_so_far; in test_for_a_pmc()
2581 sprintf(my_command, "/usr/sbin/pmcstat -w .25 -c 0 -s %s", pmc); in test_for_a_pmc()
2582 io = my_popen(my_command, "r", &pid_of_command); in test_for_a_pmc()
2583 if (io == NULL) { in test_for_a_pmc()
2584 printf("Failed -- popen fails\n"); in test_for_a_pmc()
2589 if (fgets(line, sizeof(line), io) == NULL) { in test_for_a_pmc()
2590 printf("Failed -- no output from pmstat\n"); in test_for_a_pmc()
2594 if (line[(llen-1)] == '\n') { in test_for_a_pmc()
2595 line[(llen-1)] = 0; in test_for_a_pmc()
2596 llen--; in test_for_a_pmc()
2598 for(i=2; i<(llen-len); i++) { in test_for_a_pmc()
2605 if (fgets(line, sizeof(line), io) == NULL) { in test_for_a_pmc()
2606 printf("Failed -- no second output from pmstat\n"); in test_for_a_pmc()
2620 for(k=0; k<(20-len); k++) { in test_for_a_pmc()
2632 printf("Failed -- '%s' not '%s'\n", line, resp); in test_for_a_pmc()
2634 my_pclose(io, pid_of_command); in test_for_a_pmc()
2652 exit(-1); in add_it_to()
2659 exit(-1); in add_it_to()
2672 * /usr/sbin/pmcstat -w 1 -s NNN -s QQQ in build_command_for_exp()
2686 if (at->type == TYPE_VALUE_PMC) { in build_command_for_exp()
2689 at = at->next; in build_command_for_exp()
2692 printf("No PMC's in your expression -- nothing to do!!\n"); in build_command_for_exp()
2699 exit(-1); in build_command_for_exp()
2704 if (at->type == TYPE_VALUE_PMC) { in build_command_for_exp()
2705 if(add_it_to(vars, alloced_pmcs, at->name)) { in build_command_for_exp()
2709 at = at->next; in build_command_for_exp()
2712 mal = 23; /* "/usr/sbin/pmcstat -w 1" + \0 */ in build_command_for_exp()
2714 mal += strlen(vars[i]) + 4; /* var + " -s " */ in build_command_for_exp()
2718 printf("%s out of mem\n", __FUNCTION__); in build_command_for_exp()
2719 exit(-1); in build_command_for_exp()
2722 strcpy(cmd, "/usr/sbin/pmcstat -w 1"); in build_command_for_exp()
2725 sprintf(forming, " -s %s", vars[i]); in build_command_for_exp()
2744 if (at->type == TYPE_VALUE_PMC) { in user_expr()
2745 var = find_counter(cpu, at->name); in user_expr()
2747 printf("%s:Can't find counter %s?\n", __FUNCTION__, at->name); in user_expr()
2748 exit(-1); in user_expr()
2750 if (pos != -1) { in user_expr()
2751 at->value = var->vals[pos] * 1.0; in user_expr()
2753 at->value = var->sum * 1.0; in user_expr()
2756 at = at->next; in user_expr()
2777 printf("------------------------------------------------------------------------\n"); in run_tests()
2789 printf("--------------------------------------------------------------\n"); in list_all()
2812 while ((i = getopt(argc, argv, "ALHhvm:i:?e:TE:")) != -1) { in main()
2862 printf("Use %s [ -i inputfile -v -m max_to_collect -e expr -E -h -? -H]\n", in main()
2864 printf("-i inputfile -- use source as inputfile not stdin (if stdin collect)\n"); in main()
2865 printf("-v -- verbose dump debug type things -- you don't want this\n"); in main()
2866 printf("-m N -- maximum to collect is N measurements\n"); in main()
2867 printf("-e expr-name -- Do expression expr-name\n"); in main()
2868 printf("-E 'your expression' -- Do your expression\n"); in main()
2869 printf("-h -- Don't do the expression I put in -e xxx just explain what it does and exit\n"); in main()
2870 printf("-H -- Don't run anything, just explain all canned expressions\n"); in main()
2871 printf("-T -- Test all PMC's defined by this processor\n"); in main()
2872 printf("-A -- Run all canned tests\n"); in main()
2906 if (set_expression(name) == -1) { in main()
2921 printf(" val - %ld\n", (long int)cnts[i].vals[j]); in main()
2923 printf(" sum - %ld\n", (long int)cnts[i].sum); in main()
2932 do_expression(glob_cpu[i], -1); in main()