Performance*Co,Pilot*(PCP)
hbstyle((2015/04/09)(2(Yoshikawa(Ryota((@rrreeeyyy) 1
Performance*Co,Pilot*(PCP)*1
• System(performance(and(analysis(framework.
• Fully(distributed,(plug;in(based(architecture
• Par>cularly(well(suited(to(centralized(analysis(of(complex(
environments(and(systems
• Custom(performance(metrics(can(be(added(using(the(C,(C++,(
Perl,(and(Python(interfaces.
1
"h$p://pcp.io/"(Copyright"©"200052004"Silicon"Graphics"Inc,"200752010"Aconex,"2012$2015&Red&Hat)
hbstyle((2015/04/09)(2(Yoshikawa(Ryota((@rrreeeyyy) 2
Architecture
hbstyle((2015/04/09)(2(Yoshikawa(Ryota((@rrreeeyyy) 3
pmcd%(metrics%collector)%2
• Collector)used)by)the)pcp.
• Accepts)connec4ons)from)client)applica4ons)running)either)on)
the)same)machine)or)remotely)and)provides)them)with)metrics)
and)other)related)informa4on)from)the)machine)that)pmcd)is)
execu4ng)on.
• Delegates)most)of)this)request)servicing)to)a)collec4on)of)
Performance)Metrics)Domain)Agents)(or)just)agents)
2
"h$p://www.pcp.io/man/man1/pmcd.1.html
hbstyle((2015/04/09)(2(Yoshikawa(Ryota((@rrreeeyyy) 4
pmda%(metrics%agent)%3
• Responsible+for+a+set+of+performance+metrics,+in+the+sense+that+it+
must+respond+to+requests+from+pmcd(1)+for+informa:on+about+
performance+metrics,+instance+domains,+and+instan:ated+values.+
• pmcd+process+generates+requests+on+behalf+of+performance+tools
• Provides+implementa:ons+in+C,+Perl+and+Python.+
3
"h$p://linux.die.net/man/3/pmda
hbstyle((2015/04/09)(2(Yoshikawa(Ryota((@rrreeeyyy) 5
pmlogger((metrics(logger)(4
• Creates(the(archive(logs(of(performance(metric(values(that(may(
be(played(back(by(other(pcp(tools.
# config file
log mandatory on once { hinv.ncpu hinv.ndisk }
log mandatory on every 10 minutes {
disk.all.write
disk.all.read
network.interface.in.packets [ "et0" ]
network.interface.out.packets [ "et0" ]
nfs.server.reqs [ "lookup" "getattr" "read" "write" ]
}
log advisory on every 30 minutes {
environ.temp
pmcd.pdu_in.total
pmcd.pdu_out.total
}
4
"h$p://www.pcp.io/man/man1/pmlogger.1.html
hbstyle((2015/04/09)(2(Yoshikawa(Ryota((@rrreeeyyy) 6
pmie%(metrics%inference%engine)%5
• Automated*filtering*and*reasoning*about*performance.
// Any disk performing more than 40 I/Os per second, sustained over
// at least 30 seconds is probably busy
delta = 30 seconds;
disk_busy =
some_inst (
$disk.dev.total > 40 count/sec
)
-> shell 15 mins "Mail -s 'Heavy sustained disk traffic' sysadm </dev/null";>
// hold off repetition of the action for 15 mins.
5
"h$p://www.pcp.io/pcp-gui.git/man/html/lab.pmie.html
hbstyle((2015/04/09)(2(Yoshikawa(Ryota((@rrreeeyyy) 7
Installa'on)6
• Binary(packages(for(Linux((deb(and(rpm(formats),(Mac(OS(X,(
Solaris(and(Windows(are(made(available
• Available(on(all(recent(distribuDon(releases
• Debian/Fedora/RHEL/Ubuntu
## ex.)
# yum install pcp
# chkconfig pmcd on
# service pmcd start
# chkconfig pmlogger on
# service pmlogger start
6
"h$p://pcp.io/docs/installa2on.html
hbstyle((2015/04/09)(2(Yoshikawa(Ryota((@rrreeeyyy) 8
GUI$Interfaces
hbstyle((2015/04/09)(2(Yoshikawa(Ryota((@rrreeeyyy) 9
pmchart((GUI(client)(7
7
"h$p://pcp.io/docs/lab.pmchart.html
hbstyle((2015/04/09)(2(Yoshikawa(Ryota((@rrreeeyyy) 10
Ne#lix/vector-8
8
"h$ps://github.com/Ne4lix/vector
hbstyle((2015/04/09)(2(Yoshikawa(Ryota((@rrreeeyyy) 11
pcp#webjs(grafana)09
9
"h$ps://github.com/performancecopilot/pcp8webjs
hbstyle((2015/04/09)(2(Yoshikawa(Ryota((@rrreeeyyy) 12
Demo
• pmcd
• pmda
• pmlogger
• pmchart
• vector
hbstyle((2015/04/09)(2(Yoshikawa(Ryota((@rrreeeyyy) 13
PCP's%Tes(monial%10
• aconex
• University/at/buffalo
• Ne5lix
• MessageMedia
• RedHat
10
#h%p://pcp.io/tes0monials.html
hbstyle((2015/04/09)(2(Yoshikawa(Ryota((@rrreeeyyy) 14

Performance Co-Pilot