AWS 云上Linux實(shí)例優(yōu)化_第1頁
AWS 云上Linux實(shí)例優(yōu)化_第2頁
AWS 云上Linux實(shí)例優(yōu)化_第3頁
AWS 云上Linux實(shí)例優(yōu)化_第4頁
AWS 云上Linux實(shí)例優(yōu)化_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、AWS 云上Linux實(shí)例優(yōu)化技術(shù)創(chuàng)新,變革未來AWS 全球基礎(chǔ)設(shè)施13 個(gè)區(qū)域、35 個(gè)可用區(qū)、56 個(gè)邊緣站點(diǎn)ENTERPRISEAPPSDEVELOPMENT & OPERATIONSMOBILE SERVICESAPP SERVICESANALYTICSMachine LearningElastic SearchVirtual DesktopsSharing & CollaborationCorporate EmailBackupQueuing & NotificationsWorkflowSearchEmailTranscodingOne-click App DeploymentId

2、entitySyncSingle Integrated ConsolePushNotificationsDevOps Resource ManagementApplication Lifecycle ManagementContainersTriggersResource TemplatesTECHNICAL & BUSINESSSUPPORTAccount ManagementSupportProfessional ServicesTraining & CertificationSecurity & Pricing ReportsPartnerEcosystemSolutions Archi

3、tectsMARKETPLACEBusiness AppsBusiness IntelligenceDatabasesDevOps ToolsNetworkingSecurityStorageRegionsAvailability ZonesPoints of PresenceINFRASTRUCTURECORE SERVICESComputeVMs, Auto- scaling, & Load BalancingStorageObject, Blocks, Archival, Import/ExportDatabasesRelational, NoSQL, Caching, Migratio

4、nNetworkingVPC, DX, DNSCDNAccess ControlIdentity ManagementKey Management & StorageMonitoring & LogsAssessment and reportingResource & Usage AuditingSECURITY & COMPLIANCEConfiguration ComplianceWeb application firewallHYBRID ARCHITECTUREData BackupsIntegrated App DeploymentsDirect ConnectIdentity Fe

5、derationIntegrated Resource ManagementIntegrated NetworkingAPIGatewayIoTRules EngineDevice ShadowsDevice SDKsRegistryDevice GatewayData WarehousingBusiness IntelligenceHadoop/ SparkStreaming Data AnalysisStreaming Data CollectionMobile AnalyticsAWS 廣泛的云計(jì)算服務(wù)*Gartner, Magic Quadrant for Cloud Infrastr

6、ucture as a Service, Worldwide, Leong, Lydia, Petri, Gregor, Gill, Bob, Dorosh, Mike, August 32016This graphic was published by Gartner, Inc. as part of a larger research document and should be evaluated in the context of the entire document. The Gartner document is available upon request from AWS :

7、 /doc/reprints?id=1-2G2O5FC&ct=150519&st=sbGartner does not endorse anyvendor, product or service depicted in its research publications, and does not advise technology users to select only those vendors with the highest ratings or other designation. Gartner research publications consist of the opini

8、ons of Gartners research organization and should not be construed as statements of fact. Gartner disclaims all warranties, expressed or implied, with respect to this research, including any warranties ofmerchantability or fitness for a particular purpose. Gartner 云計(jì)算 IaaS 魔力象限Amazon Elastic Compute

9、Cloud(EC2) - 在云端的彈性 虛擬服務(wù)器AWS全球區(qū)域中的 實(shí)體服務(wù)器虛擬機(jī)1虛擬機(jī)2虛擬機(jī)n虛擬層 宿主機(jī)Amazon EC2 誕生于十年前第一代, 僅有一種類型與大小 m1.small (1 vCPU, 1.7 GiB 內(nèi)存, 160 GB 存儲(chǔ))僅支持 Linux 操作系統(tǒng)僅支持按需 (On-Demand) 付費(fèi)的方式20062008201020142016m1.smallm1.large m1.xlargec1.xlarge c1.mediumm2.2xlarge m2.4xlargecc1.4xlarget1.micro m2.xlargecg1.4xlargecc2.8x

10、large2012hi1.4xlargem3.2xlarge m3.xlargem1.mediumhs1.8xlargec3.xlarge c3.largec3.8xlarge c3.4xlarge c3.2xlargei2.2xlarge i2.4xlarge i2.4xlargem3.large m3.mediumcr1.8xlarge g2.2xlarger3.xlarge r3.larger3.8xlargec4.2xlarge c4.xlarge c4.largec4.4xlarger3.2xlarger3.4xlarge c4.8xlargei2.xlarget2.micro d2

