Unfortunately, OpenBSD does not have mpstat. mpstat is pretty useful for me in linux. For those who do not know what mpstat does, mpstat provides data for various statistics on your available processor(s). You can look at data for every processor using mpstat -P ALL or individually issuing a mpstat -P #cpu (e.g. mpstat -P 1)
If you’re wondering which package to install, normally your distribution should have a package called sysstat that has it.
Anyway, I tried to look for it for OpenBSD, or something like it, but couldn’t find one so simple/nice. Hope you have better luck.
Another tool I really enjoy is pmap in linux, which, good news!!!, has a brother in OpenBSD called procmap. Almost the same thing and in all honesty, way better than pmap. You can guess what it does, just by reading the name: displays a process memory map.
procmap -p PID and you’re all set for a good trip into your process memory. Below is an example of a procmap to my sendmail server:
-bash-4.0# procmap -a -d -v -p 6847 | less
MAP 0xd72c5a48: [0x1000->0xcfbfe000]
#ent=81, sz=36978688, ref=1, version=5605, flags=0x1
pmap=0xd72c4460(resident=)
Start End Size Offset rwxpc RWX I/W/A Dev Inode - File
- 0xd723bd14: 0x3d4e000->0x3d54000: obj=0xd716f974/0x0, amap=0x0/0
submap=F, cow=T, nc=T, prot(max)=5/7, inh=1, wc=0, adv=0
(dev=0,0 ino=2416545 [/usr/lib/libwrap.so.4.0] [0xd716f974])
03d4e000-03d53fff 24k 00000000 r-xp+ (rwx) 1/0/0 00:00 2416545 - /usr/lib/libwrap.so.4.0 [0xd716f974]
- 0xd723b9a4: 0x550e000->0x5599000: obj=0xd7284798/0x0, amap=0x0/0
submap=F, cow=T, nc=T, prot(max)=5/7, inh=1, wc=0, adv=0
(dev=0,0 ino=2417436 [/usr/lib/libc.so.51.0] [0xd7284798])
0550e000-05598fff 556k 00000000 r-xp+ (rwx) 1/0/0 00:00 2417436 - /usr/lib/libc.so.51.0 [0xd7284798]
- 0xd723bc64: 0x75ad000->0x75b5000: obj=0xd7284548/0x0, amap=0x0/0
submap=F, cow=T, nc=T, prot(max)=5/7, inh=1, wc=0, adv=0
(dev=0,0 ino=2445976 [/usr/libexec/ld.so] [0xd7284548])
075ad000-075b4fff 32k 00000000 r-xp+ (rwx) 1/0/0 00:00 2445976 - /usr/libexec/ld.so [0xd7284548]
- 0xd723becc: 0x8ea6000->0x8f8f000: obj=0xd716f8e0/0x0, amap=0x0/0
submap=F, cow=T, nc=T, prot(max)=5/7, inh=1, wc=0, adv=0
(dev=0,0 ino=2417437 [/usr/lib/libcrypto.so.18.0] [0xd716f8e0])
08ea6000-08f8efff 932k 00000000 r-xp+ (rwx) 1/0/0 00:00 2417437 - /usr/lib/libcrypto.so.18.0 [0xd716f8e0]
- 0xd717ed68: 0xd72b000->0xd760000: obj=0xd716f7b8/0x0, amap=0x0/0
submap=F, cow=T, nc=T, prot(max)=5/7, inh=1, wc=0, adv=0
(dev=0,0 ino=2416541 [/usr/lib/libssl.so.15.0] [0xd716f7b8])
0d72b000-0d75ffff 212k 00000000 r-xp+ (rwx) 1/0/0 00:00 2416541 - /usr/lib/libssl.so.15.0 [0xd716f7b8]
- 0xd717e8f0: 0xecca000->0xeccb000: obj=0xd72b6000/0x0, amap=0x0/0
submap=F, cow=F, nc=F, prot(max)=5/5, inh=0, wc=0, adv=1
([ uvm_aobj ])
0ecca000-0eccafff 4k 00000000 r-xs- (r-x) 0/0/1 00:00 0 - [ uvm_aobj ]
- 0xd717e948: 0x1c000000->0x1c078000: obj=0xd716f690/0x0, amap=0x0/0
submap=F, cow=T, nc=T, prot(max)=5/7, inh=1, wc=0, adv=0
(dev=0,0 ino=2445996 [/usr/libexec/sendmail/sendmail] [0xd716f690])
1c000000-1c077fff 480k 00000000 r-xp+ (rwx) 1/0/0 00:00 2445996 - /usr/libexec/sendmail/sendmail [0xd716f690]
- 0xd717edc0: 0x23d4e000->0x23d4f000: obj=0xd716f974/0x6000, amap=0x0/0
submap=F, cow=T, nc=T, prot(max)=1/7, inh=1, wc=0, adv=0
(dev=0,0 ino=2416545 [/usr/lib/libwrap.so.4.0] [0xd716f974])
I didn’t include a lot of detail in here for one simple reason… open your shell and start reading and experimenting!
man procmap/pmap and man mpstat are your friends