kstats
来自「一个用在mips体系结构中的操作系统」· 代码 · 共 868 行 · 第 1/2 页
TXT
868 行
foreach $i (0 .. $#subcategories) { $sstring = "$s:" . $subcategories[$i]; if (defined($comp->{$sstring})) { $subcatval[$i] = $comp->{$sstring}{"lattotal"}; } else { $subcatval[$i] = 0; } $totsubcats += $subcatval[$i]; } $comptotal = $comp->{"$s:ROOT"}{'comptotal'}; $lattotal = $comp->{"$s:ROOT"}{'lattotal'}; $exc = $lattotal - ($comptotal + $totsubcats); $n = $comp->{"$s:ROOT"}{'n'}; if ($n == 0) { printf "%-16s no entries\n", $s; next; } if (($lattotal / ($n * $clock)) > 2) { printf "%-20s %9.0f %9.0f %9.0f ", $s, $lattotal / ($n * $clock), $comp->{"$s:ROOT"}{'latmin'} / $clock, $comp->{"$s:ROOT"}{'latmax'} / $clock; } else { printf "%-20s %8dc %8dc %8dc ", $s, $lattotal / $n, $comp->{"$s:ROOT"}{'latmin'}, $comp->{"$s:ROOT"}{'latmax'}; } PrintFraction2($comptotal, $lattotal); PrintFraction2($exc, $lattotal); foreach $i (0 .. $#subcategories) { PrintFraction2($subcatval[$i], $lattotal); } print "\n"; }}###### TABLE 3###### table 3 is memory system behavior of kernel services sorted by cpi###if (!defined(%showTable) || defined($showTable{"3"})) { print "\n"; print "+-----------------------------------------+\n"; print "| 3: memory system performance by service |\n"; print "+-----------------------------------------+\n\n"; printf "%-16s %7s %7s %7s %9s %9s %9s\n", "service", "MCPI", "dMCPI", "iMCPI", "cold", "cap", "inv"; print "------------------------------------------------------------------------\n"; $n = 0; foreach $s (@services) { $n++; if (!printService($s, $n)) { next; } printf "%-16s %7.2f %7.2f %7.2f %9d %9d %9d\n", $s, $comp->{"$s:ROOT"}{"dMCPI"} + $comp->{"$s:ROOT"}{"iMCPI"}, $comp->{"$s:ROOT"}{"dMCPI"}, $comp->{"$s:ROOT"}{"iMCPI"}, $comp->{"$s:ROOT"}{"read.ice"} + $comp->{"$s:ROOT"}{"read.cold"} + $comp->{"$s:ROOT"}{"write.ice"} + $comp->{"$s:ROOT"}{"write.cold"} + $comp->{"$s:ROOT"}{"instr.ice"} + $comp->{"$s:ROOT"}{"instr.cold"}, $comp->{"$s:ROOT"}{"read.cap"} + $comp->{"$s:ROOT"}{"write.cap"} + $comp->{"$s:ROOT"}{"instr.cap"}, $comp->{"$s:ROOT"}{"read.inv"} + $comp->{"$s:ROOT"}{"read.capinv"} + $comp->{"$s:ROOT"}{"write.inv"} + $comp->{"$s:ROOT"}{"write.capinv"} + $comp->{"$s:ROOT"}{"instr.inv"} + $comp->{"$s:ROOT"}{"instr.capinv"}; }}print "\n";######## subroutines####sub bycomp { my($totcompa, $totcompb, $sync); $sync = (defined($comp->{"$a:sync"})) ? $comp->{"$a:sync"}{"comptotal"} : 0; $totcompa = $comp->{"$a:ROOT"}{"comptotal"} + $sync; $sync = (defined($comp->{"$b:sync"})) ? $comp->{"$b:sync"}{"comptotal"} : 0; $totcompb = $comp->{"$b:ROOT"}{"comptotal"} + $sync; if ($hive) { $fastRPC = (defined($comp->{"$a:fastRPC"})) ? $comp->{"$a:fastRPC"}{"comptotal"} : 0; $totcompa += $fastRPC; $fastRPC = (defined($comp->{"$b:fastRPC"})) ? $comp->{"$b:fastRPC"}{"comptotal"} : 0; $totcompb += $fastRPC; } $totcompb <=> $totcompa;}sub printService { my($serviceName, $serviceNum) = @_; if (($numServices != -1) && defined(%showService)) { if (($serviceNum > $numServices) && !defined($showService{$serviceName})) { return 0; } } elsif (($numServices != -1) && ($serviceNum > $numServices)) { return 0; } elsif (defined(%showService) && !defined($showService{$serviceName})) { return 0; } return 1;}###### tables of constants###sub SetupConstants { @kernel_states = ( # pseudo processes "bootproc", "idleproc", "startup", "runqproc", # kernel processes "vhand", "bdflush", "pdflush", "sched", # Hive kernel processes "dspatch", "PING", "LSET", "RECV", "RBOT", "BALANCE", "hrpcServer", # named exception entry points # (numbered done in loop below) "utlb", "pfault", "vfault", "COW_fault", "demand_zero", # Hive named exceptions "rem_pfault", "rem_vfault", "rem_COW_fault", # Named interrupt entry points "intrdisp", "timein", "netintr", "simscsi_intr", "if_etintr", "du_poll", "level4_intr", "clock", "cpuintr", "ackkgclock", "buserror_intr", # Hive named interrupts "hrpcRequestInterrupt", # Process creation entry point "fork" ); $syscallName[1000] = "syscall"; $syscallName[1001] = "exit"; $syscallName[1002] = "fork"; $syscallName[1003] = "read"; $syscallName[1004] = "write"; $syscallName[1005] = "open"; $syscallName[1006] = "close"; $syscallName[1007] = "fork"; $syscallName[1008] = "creat"; $syscallName[1009] = "link"; $syscallName[1010] = "unlink"; $syscallName[1011] = "execv"; $syscallName[1012] = "chdir"; $syscallName[1013] = "time"; $syscallName[1014] = "NULL"; $syscallName[1015] = "chmod"; $syscallName[1016] = "chown"; $syscallName[1017] = "brk"; $syscallName[1018] = "stat"; $syscallName[1019] = "lseek"; $syscallName[1020] = "getpid"; $syscallName[1021] = "mount"; $syscallName[1022] = "umount"; $syscallName[1023] = "setuid"; $syscallName[1024] = "getuid"; $syscallName[1025] = "stime"; $syscallName[1026] = "ptrace"; $syscallName[1027] = "alarm"; $syscallName[1028] = "NULL"; $syscallName[1029] = "pause"; $syscallName[1030] = "utime"; $syscallName[1031] = "NULL"; $syscallName[1032] = "NULL"; $syscallName[1033] = "access"; $syscallName[1034] = "nice"; $syscallName[1035] = "statfs"; $syscallName[1036] = "sync"; $syscallName[1037] = "kill"; $syscallName[1038] = "fstatfs"; $syscallName[1039] = "setpgrp"; $syscallName[1040] = "syssgi"; $syscallName[1041] = "dup"; $syscallName[1042] = "pipe"; $syscallName[1043] = "times"; $syscallName[1044] = "profil"; $syscallName[1045] = "plock"; $syscallName[1046] = "setgid"; $syscallName[1047] = "getgid"; $syscallName[1048] = "NULL"; $syscallName[1049] = "msgsys"; $syscallName[1050] = "sysmips"; $syscallName[1051] = "acct"; $syscallName[1052] = "shmsys"; $syscallName[1053] = "semsys"; $syscallName[1054] = "ioctl"; $syscallName[1055] = "uadmin"; $syscallName[1056] = "sysmp"; $syscallName[1057] = "utssys"; $syscallName[1058] = "NULL"; $syscallName[1059] = "execve"; $syscallName[1060] = "umask"; $syscallName[1061] = "chroot"; $syscallName[1062] = "fcntl"; $syscallName[1063] = "ulimit"; $syscallName[1064] = "NULL"; $syscallName[1065] = "NULL"; $syscallName[1066] = "NULL"; $syscallName[1067] = "NULL"; $syscallName[1068] = "NULL"; $syscallName[1069] = "NULL"; $syscallName[1070] = "NULL"; $syscallName[1071] = "NULL"; $syscallName[1072] = "NULL"; $syscallName[1073] = "NULL"; $syscallName[1074] = "NULL"; $syscallName[1075] = "NULL"; $syscallName[1076] = "NULL"; $syscallName[1077] = "NULL"; $syscallName[1078] = "NULL"; $syscallName[1079] = "rmdir"; $syscallName[1080] = "mkdir"; $syscallName[1081] = "getdents"; $syscallName[1082] = "sginap"; $syscallName[1083] = "sgikopt"; $syscallName[1084] = "sysfs"; $syscallName[1085] = "getmsg"; $syscallName[1086] = "putmsg"; $syscallName[1087] = "poll"; $syscallName[1088] = "sigreturn"; $syscallName[1089] = "accept"; $syscallName[1090] = "bind"; $syscallName[1091] = "connect"; $syscallName[1092] = "gethostid"; $syscallName[1093] = "getpeername"; $syscallName[1094] = "getsockname"; $syscallName[1095] = "getsockopt"; $syscallName[1096] = "listen"; $syscallName[1097] = "recv"; $syscallName[1098] = "recvfrom"; $syscallName[1099] = "recvmsg"; $syscallName[1100] = "select"; $syscallName[1101] = "end"; $syscallName[1102] = "sendmsg"; $syscallName[1103] = "sendto"; $syscallName[1104] = "sethostid"; $syscallName[1105] = "setsockopt"; $syscallName[1106] = "shutdown"; $syscallName[1107] = "socket"; $syscallName[1108] = "gethostname"; $syscallName[1109] = "sethostname"; $syscallName[1110] = "getdomainname"; $syscallName[1111] = "setdomainname"; $syscallName[1112] = "truncate"; $syscallName[1113] = "ftruncate"; $syscallName[1114] = "rename"; $syscallName[1115] = "symlink"; $syscallName[1116] = "readlink"; $syscallName[1117] = "NULL"; $syscallName[1118] = "NULL"; $syscallName[1119] = "nfssvc"; $syscallName[1120] = "getfh"; $syscallName[1121] = "async"; $syscallName[1122] = "exportfs"; $syscallName[1123] = "setregid"; $syscallName[1124] = "setreuid"; $syscallName[1125] = "getitimer"; $syscallName[1126] = "setitimer"; $syscallName[1127] = "adjtime"; $syscallName[1128] = "BSD"; $syscallName[1129] = "sproc"; $syscallName[1130] = "prctl"; $syscallName[1131] = "procblk"; $syscallName[1132] = "sprocsp"; $syscallName[1133] = "NULL"; $syscallName[1134] = "mmap"; $syscallName[1135] = "munmap"; $syscallName[1136] = "mprotect"; $syscallName[1137] = "msync"; $syscallName[1138] = "madvise"; $syscallName[1139] = "pagelock"; $syscallName[1140] = "getpagesize"; $syscallName[1141] = "quotactl"; $syscallName[1142] = "NULL"; $syscallName[1143] = "BSDgetpgrp"; $syscallName[1144] = "BSDsetpgrp"; $syscallName[1145] = "vhangup"; $syscallName[1146] = "fsync"; $syscallName[1147] = "fchdir"; $syscallName[1148] = "getrlimit"; $syscallName[1149] = "setrlimit"; $syscallName[1150] = "cacheflush"; $syscallName[1151] = "cachectl"; $syscallName[1152] = "fchown"; $syscallName[1153] = "fchmod"; $syscallName[1154] = "NULL"; $syscallName[1155] = "socketpair"; $syscallName[1156] = "sysinfo"; $syscallName[1157] = "nuname"; $syscallName[1158] = "xstat"; $syscallName[1159] = "lxstat"; $syscallName[1160] = "fxstat"; $syscallName[1161] = "xmknod"; $syscallName[1162] = "ksigaction"; $syscallName[1163] = "sigpending"; $syscallName[1164] = "sigprocmask"; $syscallName[1165] = "sigsuspend"; $syscallName[1166] = "sigpoll"; $syscallName[1167] = "swapctl"; $syscallName[1168] = "getcontext"; $syscallName[1169] = "setcontext"; $syscallName[1170] = "waitsys"; $syscallName[1171] = "sigstack"; $syscallName[1172] = "sigaltstack"; $syscallName[1173] = "sigsendset"; $syscallName[1174] = "statvfs"; $syscallName[1175] = "fstatvfs"; $syscallName[1176] = "getpmsg"; $syscallName[1177] = "putpmsg"; $syscallName[1178] = "lchown"; $syscallName[1179] = "priocntl"; $syscallName[1180] = "ksigqueue"; $excName[0] = "ERROR"; $excName[1] = "tlb_mod"; $excName[2] = "tlb_miss"; $excName[3] = "tlb_miss"; $excName[4] = "unaligned"; $excName[5] = "unaligned"; $excName[6] = "bus_error"; $excName[7] = "bus_error"; $excName[8] = "ERROR"; $excName[9] = "breakpoint"; $excName[10] = "reserved_inst"; $excName[11] = "cop_unusable"; if ($hive) { $fmethodName[1] = "hmf_qrpc_invoc"; $fmethodName[2] = "hmf_qrpc_result"; $fmethodName[4] = "hmf_child_status"; $fmethodName[5] = "hmf_child_demise"; $fmethodName[6] = "hmf_child_group"; $fmethodName[7] = "hmf_reparent_child"; $fmethodName[8] = "hmf_joinpg"; $fmethodName[9] = "hmf_leavepg"; $fmethodName[10] = "hmf_pgmembers"; $fmethodName[11] = "hmf_getpgrp"; $fmethodName[12] = "hmf_join_sess"; $fmethodName[15] = "hmf_hvm_validate"; $fmethodName[16] = "hmf_hvm_release"; $fmethodName[17] = "hmf_hvm_loan"; $fmethodName[18] = "hmf_hvm_free"; $fmethodName[19] = "hmf_hvm_access"; $fmethodName[20] = "hmf_hvm_blockloan "; $fmethodName[26] = "hmf_crash_cell"; $fmethodName[27] = "hmf_crash_cell_in_rpc"; $fmethodName[28] = "hmf_barrier"; $fmethodName[29] = "hmf_ping"; $fmethodName[30] = "hmf_flood"; $fmethodName[31] = "hmf_test_stub"; $qmethodName[1] = "hmq_psignal_hive"; $qmethodName[2] = "hmq_sigsendproc_full"; $qmethodName[3] = "hmq_set_pgrp_sess"; $qmethodName[4] = "hmq_leave_sess_full"; $qmethodName[8] = "hmq_swapin"; $qmethodName[9] = "hmq_anon_free"; $qmethodName[10] = "hmq_reserve_child"; $qmethodName[11] = "hmq_init_child"; $qmethodName[12] = "hmq_run_child"; $qmethodName[13] = "hmq_abort_remfork"; $qmethodName[32] = "hmq_cell_nfs_server"; $qmethodName[60] = "hmq_crash_cell"; $qmethodName[61] = "hmq_queued_test_stub"; $qmethodName[62] = "hmq__cantq__"; $qmethodName[63] = "hmq__piggy__"; }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?