11、.xlarget2.small d2.2xlarge t2.med d2.4xlarged2.8xlargeg2.8xlarget2.large m4.large m4.xlarge m4.2xlarge m4.4xlargem4.10 xlargeAmazon EC2 實(shí)例的歷史今天,豐富的操作系統(tǒng)選擇免費(fèi)的 OS AMIAmazon Linux、CentOS、 FreeBSD、Ubuntu、Debian 等付費(fèi) OS AMI (按小時(shí)付費(fèi))Windows ServerRed Hat Enterprise LinuxSUSE Linux EnterpriseMarketplaceEC2 實(shí)例

12、: 家族與類型T2、M4、M3C4、C3X1、R3 G2通用類型: 計(jì)算優(yōu)化: 內(nèi)存優(yōu)化: GPU:存儲(chǔ)優(yōu)化:高 I/O:I2密集存儲(chǔ):D2實(shí)例API網(wǎng)絡(luò)EC2EC2購買選項(xiàng)Amazon 彈性計(jì)算云服務(wù)Guest 1Guest 2Hypervisor Host ServerGuest nAmazon EC2 實(shí)例關(guān)于Amazon EC2 的性能定義 系統(tǒng)的性能 和它在不同的工作負(fù)載下 的特征Amazon EC2 實(shí)例的 性能表現(xiàn) 如何,以及 如何提供靈活性和敏捷性如何 最大限度 的利用好Amazon EC2 實(shí)例關(guān)于 性能 的定義獲取服務(wù)器用以完成所需的任務(wù)基于不同的任務(wù),性能的度量有很大的不

13、同獲得一臺(tái)服務(wù)器?性能的表現(xiàn),取決于不同的視角:響應(yīng)時(shí)間 吞吐量一致性性能的定義: 從問題的視角出發(fā)ApplicationSystem librariesSystem callsKernelDevicesWorkload影響性能的因素資源影響性能的因素關(guān)鍵指標(biāo)CPUCPU 插槽、CPU 核的數(shù)量、時(shí) 鐘頻率, CPU bursting 能力CPU 利用率、運(yùn)行隊(duì)列長度內(nèi)存內(nèi)存容量空閑內(nèi)存、匿名分頁、線程交換網(wǎng)絡(luò)最大帶寬、包速率接收吞吐量、最大帶寬下傳輸吞 吐量磁盤每秒鐘完成的輸入輸出操 作,吞吐量等待隊(duì)列長度、設(shè)備利用率、設(shè) 備錯(cuò)誤資源的利用率對于給定的性能,有效的資源被使用的如何?當(dāng)處于在1

14、00%的利用率的情況下,則不能接受任 何更多的工作低利用率可以顯示出購買的資源多于所需挑選一個(gè)適合的實(shí)例等同于資源的性能優(yōu)化獲得新的實(shí)例前盡早的釋放不需要的實(shí)例找到一個(gè)理想的實(shí)例類型和工作負(fù)載的組合實(shí)例選擇 = 性能優(yōu)化實(shí)例選擇流程圖Starti2Select memory to cache working setFind best balance來源:Netflix例子: Amazon EC2 C4 實(shí)例最新一代的計(jì)算優(yōu)化實(shí)例,最高性能的處理器和最 高的性價(jià)比定制的 Intel E5-2666 v3 at 2.9 GHz可控制 P-state 和 C-state 配置型號(hào)vCPU內(nèi)存(GiB

15、)專用EBS帶寬 (Mbps)c4.large23.75500c4.xlarge47.5750c4.2xlarge8151,000c4.4xlarge16302,000c4.8xlarge36604,000Amazon EC2 的 技術(shù) 特性CPU 指令核保護(hù)等級(jí)CPU 有至少兩個(gè)保護(hù)等級(jí)不能在用戶模式下執(zhí)行特權(quán)指令來保護(hù)系統(tǒng)。應(yīng)用程 序利用系統(tǒng)調(diào)用訪問內(nèi)核KernelApplication例子: Web 應(yīng)用的系統(tǒng)調(diào)用X86 CPU 虛擬化: 在 Intel VT-x 之前二進(jìn)制翻譯特權(quán)指令半虛擬化 (PV)PV需要穿透VMM,增加了延遲系統(tǒng)調(diào)用綁定的應(yīng)用程序受到嚴(yán)重的影響KernelVMM

