Commit Graph

40 Commits

Author SHA1 Message Date
maxv 1b2a6113eb Add a "support" section. 2018-07-24 10:05:36 +00:00
maxv 8c9dd8d036 Use errx, there is no errno. 2018-07-24 09:50:37 +00:00
wiz b15bdb80e1 Various improvements to man page. Sync usage. 2018-07-18 16:50:05 +00:00
jmcneill 091e75868b Add ARMv7 support. 2018-07-15 23:50:53 +00:00
jmcneill 0b7c38e1ef Add ARMv8 support. 2018-07-15 16:25:31 +00:00
jmcneill de53e8aea9 Fix a crash when running tprof with no arguments; check argc before accessing argv[0] 2018-07-14 16:34:15 +00:00
jmcneill 4ab6de2316 Mark tprof_event_init, tprof_event_list, tprof_event_lookup as dead 2018-07-14 15:38:59 +00:00
maxv 8addf8a6b5 specialreg.h is x86-specific, don't include it 2018-07-14 07:54:37 +00:00
maxv 9896bc73ca Finish the Skylake/Kabylake table, and improve the output of "tprof analyze". 2018-07-14 07:54:04 +00:00
joerg e290a3e9b8 Mark tprof_monitor as dead 2018-07-13 19:54:53 +00:00
maxv c52e6df86c Ask for a file path with the "analyze" command, instead of reading stdin. 2018-07-13 12:04:50 +00:00
maxv 5ae6235d0e Remove tpfmt(1). Its code was merged into tprof(8). 2018-07-13 11:14:14 +00:00
maxv 96b21aedb9 Merge tpfmt(1) into tprof(8). We want to have access to everything with
only one tool. The code is copied mostly as-is, and the functionality is
available via the "analyze" command.

Eg:
	tprof monitor -e llc-misses:k -o myfile.out sleep 20
	tprof analyze < myfile.out

Will move soon, I don't like the reading via stdin.
2018-07-13 11:03:36 +00:00
maxv 48aa814610 Skylake/Kabylake are family 6, so add a check for that. While here improve
the layout of "tprof list".
2018-07-13 09:53:42 +00:00
maxv ab933b7bbb Change the arguments of the tprof tool, to match the behavior of pmc(1) and
cpuctl(8). They become:

	tprof list
	tprof monitor -e name:option [-o outfile] command
2018-07-13 09:04:31 +00:00
maxv 8dd2f31aad Inline the values in amd_f10h_names[], we're not going to use defines for
each CPU model found in the wild.
2018-07-13 08:09:21 +00:00
maxv a087cb3c40 Revamp tprof.
Rewrite the Intel backend to use the generic PMC interface, which is
available on all Intel CPUs. Synchronize the AMD backend with the new
interface.

The kernel identifies the PMC interface, and gives its id to userland.
Userland then queries the events itself (via cpuid etc). These events
depend on the PMC interface.

The tprof utility is rewritten to allow the user to choose which event
to count (which was not possible until now, the event was hardcoded in
the backend). The command line format is based on usr.bin/pmc, eg:

	tprof -e llc-misses:k -o output sleep 20

The man page is updated too, but the arguments will likely change soon
anyway so it doesn't matter a lot.

The tprof utility has three tables:

	Intel Architectural Version 1
	Intel Skylake/Kabylake
	AMD Family 10h

A CPU can support a combination of tables. For example Kabylake has
Intel-Architectural-Version-1 and its own Intel-Kabylake table.

For now the Intel Skylake/Kabylake table contains only one event, just
to demonstrate that the combination of tables works. Tested on an
Intel Core i5 Kabylake.

The code for AMD Family 10h is taken from the code I had written for
usr.bin/pmc. I haven't tested it yet, but it's the same as pmc(1), so
I guess it works as-is.

The whole thing is written in such a way that (I think) it is not
complicated to add more CPU models, and more architectures (other than
x86).
2018-07-13 07:56:29 +00:00
joerg 4c70cdf100 Use __dead 2012-01-10 23:39:11 +00:00
yamt e21ed02f84 - add a CAVEATS
- fix a warning
2011-12-09 15:26:48 +00:00
wiz 825bd212d9 Improve wording, sort sections, remove ls(1) escapee. 2011-11-26 22:49:37 +00:00
yamt ffd61475c1 man page 2011-11-26 05:02:44 +00:00
yamt 76034769e6 deal with the output of new objdump. 2009-10-13 00:49:38 +00:00
lukem d877c4c3c0 Enable WARNS=4 by default, except for:
cpuctl  dumplfs  hprop  ipf  iprop-log  kadmin  kcm  kdc  kdigest
	kimpersonate  kstash  ktutil  makefs  ndbootd  ntp  pppd  quot
	racoon  racoonctl  rtadvd  sntp  sup  tcpdchk  tcpdmatch  tcpdump
	traceroute  traceroute6  user  veriexecgen  wsmoused  zic
(Mostly third-party applications)
2009-04-22 15:23:01 +00:00
yamt efeccfb5bc fix an error message. 2009-01-26 05:53:10 +00:00
yamt 3c917c1d93 fix exit status values. 2009-01-03 07:20:57 +00:00
ad 2290e4283f Expunge references to lockmgr. 2008-01-30 14:16:42 +00:00
yamt 93d6e7a34f update comments 2008-01-14 12:49:54 +00:00
yamt b471ec2032 whitespace 2008-01-14 12:48:52 +00:00
yamt c6345d661d add a script to produce something like opannotate. 2008-01-14 12:47:59 +00:00
yamt 9a2ecb37c6 rename fmt.sh to tpfmt.sh 2008-01-14 12:42:02 +00:00
yamt 1f8910c5fa mention SIZEOF_PTR 2008-01-05 22:54:49 +00:00
yamt af7b67af68 PR/37662 was fixed. 2008-01-05 22:49:59 +00:00
yamt 2d6f41e754 usage: be a little more understandable. 2008-01-03 15:01:07 +00:00
yamt 40f32b06ab use the SIZEOF_PTR environment variable if set. 2008-01-03 14:21:53 +00:00
yamt 2754ee1338 note what's sampled. 2008-01-02 01:17:41 +00:00
yamt 9bc4e5ed37 explain the output of fmt.sh 2008-01-02 01:06:31 +00:00
yamt 7c8b847a3a minimum documentation. 2008-01-01 23:42:56 +00:00
yamt 72af27bc88 comment a usage. 2008-01-01 21:39:50 +00:00
yamt cfa944ec37 a dumb formatter for tprof. should be rewritten. 2008-01-01 21:37:50 +00:00
yamt 8415a5d75a a dumb program to talk with the tprof driver. 2008-01-01 21:33:26 +00:00