JavaScript is required to for searching.
跳过导航链接
退出打印视图
手册页第 1 部分:用户命令     Oracle Solaris 11 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

简介

用户命令

acctcom(1)

adb(1)

addbib(1)

admin(1)

alias(1)

allocate(1)

amt(1)

appcert(1)

apptrace(1)

apropos(1)

ar(1)

arch(1)

as(1)

asa(1)

at(1)

atq(1)

atrm(1)

audioconvert(1)

audioctl(1)

audioplay(1)

audiorecord(1)

audiotest(1)

auths(1)

auto_ef(1)

awk(1)

banner(1)

basename(1)

basename(1B)

batch(1)

bc(1)

bdiff(1)

bfs(1)

bg(1)

biff(1B)

break(1)

builtin(1)

cal(1)

calendar(1)

case(1)

cat(1)

cd(1)

cdc(1)

cdrw(1)

chdir(1)

checkeq(1)

checknr(1)

chgrp(1)

chkey(1)

chmod(1)

chown(1)

chown(1B)

ckdate(1)

ckgid(1)

ckint(1)

ckitem(1)

ckkeywd(1)

ckpath(1)

ckrange(1)

ckstr(1)

cksum(1)

cktime(1)

ckuid(1)

ckyorn(1)

clear(1)

cmp(1)

col(1)

comb(1)

comm(1)

command(1)

compress(1)

continue(1)

cp(1)

cpio(1)

cpp(1)

cputrack(1)

crle(1)

crontab(1)

csh(1)

csplit(1)

ct(1C)

ctags(1)

ctrun(1)

ctstat(1)

ctwatch(1)

cu(1C)

cut(1)

date(1)

dc(1)

deallocate(1)

decrypt(1)

delta(1)

deroff(1)

df(1B)

dhcpinfo(1)

diff(1)

diff3(1)

diffmk(1)

digest(1)

digestp(1)

dircmp(1)

dirname(1)

dirs(1)

dis(1)

disown(1)

dispgid(1)

dispuid(1)

dos2unix(1)

dpost(1)

du(1)

du(1B)

dump(1)

dumpcs(1)

dumpkeys(1)

echo(1)

echo(1B)

ed(1)

edit(1)

egrep(1)

eject(1)

elfdump(1)

elfedit(1)

elffile(1)

elfsign(1)

elfwrap(1)

encrypt(1)

enhance(1)

env(1)

eqn(1)

errange(1)

errdate(1)

errgid(1)

errint(1)

erritem(1)

error(1)

errpath(1)

errstr(1)

errtime(1)

erruid(1)

erryorn(1)

eval(1)

ex(1)

exec(1)

exit(1)

expand(1)

export(1)

exportfs(1B)

expr(1)

expr(1B)

exstr(1)

factor(1)

false(1)

fastboot(1B)

fasthalt(1B)

fc(1)

fg(1)

fgrep(1)

file(1)

file(1B)

filebench(1)

filep(1)

filesync(1)

filofaxp(1)

find(1)

finger(1)

fmt(1)

fmtmsg(1)

fold(1)

for(1)

foreach(1)

franklinp(1)

from(1B)

ftp(1)

function(1)

gcore(1)

gencat(1)

geniconvtbl(1)

genmsg(1)

get(1)

getconf(1)

getfacl(1)

getlabel(1)

getopt(1)

getoptcvt(1)

getopts(1)

gettext(1)

gettxt(1)

getzonepath(1)

glob(1)

goto(1)

gprof(1)

grep(1)

groups(1)

groups(1B)

grpck(1B)

hash(1)

hashcheck(1)

hashmake(1)

hashstat(1)

head(1)

helpdate(1)

helpgid(1)

helpint(1)

helpitem(1)

helppath(1)

helprange(1)

helpstr(1)

helptime(1)

helpuid(1)

helpyorn(1)

hist(1)

history(1)

hostid(1)

hostname(1)

i386(1)

i486(1)

iconv(1)

idnconv(1)

if(1)

indxbib(1)

install(1B)

ipcrm(1)

ipcs(1)

isainfo(1)

isalist(1)

jobs(1)

join(1)

jsh(1)

kbd(1)

kdestroy(1)

keylogin(1)

keylogout(1)

kill(1)