16、ApplicationPVVMMKernel Application硬件輔助的虛擬化 (HVM)PV-HVM 使用PV 驅(qū)動(dòng),巧妙的處理了那些較慢 的模擬操作:例如:網(wǎng)絡(luò)和塊I/OPV-HVMX86 CPU 虛擬化: 在 Intel VT-x 之后Xen 虛擬化模式性能最好的是最新的 Xen 所支持的 PV/HVM 混合模式在 Amazon EC2上: “HVM” = “PVHVM”,如果Linux kernel 支持 “PV” = “PV”當(dāng)前在Amazon EC2 上最快的模式就是: “HVM” (PVHVM)未來最快的應(yīng)該是 PVHXen 虛擬化模式提示:使用PV-HVM AMIs 和

17、EBS關(guān)于 Timekeeping在一個(gè)實(shí)例中的 Timekeeping 很容易讓人感到困惑gettimeofday(), clock_gettime(), QueryPerformanceCounter()TSCCPU counter, accessible from userspaceRequires calibration, vDSOInvariant on Sandy Bridge+ processorsXen 的 pvclock; 不支持 vDSO在當(dāng)前這一代的實(shí)例中, 使用 TSC 作為時(shí)鐘源(clocksource)SR-IOV單根 I/O 虛擬化 (SR-IOV)PCIe 設(shè)備

18、提供的虛擬化實(shí)例AWS “增強(qiáng)聯(lián)網(wǎng)”適用于部分實(shí)例類型:C3、C4、R3、I2、M4、D2、X1僅僅用于 VPC 環(huán)境下性能提升:提高網(wǎng)絡(luò)吞吐量降低網(wǎng)絡(luò)平均往返時(shí)延 (RTT) 和減少抖動(dòng)提高取決于實(shí)例類型和網(wǎng)絡(luò)Linux 內(nèi)核 調(diào)優(yōu)調(diào)優(yōu)的目標(biāo)1、CPU Scheduler2、Virtual Memory3、Huge Pages4、File System5、Storage I/O6、Networking7、Hypervisor (Xen)1. CPU Scheduler調(diào)整項(xiàng):Scheduler class、priorities、migration latency、tasksets用途:一些應(yīng)

19、用得益于通過使用 taskset(1)、numactl(8)、cgroups以及 優(yōu)化 sched_migration_cost_ns 而減少進(jìn)程 遷移一些 Java 應(yīng)用得益于 SCHED_BATCH 減少上下文切換# schedtool B PID# schedtool -R -p 20 2. Virtual Memory調(diào)整項(xiàng):swappiness、overcommit、OOM 用途:swappiness 設(shè)置為0用以禁用交換,停止文件頁面 緩存以釋放更多的內(nèi)存# from 60vm.swappiness = 0# Set the swappiness value as root ech

20、o 10 /proc/sys/vm/swappiness# Alternatively, run this sysctl -w vm.swappiness=103. Huge Pages內(nèi)存頁面尺寸為2M 或者 4M,而不是常見的 4K。降低各種CPU開銷并且提高M(jìn)MU 頁面到緩存 的轉(zhuǎn)換調(diào)整項(xiàng):顯性的使用huge page、transparenthuge pages (THPs)用途:THPs (內(nèi)核中啟用),依賴于工作負(fù)載和CPU,有時(shí)候可以提高性能 (5%CPU負(fù)荷), 但是有時(shí)候會(huì)影響性能 (25% CPU 負(fù)荷, 當(dāng)%usr, 以及 %sysrefrag)。禁用的方法:# grep

21、Huge /proc/meminfoHugepagesize: 2048 kB# echo never /sys/kernel/mm/transparent_hugepage/enabled# from madvise# java -XX:+UseLargePages4. File System調(diào)整項(xiàng):頁面緩存的刷新,文件系統(tǒng)的類型和可調(diào)整的參數(shù) (例如: ZFS)用途:頁面緩存刷新的行為可以調(diào)整為: background flush earlier、 aggressive flush later禁止訪問時(shí)間戳和其它的選項(xiàng),依賴于具體的文件系統(tǒng)vm.dirty_ratio= 80#from40

22、vm.dirty_background_ratio= 5#from10vm.dirty_expire_centisecs= 12000#from3000mount -o defaults,noatime,discard,nobarrier5. Storage I/O調(diào)整項(xiàng):Read ahead size、number of in-flight requests、I/O scheduler、 volume stripe width用途:一些應(yīng)用(例如 Cassandra)對read ahead size 非常敏感SSDs 可以使用更好的 “noop” scheduler (非缺省的設(shè)置)調(diào)整ch

