(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014

Amazon Web Services
Amazon Web ServicesAmazon Web Services
November 12, 2014 | Las Vegas, NV 
PFC306 
Brendan Gregg, Performance Engineering, Netflix
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
S3 
EC2 
Cassandra 
EVCache 
Applications 
(Services) 
ELB 
Elasticsearch 
SQS 
SES
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
Start 
i2 
Select memory to cacheworking set 
Find best 
balance
Instance 
Instance 
Instance 
… 
ASG-v011 
Instance 
Instance 
Instance 
… 
ASG-v010 
ASG Clusterprod1 
Canary 
ELB
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
Select instance families 
Select resources 
From any desired 
resource, see 
types & cost
eg, 8 vCPU:
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
Headroom 
Unacceptable 
Acceptable
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
Services 
Cost per hour
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
# schedtool–B PID
vm.swappiness= 0 # from 60
# echo never > /sys/kernel/mm/transparent_hugepage/enabled # from madvise
vm.dirty_ratio= 80 # from 40 
vm.dirty_background_ratio= 5 # from 10 
vm.dirty_expire_centisecs= 12000 # from 3000 
mount -o defaults,noatime,discard,nobarrier…
/sys/block/*/queue/rq_affinity2 
/sys/block/*/queue/schedulernoop 
/sys/block/*/queue/nr_requests256 
/sys/block/*/queue/read_ahead_kb256 
mdadm–chunk=64 ...
net.core.somaxconn= 1000 
net.core.netdev_max_backlog= 5000 
net.core.rmem_max= 16777216 
net.core.wmem_max= 16777216 
net.ipv4.tcp_wmem = 4096 12582912 16777216 
net.ipv4.tcp_rmem = 4096 12582912 16777216 
net.ipv4.tcp_max_syn_backlog = 8096 
net.ipv4.tcp_slow_start_after_idle = 0 
net.ipv4.tcp_tw_reuse = 1 
net.ipv4.ip_local_port_range = 10240 65535 
net.ipv4.tcp_abort_on_overflow = 1 # maybe
echo tsc> /sys/devices/system/clocksource/clocksource0/current_clocksource
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
Resource 
Utilization 
(%) 
X
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
Application 
System Libraries 
System Calls 
Kernel 
Devices
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
$sar -n TCP,ETCP,DEV 1 
Linux 3.2.55 (test-e4f1a80b) 08/18/2014 _x86_64_(8 CPU) 
09:10:43 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 
09:10:44 PM lo14.00 14.00 1.34 1.34 0.00 0.00 0.00 
09:10:44 PM eth0 4114.00 4186.00 4537.46 28513.24 0.00 0.00 0.00 
09:10:43 PM active/s passive/s iseg/s oseg/s 
09:10:44 PM 21.00 4.00 4107.00 22511.00 
09:10:43 PM atmptf/s estres/s retrans/s isegerr/s orsts/s 
09:10:44 PM 0.00 0.00 36.00 0.00 1.00 
[…]
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
Stack frame 
Mouse-over 
frames toquantify 
Ancestry
# gitclone https://github.com/brendangregg/FlameGraph 
# cd FlameGraph 
# perfrecord -F 99 -ag--sleep 60 
# perfscript | ./stackcollapse-perf.pl| ./flamegraph.pl> perf.svg
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
Broken 
Java stacks 
(missing 
frame 
pointer) 
Kernel 
TCP/IP 
GC 
Idle 
thread 
Time 
Locks 
epoll
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
# ./iosnoop–ts 
TracingblockI/O. Ctrl-C to end. 
STARTsENDsCOMM PID TYPE DEV BLOCK BYTES LATms 
5982800.302061 5982800.302679 supervise1809 W 202,1 17039600 4096 0.62 
5982800.302423 5982800.302842 supervise1809 W 202,1 17039608 4096 0.42 
5982800.304962 5982800.305446 supervise1801 W 202,1 17039616 4096 0.48 
5982800.305250 5982800.305676 supervise1801 W 202,1 17039624 4096 0.43 
[…] 
# ./iosnoop–h 
USAGE: iosnoop[-hQst] [-d device] [-iiotype] [-p PID] [-n name] [duration] 
-d device # device string (eg, "202,1) 
-iiotype# match type (eg, '*R*' for all reads) 
-n name # process name to match on I/O issue 
-p PID # PID to match on I/O issue 
-Q # include queueingtime in LATms 
-s # include start time of I/O (s) 
-t # include completion time of I/O (s) 
[…]
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
# perfrecord –e skb:consume_skb–ag--sleep 10 
# perfreport 
[...] 
74.42% swapper [kernel.kallsyms] [k] consume_skb 
| 
---consume_skb 
arp_process 
arp_rcv 
__netif_receive_skb_core 
__netif_receive_skb 
netif_receive_skb 
virtnet_poll 
net_rx_action 
__do_softirq 
irq_exit 
do_IRQ 
ret_from_intr 
[…] 
Summarizing stack traces for atracepoint 
perf_eventscan do many things, it is hard to pick just one example
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
ec2-guest# ./showboost 
CPU MHz : 2500 
Turbo MHz : 2900 (10 active) 
Turbo Ratio : 116% (10 active) 
CPU 0 summary every 5 seconds... 
TIME C0_MCYC C0_ACYC UTIL RATIO MHz 
06:11:35 6428553166 7457384521 51% 116% 2900 
06:11:40 6349881107 7365764152 50% 115% 2899 
06:11:45 6240610655 7239046277 49% 115% 2899 
[...] 
Real CPU MHz
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
Region 
App 
Breakdowns 
Metrics 
Options 
Interactive 
Graph 
Summary Statistics
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
Utilization 
Saturation 
Errors 
Per device 
Breakdowns
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
http://aws.amazon.com/ec2/instance-types/ http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.htmlhttp://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking.htmlhttp://www.slideshare.net/cpwatson/cpn302-yourlinuxamioptimizationandperformancehttp://www.brendangregg.com/blog/2014-09-27/from-clouds-to-roots.htmlhttp://www.brendangregg.com/blog/2014-05-07/what-color-is-your-xen.htmlhttp://www.brendangregg.com/linuxperf.htmlhttp://www.slideshare.net/brendangregg/linux-performance-tools-2014http://www.brendangregg.com/USEmethod/use-linux.htmlhttp://www.brendangregg.com/blog/2014-06-12/java-flame-graphs.htmlhttps://github.com/brendangregg/FlameGraphhttps://github.com/brendangregg/perf-tools
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
Talk 
Time 
Title 
PFC-305 
Wednesday, 1:15pm 
Embracing Failure: Fault Injection and ServiceReliability 
BDT-403 
Wednesday, 2:15pm 
Next Generation Big Data Platform at Netflix 
PFC-306 
Wednesday, 3:30pm 
Performance Tuning EC2 
DEV-309 
Wednesday, 3:30pm 
From Asgardto Zuul, How Netflix’s proven Open Source Tools can accelerateand scale your services 
ARC-317 
Wednesday, 4:30pm 
Maintaining a ResilientFront-Door at Massive Scale 
PFC-304 
Wednesday, 4:30pm 
Effective Inter-process Communicationsin the Cloud: The Pros and Cons of Micro Services Architectures 
ENT-209 
Wednesday, 4:30pm 
Cloud Migration, Dev-Ops and Distributed Systems 
APP-310 
Friday, 9:00am 
Scheduling using Apache Mesosin the Cloud
http://bit.ly/awsevals
1 of 81

More Related Content

What's hot(20)

OSv at Cassandra SummitOSv at Cassandra Summit
OSv at Cassandra Summit
Don Marti344.6K views
Solr on Docker - the Good, the Bad and the UglySolr on Docker - the Good, the Bad and the Ugly
Solr on Docker - the Good, the Bad and the Ugly
Sematext Group, Inc. 15.5K views
OOPs, OOMs, oh my! Containerizing JVM appsOOPs, OOMs, oh my! Containerizing JVM apps
OOPs, OOMs, oh my! Containerizing JVM apps
Sematext Group, Inc. 1.5K views
Container Orchestration with Amazon ECSContainer Orchestration with Amazon ECS
Container Orchestration with Amazon ECS
Amazon Web Services926 views
Ceph Performance Profiling and ReportingCeph Performance Profiling and Reporting
Ceph Performance Profiling and Reporting
Ceph Community 638 views
Ceph Day Beijing - Ceph RDMA UpdateCeph Day Beijing - Ceph RDMA Update
Ceph Day Beijing - Ceph RDMA Update
Danielle Womboldt390 views

Similar to (PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014

Debugging Ruby SystemsDebugging Ruby Systems
Debugging Ruby SystemsEngine Yard
4.3K views94 slides
Debugging RubyDebugging Ruby
Debugging RubyAman Gupta
7.2K views46 slides

Similar to (PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014(20)

More from Amazon Web Services(20)

Costruire Applicazioni Moderne con AWSCostruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWS
Amazon Web Services2.8K views
Open banking as a serviceOpen banking as a service
Open banking as a service
Amazon Web Services7K views
Computer Vision con AWSComputer Vision con AWS
Computer Vision con AWS
Amazon Web Services3.1K views
Tools for building your MVP on AWSTools for building your MVP on AWS
Tools for building your MVP on AWS
Amazon Web Services2.4K views
How to Build a Winning Pitch DeckHow to Build a Winning Pitch Deck
How to Build a Winning Pitch Deck
Amazon Web Services1.4K views
Building a web application without serversBuilding a web application without servers
Building a web application without servers
Amazon Web Services1.4K views
Fundraising EssentialsFundraising Essentials
Fundraising Essentials
Amazon Web Services887 views
Introduzione a Amazon Elastic Container ServiceIntroduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container Service
Amazon Web Services2.7K views

(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014