kinit(1)

klist(1)

kmdb(1)

kmfcfg(1)

kpasswd(1)

krb5-config(1)

ksh(1)

ksh88(1)

ksh93(1)

ktutil(1)

lari(1)

last(1)

lastcomm(1)

ld(1)

ldapadd(1)

ldapdelete(1)

ldaplist(1)

ldapmodify(1)

ldapmodrdn(1)

ldapsearch(1)

ldd(1)

ld.so.1(1)

let(1)

lex(1)

lgrpinfo(1)

limit(1)

line(1)

list_devices(1)

listusers(1)

llc2_autoconfig(1)

llc2_config(1)

llc2_stats(1)

ln(1)

ln(1B)

loadkeys(1)

locale(1)

localedef(1)

logger(1)

logger(1B)

login(1)

logname(1)

logout(1)

look(1)

lookbib(1)

lorder(1)

ls(1)

ls(1B)

m4(1)

mac(1)

mach(1)

machid(1)

madv.so.1(1)

mail(1)

Mail(1B)

mail(1B)

mailcompat(1)

mailp(1)

mailq(1)

mailstats(1)

mailx(1)

make(1S)

makekey(1)

man(1)

mconnect(1)

mcs(1)

mdb(1)

mesg(1)

mkdir(1)

mkmsgs(1)

mkstr(1B)

mktemp(1)

moe(1)

more(1)

mp(1)

mpss.so.1(1)

msgcc(1)

msgcpp(1)

msgcvt(1)

msgfmt(1)

msggen(1)

msgget(1)

mt(1)

mv(1)

nawk(1)

nc(1)

ncab2clf(1)

ncakmod(1)

neqn(1)

netcat(1)

newform(1)

newgrp(1)

newsp(1)

newtask(1)

nice(1)

nl(1)

nm(1)

nohup(1)

notify(1)

nroff(1)

od(1)

on(1)

onintr(1)

optisa(1)

pack(1)

page(1)

pagesize(1)

pam_tty_tickets.so(1)

pargs(1)

passwd(1)

paste(1)

patch(1)

pathchk(1)

pax(1)

pcat(1)

pcred(1)

perl(1)

pfbash(1)

pfcsh(1)

pfexec(1)

pfiles(1)

pfksh(1)

pflags(1)

pfsh(1)

pftcsh(1)

pfzsh(1)

pg(1)

pgrep(1)

pkcs11_inspect(1)

pkginfo(1)

pkgmk(1)

pkgparam(1)

pkgproto(1)

pkgtrans(1)

pkill(1)

pklogin_finder(1)

pktool(1)

plabel(1)

pldd(1)

plgrp(1)

plimit(1)

pmadvise(1)

pmap(1)

popd(1)

ppgsz(1)

ppriv(1)

pr(1)

praliases(1)

prctl(1)

preap(1)

print(1)

printenv(1B)

printf(1)

priocntl(1)

proc(1)

prof(1)

profiles(1)

projects(1)

prs(1)

prt(1)

prun(1)

ps(1)

ps(1B)

psig(1)

pstack(1)

pstop(1)

ptime(1)

ptree(1)

pushd(1)

pvs(1)

pwait(1)

pwd(1)

pwdx(1)

ranlib(1)

rcapstat(1)

rcp(1)

read(1)

readonly(1)

red(1)

refer(1)

regcmp(1)

rehash(1)

remote_shell(1)

remsh(1)

renice(1)

repeat(1)

reset(1B)

return(1)

rksh(1)

rksh88(1)

rlogin(1)

rm(1)

rmail(1)

rmdel(1)

rmdir(1)

rmformat(1)

rmmount(1)

rmumount(1)

roffbib(1)

roles(1)

rpcgen(1)

rpm2cpio(1)

rsh(1)

runat(1)

rup(1)

rup(1C)

ruptime(1)

rusage(1B)

rusers(1)

rwho(1)

sact(1)

sar(1)

sccs(1)

sccs-admin(1)

sccs-cdc(1)

sccs-comb(1)

sccs-delta(1)

sccsdiff(1)

sccs-get(1)

sccs-help(1)

sccshelp(1)

sccs-prs(1)

sccs-prt(1)

sccs-rmdel(1)

sccs-sact(1)