23、unk size 和 stripe width 以匹配任務(wù)負(fù)載noop/sys/block/*/queue/rq_affinity 2/sys/block/*/queue/scheduler/sys/block/*/queue/nr_requests 256/sys/block/*/queue/read_ahead_kb256 mdadm chunk=64 .6. Networking調(diào)整項(xiàng): TCP buffer sizes、TCP backlog、device backlog、TCP reuse 用途:net.core.somaxconn = 1000dev_max_backlog= 50

24、00net.core.rmem_max= 16777216net.core.wmem_max= 16777216net.ipv4.tcp_wmem= 4096 12582912 16777216net.ipv4.tcp_rmem= 4096 12582912 16777216net.ipv4.tcp_max_syn_backlog = 8096net.ipv4.tcp_slow_start_after_idle = 0net.ipv4.tcp_tw_reuse = 1net.ipv4.ip_local_port_range = 10240net.ipv4.tcp_abort_on_overfl

25、ow= 165535# maybe7. Hypervisor (Xen)調(diào)整項(xiàng):PV/HVM (AMI 提供)內(nèi)核 clocksource,從慢到快: hpet、xen、tsc用途:調(diào)優(yōu)clocksource ,設(shè)置為TSC (小心時(shí)鐘漂移)。較好的情 況下 CPU 用量減少 30%, 并且應(yīng)用程序的平均延遲降低了 43%# cat/sys/devices/system/clocksource/clocksource0/current_clocksource Xen#echo tsc /sys/devices/system/clocksource/clocksource0/current_cl

26、ocksource提示: 使用TSC 作為時(shí)鐘源性能 監(jiān)測例子:Web 應(yīng)用在Apache上安裝MediaWik,并帶有140頁的內(nèi)容負(fù)載隨時(shí)間間隔而增加例子:Web 應(yīng)用內(nèi)存使用統(tǒng)計(jì)例子:Web 應(yīng)用磁盤使用統(tǒng)計(jì)例子:Web 應(yīng)用網(wǎng)絡(luò)使用統(tǒng)計(jì)例子:Web 應(yīng)用CPU 使用統(tǒng)計(jì)無效的調(diào)優(yōu)“打地鼠”式的優(yōu)化:隨機(jī)的調(diào)整參數(shù)直到問題消失“街燈”式的優(yōu)化:1.選擇監(jiān)控工具只使用自己熟悉的從互聯(lián)網(wǎng)找工具隨機(jī)選擇工具2.運(yùn)行工具3.觀察問題有效調(diào)優(yōu)基于觀察,數(shù)據(jù)驅(qū)動(dòng):對系統(tǒng)負(fù)荷以及資源使用情況進(jìn)行觀察分析結(jié)果:確定使用的硬件軟件的組件研究組件的可調(diào)整參數(shù)量化預(yù)期的改進(jìn)調(diào)優(yōu),實(shí)驗(yàn)以及確定目標(biāo)USE 方法U

27、SE 方法 對每一項(xiàng)硬件和軟件資源,檢查它們的:利用率(Utilization)飽和度(Saturation)錯(cuò)誤數(shù)(Errors)如果,資源約束顯示為高飽和度或者高利用率調(diào)整或者改變實(shí)例類型了解資源的可調(diào)參數(shù)USE 方法幫我們發(fā)現(xiàn)問題,然后使用工具解決問題實(shí)例之外的考慮實(shí)例免責(zé)復(fù)雜的性能問題沒有明顯的原因,也許是實(shí)例的問題?有時(shí)候分析之后確認(rèn)與實(shí)例有關(guān)。但是大多數(shù)與應(yīng)用有關(guān) (80/20 原則)80/20 原則:80%:通過提高應(yīng)用程序的重構(gòu)和優(yōu)化獲得改進(jìn)20%:OS 調(diào)優(yōu)、實(shí)例或者基礎(chǔ)架構(gòu)的改善20/80 延遲異常原則:20%::延遲異常是由程序代碼引起80%:是由實(shí)例、 crontab、

28、網(wǎng)絡(luò)以及 JVM GC 等引起分析的視角工作負(fù)載分析“自頂向下”分析從應(yīng)用的附載著手 然后,分解請求時(shí)間資源分析:“自底向上”分析從資源的性能開始著手,然后是工作負(fù)載 例如:USE 方法應(yīng)用于負(fù)載的特征上ApplicationSystem LibrariesSystem CallsKernelDevicesLinux 性能工具Statistical 工具Profiling 工具Tracing 工具Hardware 計(jì)數(shù)器1. Statistical 工具最常用的有 vmstat、pidstat,、sar 等$ sar -n TCP,ETCP,DEV 1Linux 3.2.55 (test-e4

29、f1a80b)08/18/2014_x86_64_(8 CPU)rxcmp/s txcmp/s09:10:43 PM09:10:44 PM09:10:44 PMIFACErxpck/s lo14.00eth04114.00txpck/s 14.004186.00rxkB/stxkB/s1.341.344537.46 28513.240.000.000.000.00rxmcst/s0.000.0009:10:43 PM09:10:44 PMactive/s passive/s21.004.00iseg/soseg/s 4107.0022511.00atmptf/s0.00estres/s0.00

30、retrans/s36.00isegerr/s0.00orsts/s1.0009:10:43 PM09:10:44 PM2. Profiling 工具Profiling: 典型的應(yīng)用場景對 CPU 堆棧跟蹤的采樣,可以解釋 CPU 的使用內(nèi)存對象的頻度計(jì)數(shù),可以解釋內(nèi)存的使用Profiling 產(chǎn)生的調(diào)優(yōu)熱代碼 (Hot code) 的路徑 - 相關(guān)的可調(diào)參數(shù)配置?頻繁的對象分配 - 避免這種情況的方法?Profiling 類型程序的profiling取決于應(yīng)用和開發(fā)語言例如: Java Flight Recorder, Yourkit, Lightweight Java Profiler許多

31、工具缺乏準(zhǔn)確以及存在問題;測試、驗(yàn)證、交叉檢查系統(tǒng)的 profilingLinux perf_events ( “perf” 命令)ftrace 可以用作內(nèi)核函數(shù)的計(jì)數(shù)SystemTap 擁有各種分析功能面向應(yīng)用的 Profiling: LJP輕量級(jí)的 Java Profiler (LJP)開源的、免費(fèi)的、異步的 CPU profiler使用代理 (agent) 轉(zhuǎn)儲(chǔ) hprof 同樣格式的輸出/archive/p/lightweight-java-profiler/profiling 的輸出結(jié)果可以輸出為 火焰圖 (flame graphs)系統(tǒng)Profiling: perf_eventsp

32、erf_events 對CPU 堆棧跟蹤進(jìn)行采樣,可以顯示為:應(yīng)用的邏輯依賴于應(yīng)用和 VM,可以展示出高級(jí)的邏輯關(guān)系JVM 內(nèi)部信息和庫Linux 內(nèi)核perf CPU 火焰圖 (flame graphs):# git clone /brendangregg/FlameGraph# cd FlameGraph# perf record -F 99 -ag - sleep 60# perf script | ./stackcollapse-perf.pl | ./flamegraph.pl perf.svgBroken Java stacks (missing frame pointer)Ker

33、nel TCP/IPGCIdle threadTimeLocksepoll3. Tracing 工具Linux 中現(xiàn)有的系統(tǒng) tracers工具 ftraceperf_eventseBPFSystemTapktapLTTngdtrace4linuxOracleLinuxDTraceSysdig接下來,歸納一下 ftrace & perf_events ftraceLinux 內(nèi)核的一部分第一次出現(xiàn)是在2.6.27(2008),在后續(xù)的版本中 得到增強(qiáng)直接使用/sys/kernel/debug/tracing前端工具: perf-tools 集合/brendangregg/perf-toolsf

34、trace tool: iosnoop# ./iosnoop tsTracing block I/O. Ctrl-C to end.LATms0.620.420.480.43STARTsENDsCOMMPIDTYPEDEVBLOCKBYTES5982800.3020615982800.302679supervise1809W202,11703960040965982800.3024235982800.302842supervise1809W202,11703960840965982800.3049625982800.305446supervise1801W202,117039616409659

35、82800.3052505982800.305676supervise1801W202,1170396244096USAGE: iosnoop -hQst -d device -i iotype -p PID -n name duration-d device# device string (eg, 202,1)-i iotype# 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 queueing t

36、ime in LATms-s# include start time of I/O (s)-t# include completion time of I/O (s)# ./iosnoop hperf_eventsLinux 代碼的一部分位于tools/perf 之下強(qiáng)大的工具集合分析器interval sampling, CPU performance counter eventsuser and kernel dynamic tracingkernel line tracing and local variables (debuginfo)kernel filtering,in-kernel 計(jì)數(shù)器 (perf stat)高級(jí)用途需要內(nèi)核 debuginfo通常要大于100M 字節(jié)perf_events 示例# p

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論