sccs-sccsdiff(1)

sccs-unget(1)

sccs-val(1)

scp(1)

script(1)

sdiff(1)

sed(1)

sed(1B)

select(1)

set(1)

setenv(1)

setfacl(1)

setlabel(1)

setpgrp(1)

settime(1)

sftp(1)

sh(1)

shcomp(1)

shell_builtins(1)

shift(1)

shutdown(1B)

size(1)

sleep(1)

soelim(1)

sort(1)

sortbib(1)

sotruss(1)

source(1)

sparc(1)

spell(1)

spellin(1)

split(1)

srchtxt(1)

ssh(1)

ssh-add(1)

ssh-agent(1)

ssh-http-proxy-connect(1)

ssh-keygen(1)

ssh-keyscan(1)

ssh-socks5-proxy-connect(1)

stop(1)

strchg(1)

strconf(1)

strings(1)

strip(1)

stty(1)

stty(1B)

sum(1)

sum(1B)

sun(1)

suspend(1)

svcprop(1)

svcs(1)

switch(1)

symorder(1)

sys-suspend(1)

sysV-make(1)

t300(1)

t300s(1)

t4014(1)

t450(1)

tabs(1)

tail(1)

talk(1)

tar(1)

tbl(1)

tcopy(1)

tee(1)

tek(1)

telnet(1)

test(1)

test(1B)

tftp(1)

time(1)

timemanp(1)

times(1)

timesysp(1)

timex(1)

tip(1)

touch(1)

touch(1B)

tplot(1)

tput(1)

tr(1)

tr(1B)

trap(1)

troff(1)

true(1)

truss(1)

tset(1B)

tsort(1)

tty(1)

type(1)

typeset(1)

ul(1)

ulimit(1)

umask(1)

unalias(1)

uname(1)

uncompress(1)

unexpand(1)

unget(1)

unhash(1)

unifdef(1)

uniq(1)

units(1)

unix2dos(1)

unlimit(1)

unpack(1)

unset(1)

unsetenv(1)

until(1)

updatehome(1)

uptime(1)

userattr(1)

users(1B)

uucp(1C)

uudecode(1C)

uuencode(1C)

uuglist(1C)

uulog(1C)

uuname(1C)

uupick(1C)

uustat(1C)

uuto(1C)

uux(1C)

vacation(1)

val(1)

valdate(1)

valgid(1)

valint(1)

valpath(1)

valrange(1)

valstr(1)

valtime(1)

valuid(1)

valyorn(1)

vc(1)

vedit(1)

ver(1)

vgrind(1)

vi(1)

view(1)

vipw(1B)

volcheck(1)

volrmmount(1)

w(1)

wait(1)

wc(1)

what(1)

whatis(1)

whence(1)

whereis(1B)

which(1)

while(1)

who(1)

whoami(1B)

whocalls(1)

whois(1)

write(1)

xargs(1)

xgettext(1)

xstr(1)

yacc(1)

yes(1)

ypcat(1)

ypmatch(1)

yppasswd(1)

ypwhich(1)

zcat(1)

zlogin(1)

zonename(1)

zonestat(1)

cputrack

- 使用 CPU 性能计数器监视进程和 LWP 行为

用法概要

cputrack -c eventspec [-c eventspec]... [-efntvD] 
     [-N count] [-o pathname] [-T interval] command [args]
cputrack -c eventspec [-c eventspec]... -p pid [-efntvD] 
     [-N count] [-o pathname] [-T interval]
cputrack -h

描述

通过 cputrack 实用程序,可使用 CPU 性能计数器监视系统上运行的一个或一系列进程的行为。如果使用 -T 选项指定 intervalcputrack 会每隔 interval 秒对活动进行一次抽样并一直重复。如果使用 -N 选项指定 count,则会对跟踪的每个进程重复统计 count 次信息。如果未指定任何参数,将使用一秒钟的间隔。如果指定 command 和可选 argscputrack 会在监视指定的 CPU 性能事件时运行带有给定参数的命令。此外,可以使用 -p 选项指定现有进程的进程 ID。

因为 cputrack 是非特权程序,所以它遵循适用于 truss(1) 的相同限制。例如,无法跟踪 setuid(2) 可执行程序。

选项

支持下列选项:

-c eventspec

指定一组 CPU 性能计数器要监视的事件。这些事件规范的语法为:

[picn=]eventn[,attr[n][=val]][,[picn=]eventn
     [,attr[n][=val]],...,]

您可以使用 -h 选项获取可用事件和属性的列表。这会导致生成用法消息。可以不必显式分配计数器,这时 cpustat 会自动尝试选择适用的计数器。

可以按适合 strtoll(3C) 的格式以十六进制、八进制或十进制表示法表示属性值。事件规范中存在的没有显式值的属性会收到缺省值 1。没有相应计数器编号的属性将应用到规范中的所有计数器。

可通过阅读 CPU 制造商的事件文档来确定这些事件规范的语义。

可以指定多个 -c 选项,这时 cputrack 会在每个样例上的不同事件设置之间循环。

-D

启用调试模式。

-e

执行所有 exec(2)execve(2) 系统调用。

-f

执行 fork(2)fork1(2)vfork(2) 系统调用创建的所有子项。

-h

显示一条详细帮助消息,说明如何使用实用程序、如何对依赖处理器的计数器进行编程以及从何处可以找到更多详细信息。

-n

省略所有文件头输出(在 cputrack 位于流水线的开头时很有用)。

-N count

指定在退出之前可以采集的最大 CPU 性能计数器样例数。

-o outfile

指定要用于 cputrack 输出的文件。

-p pid

将该参数解释为应附加和监视进程计数器上下文的现有进程的进程 ID。

-t

显示处理器周期计数的附加列(如果在当前体系结构中可用)。

-T interval

指定 CPU 性能计数器抽样之间的间隔(以秒为单位)。间隔太小可能会导致某些样例被跳过。请参见“警告”。

-v

启用更详细的输出。

用法

操作系统会在跟踪进程时强制使用某些限制。特别是,用户无法跟踪自己无法读取其对象文件的命令;set-uid 和 set-gid 命令仅可由特权用户进行跟踪。除非由特权用户运行,否则 cputrack 会失去对 set-id 或不可读对象文件执行 exec() 的任何进程的控制权。此类进程通常会从 exec() 出发继续执行,而不考虑 cputrack

在使用 -f 选项时,系统可能用完每个用户的进程槽,因为 cputrack 会为每个被跟踪的进程运行一个控制进程。

当硬件计数器是实际样例时,cputrack 所显示的时间对应于墙上时钟时间。从与 gethrtime(3C) 相同的时基派生时间。

cputrack 实用程序会将性能计数器上下文附加到它所检查的每个进程。通过此上下文,可在系统上的不同进程之间复用性能计数器,但不能将其与 cpustat(1M) 实用程序同时使用。

cpustat 实用程序的某个实例正在运行中,则进一步运行 cputrack 的尝试将失败,直到所有 cpustat 实例终止为止。

有时,cputrack 会非常灵活并显示足够的统计信息,如此可不必将监测代码添加到应用程序中。但是,有时需要更多控制。因为应用程序本身和由 cputrack 注入到应用程序中的代理 LWP 使用相同的性能计数器上下文,所以应用程序可能会与计数器上下文进行交互以实现某些值得关注的功能。请参见 cpc_enable(3CPC)

通过 -t 选项启用的处理器周期计数始终适用于用户模式和系统模式,无论应用于性能计数器寄存器的设置为何。

根据设计,通过 nawk(1)perl(1) 可以很容易地解析 cputrack 的输出,从而允许通过在脚本中嵌入 cputrack 来构建性能工具。此外,也可以使用构建 cputrack 所依据的同一 API 或使用 libcpc(3LIB)libpctx(3LIB) 的功能直接构造这些工具。请参见 cpc(3CPC)

虽然 cputrack 使用性能计数器上下文来维护每个 LWP 的各个性能计数器值,但某些可以计数的事件会不可避免地受到系统上发生的其他活动的影响,尤其是进程间共享的受限资源(例如,高速缓存未命中率)。对于此类事件,使用 cpustat(1M) 监测整体系统行为也可能会很值得关注。

对于 -T interval 选项,如果将 interval 指定为零,则不会执行定期抽样。仅当进程创建或销毁 LWP 或者调用 fork(2)exec(2)exit(2) 时,才对性能计数器进行抽样。

示例

SPARC

示例 1 使用性能计数器对时钟周期进行计数

在本示例中,将在包含 UltraSPARC-III+ 处理器的计算机上使用该实用程序。计数器被设置为对处理器时钟周期和运行 sleep(1) 命令时在用户模式中分发的指令进行计数。

example% cputrack –c pic0=Cycle_cnt,pic1=Instr_cnt sleep 10
   

  time lwp      event      pic0      pic1
 1.007   1       tick    765308    219233
 2.007   1       tick         0         0
 4.017   1       tick         0         0
 6.007   1       tick         0         0
 8.007   1       tick         0         0
10.007   1       tick         0         0
10.017   1       exit    844703    228058
  

示例 2 对外部高速缓存引用和未命中进行计数

本示例显示了在 UltraSPARC 计算机上执行简单 shell 脚本的 fork()exec() 时的更详细输出。计数器正在测量外部高速缓存引用和外部高速缓存未命中的数量。请注意,在没有歧义的情况下可以不必显式指定 pic0pic1 名称。

example% cputrack –fev –c EC_ref,EC_hit /bin/ulimit –c
   

time    pid lwp      event      pic0      pic1
0.007 101142   1   init_lwp    805286     20023 
0.023 101142   1       fork                     # 101143
0.026 101143   1   init_lwp   1015382     24461 
0.029 101143   1   fini_lwp   1025546     25074 
0.029 101143   1       exec   1025546     25074 
0.000 101143   1       exec                     \
                                      # '/usr/bin/sh /usr/bin/basename\ 
                                         /bin/ulimit'
0.039 101143   1   init_lwp   1025546     25074 
0.050 101143   1   fini_lwp   1140482     27806 
0.050 101143   1       exec   1140482     27806 
0.000 101143   1       exec                     # '/usr/bin/expr \
   //bin/ulimit : \(.*[^/]\)/*$ : .*/\(..*\) : \(.*\)$ | //bin/ulimi'
0.059 101143   1   init_lwp   1140482     27806 
0.075 101143   1   fini_lwp   1237647     30207 
0.075 101143   1       exit   1237647     30207 
unlimited
0.081 101142   1   fini_lwp    953383     23814 
0.081 101142   1       exit    953383     23814 

x86

示例 3 对指令进行计数

本示例显示了为了在 Pentium III 计算机上输出日期在应用程序中和内核中执行的指令数:

example% cputrack –c inst_retired,inst_retired,nouser1,sys1 date
   

   time lwp      event      pic0      pic1
Fri Aug 20 20:03:08 PDT 1999
  0.072   1       exit    246725    339666

示例 4 对 TLB 命中进行计数

本示例显示了如何在 Pentium 4 计算机上使用特定于处理器的属性对 TLB 命中进行计数:

example% cputrack -c ITLB_reference,emask=1 date
   

    time lwp      event      pic0
      Fri Aug 20 20:03:08 PDT 1999
   0.072   1       exit    246725

警告

通过运行 cpustat(1M) 实用程序的任何实例,强行使计算机上的所有现有性能计数器上下文无效。这可能会导致 cputrack 命令的所有调用因未知错误而过早退出。

如果在其 CPU 性能计数器不受 Solaris 支持的系统上调用 cpustat,将显示以下消息:

cputrack: cannot access performance counters - Operation not applicable

此错误消息表明 cpc_open() 已失败且已记录在 cpc_open(3CPC) 中。查看此文档以获取有关该问题及其可能的解决方案的更多信息。

如果请求的时间间隔较短,cputrack 可能无法达到所需的抽样率。在这种情况下,可能会丢弃某些样例。

属性

有关下列属性的描述,请参见 attributes(5)

属性类型
属性值
可用性
diagnostic/cpu-counters
接口稳定性
Committed(已确定)

另请参见

nawk(1)perl(1)proc(1)truss(1)prstat(1M)cpustat(1M)exec(2)exit(2)fork(2)setuid(2)vfork(2)gethrtime(3C)strtoll(3C)cpc(3CPC)cpc_bind_pctx(3CPC)cpc_enable(3CPC)cpc_open(3CPC)libcpc(3LIB)libpctx(3LIB)proc(4)attributes(5)