Flytte gjennomsnitt - Enkle og eksponentielle flytende gjennomsnitt - Enkel og eksponentiell introduksjon Flytte gjennomsnitt øker prisdataene for å danne en trend-indikator. De forutsier ikke prisretning, men definerer snarere den nåværende retningen med et lag. Flytte gjennomsnittlig forsinkelse fordi de er basert på tidligere priser. Til tross for denne tøysen, beveger bevegelige gjennomsnitt en jevn prishandling og filtrerer ut støyen. De danner også byggesteinene for mange andre tekniske indikatorer og overlegg, for eksempel Bollinger Bands. MACD og McClellan Oscillator. De to mest populære typene av bevegelige gjennomsnittsverdier er Simple Moving Average (SMA) og Exponentential Moving Average (EMA). Disse bevegelige gjennomsnittsverdiene kan brukes til å identifisere retningen til trenden eller definere potensielle støtte - og motstandsnivåer. Here039s et diagram med både en SMA og en EMA på den: Simple Moving Average Calculation Et enkelt bevegelige gjennomsnitt er dannet ved å beregne gjennomsnittsprisen på en sikkerhet over et bestemt antall perioder. De fleste bevegelige gjennomsnitt er basert på sluttkurs. Et 5-dagers enkelt glidende gjennomsnitt er den fem dagers summen av sluttkurs dividert med fem. Som navnet antyder, er et glidende gjennomsnitt et gjennomsnitt som beveger seg. Gamle data blir droppet da nye data kommer til rådighet. Dette får gjennomsnittet til å bevege seg langs tidsskalaen. Nedenfor er et eksempel på et 5-dagers glidende gjennomsnitt som utvikler seg over tre dager. Den første dagen i det bevegelige gjennomsnittet dekker de siste fem dagene. Den andre dagen i glidende gjennomsnitt dråper det første datapunktet (11) og legger til det nye datapunktet (16). Den tredje dagen i det bevegelige gjennomsnittet fortsetter ved å slippe det første datapunktet (12) og legge til det nye datapunktet (17). I eksemplet ovenfor øker prisene gradvis fra 11 til 17 over totalt syv dager. Legg merke til at det bevegelige gjennomsnittet også stiger fra 13 til 15 over en tre-dagers beregningsperiode. Legg også merke til at hver glidende gjennomsnittsverdi ligger like under siste pris. For eksempel er det bevegelige gjennomsnittet for første dag 13 og siste pris 15. Prisene de foregående fire dagene var lavere, og dette medfører at det bevegelige gjennomsnittet går til lag. Eksponentiell Flytende Gjennomsnittlig Beregning Eksponentielle glidende gjennomsnitt reduserer forsinkelsen ved å bruke mer vekt til de siste prisene. Vektingen som brukes på den siste prisen, avhenger av antall perioder i glidende gjennomsnitt. Det er tre trinn for å beregne et eksponentielt glidende gjennomsnitt. Først beregner du det enkle glidende gjennomsnittet. Et eksponentielt glidende gjennomsnitt (EMA) må starte et sted slik at et enkelt glidende gjennomsnitt blir brukt som forrige periode039s EMA i den første beregningen. For det andre, beregne vektingsmultiplikatoren. Tredje, beregne eksponentielt glidende gjennomsnitt. Formelen nedenfor er for en 10-dagers EMA. Et 10-års eksponentielt glidende gjennomsnitt bruker en 18,18 vekting til den siste prisen. En 10-årig EMA kan også kalles en 18.18 EMA. En 20-årig EMA gjelder en vei på 9,52 til den siste prisen (2 (201) .0952). Legg merke til at vektingen for kortere tidsperiode er mer enn vektingen for lengre tidsperiode. Faktisk faller vekten halvparten hver gang den bevegelige gjennomsnittlige perioden fordobles. Hvis du vil ha en bestemt prosentandel for en EMA, kan du bruke denne formelen til å konvertere den til tidsperioder, og deretter angi verdien som EMA039-parameteren: Nedenfor er et regneark eksempel på et 10-dagers enkelt glidende gjennomsnitt og en 10- dag eksponentiell glidende gjennomsnitt for Intel. Enkle bevegelige gjennomsnitt er rett frem og krever liten forklaring. 10-dagers gjennomsnittet beveger seg ganske enkelt som nye priser blir tilgjengelige og gamle priser faller av. Det eksponentielle glidende gjennomsnittet begynner med den enkle glidende gjennomsnittsverdien (22,22) i den første beregningen. Etter den første beregningen tar den normale formelen over. Fordi en EMA begynner med et enkelt bevegelig gjennomsnittsmål, blir dens virkelige verdi ikke realisert før 20 eller så perioder senere. Med andre ord kan verdien på Excel-regnearket avvike fra diagramverdien på grunn av den korte tilbakekallingsperioden. Dette regnearket går bare tilbake 30 perioder, noe som betyr at påvirkning av det enkle glidende gjennomsnittet har hatt 20 perioder å forsvinne. StockCharts går tilbake minst 250 perioder (vanligvis mye lenger) for beregningene, slik at effektene av det enkle glidende gjennomsnittet i den første beregningen er fullstendig forsvunnet. Lagfaktoren Jo lengre det bevegelige gjennomsnittet, desto mer lagret. Et 10-dagers eksponensielt glidende gjennomsnitt vil krame prisene ganske tett og ta kort tid etter at prisene svinger. Kortflytende gjennomsnitt er som fartbåter - skumle og raske å forandre seg. I motsetning til dette, inneholder et 100-dagers glidende gjennomsnitt mange tidligere data som reduserer det. Lengre bevegelige gjennomsnitt er som havskipskip - sløv og sakte å forandre. Det tar en større og lengre prisbevegelse for et 100-dagers glidende gjennomsnitt for å bytte kurs. Tabellen over viser SampP 500 ETF med en 10-dagers EMA tett følgende priser og en 100-dagers SMA-sliping høyere. Selv med januar-februar-tilbakegangen holdt 100-dagers SMA kurset og gikk ikke ned. 50-dagers SMA passer et sted mellom 10 og 100 dagers glidende gjennomsnitt når det gjelder lagfaktoren. Enkel vs eksponentiell flytende gjennomsnitt Selv om det er klare forskjeller mellom enkle glidende gjennomsnitt og eksponentielle glidende gjennomsnitt, er det ikke nødvendigvis bedre enn det andre. Eksponentielle glidende gjennomsnitt har mindre forsinkelse og er derfor mer følsomme overfor de siste prisene - og de siste prisendringene. Eksponentielle glidende gjennomsnitt vil slå før enkle glidende gjennomsnitt. Enkle bevegelige gjennomsnitt, derimot, representerer et sant gjennomsnitt av priser for hele tidsperioden. Som sådan kan enkle bevegelige gjennomsnitt være bedre egnet til å identifisere støtte - eller motstandsnivåer. Flytte gjennomsnittlig preferanse avhenger av mål, analytisk stil og tidshorisont. Chartister bør eksperimentere med begge typer bevegelige gjennomsnitt samt forskjellige tidsrammer for å finne den beste passformen. Tabellen nedenfor viser IBM med 50-dagers SMA i rødt og 50-dagers EMA i grønt. Begge toppet i slutten av januar, men nedgangen i EMA var skarpere enn nedgangen i SMA. EMA dukket opp i midten av februar, men SMA fortsatte å bli lavere til slutten av mars. Legg merke til at SMA dukket opp over en måned etter EMA. Lengder og tidsrammer Lengden på det bevegelige gjennomsnittet avhenger av de analytiske målene. Kortvarige gjennomsnitt (5-20 perioder) passer best for kortsiktige trender og handel. Chartister interessert i langsiktige trender ville velge lengre bevegelige gjennomsnitt som kan utvide 20-60 perioder. Langsiktig investorer vil foretrekke å flytte gjennomsnitt med 100 eller flere perioder. Noen bevegelige gjennomsnittlige lengder er mer populære enn andre. 200-dagers glidende gjennomsnitt er kanskje den mest populære. På grunn av lengden er dette klart et langsiktig glidende gjennomsnitt. Deretter er det 50-dagers glidende gjennomsnittet ganske populært for den langsiktige trenden. Mange diagrammer bruker de 50-dagers og 200-dagers glidende gjennomsnittene sammen. Kortsiktig, et 10-dagers glidende gjennomsnitt var ganske populært tidligere, fordi det var lett å beregne. Man lagde bare tallene og flyttet desimaltegnet. Trend Identification De samme signalene kan genereres ved hjelp av enkle eller eksponentielle glidende gjennomsnitt. Som nevnt ovenfor er preferansen avhengig av hver enkelt person. Disse eksemplene nedenfor vil bruke både enkle og eksponentielle glidende gjennomsnitt. Begrepet glidende gjennomsnitt gjelder både enkle og eksponentielle glidende gjennomsnitt. Retningen av det bevegelige gjennomsnittet gir viktig informasjon om priser. Et stigende glidende gjennomsnitt viser at prisene generelt øker. Et fallende glidende gjennomsnitt indikerer at prisene i gjennomsnitt faller. Et stigende langsiktig glidende gjennomsnitt reflekterer en langsiktig opptrend. Et fallende langsiktig glidende gjennomsnitt reflekterer en langsiktig nedtrend. Tabellen over viser 3M (MMM) med et 150-dagers eksponensielt glidende gjennomsnitt. Dette eksempelet viser hvor godt bevegelige gjennomsnittsverdier fungerer når trenden er sterk. Den 150-dagers EMA avslått i november 2007 og igjen i januar 2008. Legg merke til at det tok 15 tilbakegang å reversere retningen av dette bevegelige gjennomsnittet. Disse forsinkende indikatorene identifiserer trendendringer som de oppstår (i beste fall) eller etter at de oppstår (i verste fall). MMM fortsatte ned til mars 2009 og økte deretter 40-50. Legg merke til at 150-dagers EMA ikke viste seg før etter denne bølgen. Når det gjorde det, fortsatte MMM høyere de neste 12 månedene. Flytte gjennomsnitt arbeider briljant i sterke trender. Double Crossovers To bevegelige gjennomsnitt kan brukes sammen for å generere crossover-signaler. I teknisk analyse av finansmarkedene. John Murphy kaller dette den dobbelte crossover-metoden. Dobbeltoverganger innebærer et relativt kort glidende gjennomsnitt og et relativt langt bevegelige gjennomsnitt. Som med alle bevegelige gjennomsnitt, definerer den generelle lengden på det bevegelige gjennomsnittet tidsrammen for systemet. Et system som bruker en 5-dagers EMA og 35-dagers EMA, vil bli ansett som kortsiktige. Et system som bruker en 50-dagers SMA og 200-dagers SMA, vil bli ansett på mellomlang sikt, kanskje til og med på lang sikt. Et kystovergang skjer når kortere bevegelige gjennomsnittsværdier krysser over lengre bevegelige gjennomsnitt. Dette er også kjent som et gyldent kors. Et bearish crossover oppstår når kortere bevegelige gjennomsnitt krysser under lengre bevegelige gjennomsnitt. Dette er kjent som et dødt kryss. Flytte gjennomsnittsoverganger gir relativt sent signaler. Tross alt har systemet to forsinkende indikatorer. Jo lengre bevegelige gjennomsnittsperioder, desto større er lagringen i signalene. Disse signalene fungerer bra når en god trend tar tak. Imidlertid vil et glidende gjennombruddssystem produsere mange whipsaws i fravær av en sterk trend. Det er også en trippel crossover metode som involverer tre bevegelige gjennomsnitt. Igjen genereres et signal når det korteste bevegelige gjennomsnittet krysser de to lengre bevegelige gjennomsnittene. Et enkelt tredelt crossover-system kan innebære 5-dagers, 10-dagers og 20-dagers glidende gjennomsnitt. Tabellen over viser Home Depot (HD) med en 10-dagers EMA (grønn prikket linje) og 50-dagers EMA (rød linje). Den svarte linjen er den daglige lukkingen. Å bruke en glidende gjennomsnittsovergang ville ha resultert i tre whipsaws før du fikk en god handel. Den 10-dagers EMA brøt under 50-dagers EMA i slutten av oktober (1), men dette var ikke lenge da 10-dagene flyttet tilbake over midten av november (2). Dette krysset varet lengre, men neste bearish crossover i januar (3) skjedde nær prisnivået i slutten av november, noe som resulterte i en annen whipsaw. Dette bearish krysset varede ikke lenge da 10-dagers EMA flyttet tilbake over 50-dagen noen dager senere (4). Etter tre dårlige signaler forløste det fjerde signalet et sterkt trekk når aksjene økte over 20. Det er to takeaways her. For det første er crossovers utsatt for whipsaw. Et pris - eller tidsfilter kan brukes for å forhindre whipsaws. Traders kan kreve crossover til siste 3 dager før du handler eller krever at 10-dagers EMA skal flytte over 50-dagers EMA med en viss mengde før du handler. For det andre kan MACD brukes til å identifisere og kvantifisere disse kryssene. MACD (10,50,1) vil vise en linje som representerer forskjellen mellom de to eksponentielle glidende gjennomsnittene. MACD blir positiv under et gyldent kors og negativt under et dødt kryss. Prosentpris Oscillatoren (PPO) kan brukes på samme måte som prosentandeler. Vær oppmerksom på at MACD og PPO er basert på eksponentielle glidende gjennomsnitt og stemmer ikke overens med enkle glidende gjennomsnitt. Dette diagrammet viser Oracle (ORCL) med 50-dagers EMA, 200-dagers EMA og MACD (50,200,1). Det var fire bevegelige gjennomsnittsoverskridelser over en 12-årig periode. De første tre resulterte i whipsaws eller dårlige handler. En vedvarende trend begynte med fjerde crossover som ORCL avansert til midten av 20-tallet. Nok en gang jobber glidende gjennomsnittsoverganger godt når trenden er sterk, men produserer tap i fravær av en trend. Prisoverskridelser Flytte gjennomsnitt kan også brukes til å generere signaler med enkle prisoverskridelser. Et bullish signal genereres når prisene går over det bevegelige gjennomsnittet. Et bearish signal genereres når prisene flytter under det bevegelige gjennomsnittet. Prisoverskridelser kan kombineres for å handle innenfor den større trenden. Det lengre bevegelige gjennomsnittet setter tonen for den større trenden, og det kortere glidende gjennomsnittet brukes til å generere signalene. Man vil se etter bullish prisoverganger bare når prisene allerede er over det lengre bevegelige gjennomsnittet. Dette ville være handel i harmoni med den større trenden. For eksempel, hvis prisen ligger over 200-dagers glidende gjennomsnitt, vil kartleggere bare fokusere på signaler når prisen beveger seg over 50-dagers glidende gjennomsnitt. Åpenbart vil et trekk under 50-dagers glidende gjennomsnitt forutse et slikt signal, men slike bearish kryss vil bli ignorert fordi den større trenden er oppe. Et bearish kryss ville bare foreslå en tilbaketrekking i en større opptrinn. Et kryss tilbake over 50-dagers glidende gjennomsnitt ville signalere en oppgang i prisene og fortsettelsen av den store opptrenden. Neste diagram viser Emerson Electric (EMR) med 50-dagers EMA og 200-dagers EMA. Aksjen flyttet over og holdt over 200-dagers glidende gjennomsnitt i august. Det var dips under 50-dagers EMA tidlig i november og igjen tidlig i februar. Prisene flyttet raskt over 50-dagers EMA for å gi bullish signaler (grønne piler) i harmoni med større opptrinn. MACD (1,50,1) vises i indikatorvinduet for å bekrefte priskryss over eller under 50-dagers EMA. Den 1-dagers EMA er lik sluttkurs. MACD (1,50,1) er positiv når lukkingen er over 50-dagers EMA og negativ når lukkingen er under 50-dagers EMA. Støtte og motstand Flytte gjennomsnitt kan også fungere som støtte i en uptrend og motstand i en downtrend. En kortsiktig opptrend kan finne støtte nær 20-dagers enkeltflytende gjennomsnitt, som også brukes i Bollinger Bands. Et langsiktig opptrend kan finne støtte nær det 200-dagers enkle glidende gjennomsnittet, som er det mest populære langsiktige glidende gjennomsnittet. Faktisk kan 200-dagers glidende gjennomsnitt gi støtte eller motstand bare fordi den er så mye brukt. Det er nesten som en selvoppfyllende profeti. Figuren over viser NY Composite med det 200-dagers enkle glidende gjennomsnittet fra midten av 2004 til slutten av 2008. 200-dagene ga støtte mange ganger under forskudd. Når trenden reverserte med en dobbel toppstøt, virket det 200-dagers glidende gjennomsnittet som motstand rundt 9500. Forvent ikke eksakte støtte - og motstandsnivåer fra bevegelige gjennomsnitt, spesielt lengre bevegelige gjennomsnitt. Markeder er drevet av følelser, noe som gjør dem utsatt for overskudd. I stedet for eksakte nivåer kan bevegelige gjennomsnittsverdier brukes til å identifisere støtte - eller motstandssoner. Konklusjoner Fordelene ved å bruke bevegelige gjennomsnitt må veies mot ulempene. Flytte gjennomsnitt er trenden som følger eller forsinker, indikatorer som alltid vil være et skritt bakover. Dette er ikke nødvendigvis en dårlig ting skjønt. Tross alt er trenden din venn, og det er best å handle i retning av trenden. Flytte gjennomsnitt sikrer at en næringsdrivende er i tråd med den nåværende trenden. Selv om trenden er din venn, legger verdipapirer mye tid i handelsområder, noe som gjør flytteverdier ineffektive. En gang i en trend vil glidende gjennomsnitt holde deg i, men også gi sent signal. Don039t forventer å selge på toppen og kjøpe på bunnen ved hjelp av bevegelige gjennomsnitt. Som med de fleste tekniske analyseverktøy, bør bevegelige gjennomsnitt ikke brukes alene, men i forbindelse med andre komplementære verktøy. Chartister kan bruke bevegelige gjennomsnitt for å definere den overordnede trenden og deretter bruke RSI til å definere overkjøpte eller oversolgte nivåer. Legge til bevegelige gjennomsnitt til StockCharts-diagrammer Flytte gjennomsnitt er tilgjengelig som en prisoverleggsfunksjon på SharpCharts arbeidsbenk. Med rullegardinmenyen Overlays kan brukerne velge enten et enkelt glidende gjennomsnitt eller et eksponentielt glidende gjennomsnitt. Den første parameteren brukes til å angi antall tidsperioder. En valgfri parameter kan legges til for å spesifisere hvilket prisfelt som skal brukes i beregningene - O for Åpen, H for Høy, L for Lav og C for Lukk. Et komma brukes til å skille mellom parametere. En annen valgfri parameter kan legges til for å skifte de bevegelige gjennomsnittene til venstre (tidligere) eller høyre (fremtidige). Et negativt tall (-10) ville skifte det bevegelige gjennomsnittet til venstre 10 perioder. Et positivt tall (10) ville skifte det bevegelige gjennomsnittet til høyre 10 perioder. Flere bevegelige gjennomsnitt kan overlappes prisplottet ved ganske enkelt å legge til en annen overleggslinje til arbeidsbenken. StockCharts medlemmer kan endre farger og stil for å skille mellom flere bevegelige gjennomsnitt. Når du har valgt en indikator, åpner du Avanserte alternativer ved å klikke på den lille grønne trekant. Avanserte alternativer kan også brukes til å legge til et glidende gjennomsnittlig overlegg til andre tekniske indikatorer som RSI, CCI og Volume. Klikk her for et live diagram med flere forskjellige bevegelige gjennomsnitt. Bruke Flytte Gjennomsnitt med StockCharts-skanninger Her er noen prøve-skanninger som StockCharts-medlemmer kan bruke til å skanne etter ulike bevegelige gjennomsnittlige situasjoner: Bullish Moving Average Cross: Denne skanningen ser etter aksjer med et stigende 150-dagers enkelt glidende gjennomsnitt og et bullish kryss av 5 - dag EMA og 35-dagers EMA. Det 150-dagers glidende gjennomsnittet stiger så lenge det handler over nivået for fem dager siden. Et bullish kryss oppstår når 5-dagers EMA beveger seg over 35-dagers EMA på over gjennomsnittet. Bearish Moving Average Cross: Denne skanningen ser etter aksjer med et fallende 150-dagers enkelt glidende gjennomsnitt og et bearish kryss av 5-dagers EMA og 35-dagers EMA. Det 150-dagers glidende gjennomsnittet faller så lenge det handler under nivået for fem dager siden. Et bearish kryss oppstår når 5-dagers EMA beveger seg under 35-dagers EMA på over gjennomsnittet. Videre studie John Murphy039s bok har et kapittel viet til bevegelige gjennomsnitt og deres ulike bruksområder. Murphy dekker fordeler og ulemper ved å flytte gjennomsnitt. I tillegg viser Murphy hvordan bevegelige gjennomsnitt arbeider med Bollinger Bands og kanalbaserte handelssystemer. Teknisk analyse av finansmarkedene John Murphy Jeg har sett på mange ting knyttet til begrepet konvergerte infrastrukturer. Den grunnleggende ideen er dette: Legatplattformen, dvs. en enkeltbilde, fysisk oppstartet server, som vanligvis er knyttet til en SAN, er håpløst utdatert. Denne utformingen er i hovedsak 30 år gammel, og tar ikke hensyn til mange interessante teknologiske endringer, spesielt: Virtualisering Deduplisering Flash-lagring, inkludert både PCIe-basert flash og SSDer. Den konvergerte infrastrukturplattformen ser dermed ut som et dramatisk forskjell fra den eldre plattformen. I hovedsak består en konvergert infrastruktur av en stor klynge. Et klynget IO-delsystem utvides over alle noder i denne klyngen, og alle IO til dette filsystemet reflekteres på alle noder. Dette implementeres enten i blokk eller fil (NFS), avhengig av leverandør involvert. Alt lagringsmaskinvaren er direkte festet. Ingen SAN, med andre ord. Dermed er en konvergert infrastruktur utformet for datasenterkonsolidering, som ligner på virtualiseringshypervisormarkedet. Noen av de konvergerte infrastrukturleverandørene kjører på en hypervisor, og noen gjør det ikke. Mer om dette senere. Det konvergerte infrastrukturmarkedet er overfylt, det er sikkert. Det ville være vanskelig i en blogg som dette å dekke dem alle, så jeg vil fokusere på tre: Og selvfølgelig er mitt fokus på Oracles plass. Som vanlig tror jeg når det gjelder å kjøre Oracle så effektivt og rimelig som mulig. Også, når det gjelder hypervisorer, vil jeg bare kontakte VMware. (Jeg har ingen teknisk eksponering for Hyper-V eller KVM.) Med Nutanix, er arkitekturen best beskrevet i Nutanix Bible by Steven Poitras. Jeg har litt omarbeidet en av hans grafikk for å reflektere min bias, igjen Oracle på VMware: I hovedsak går alle Nutanix8217s IP i en VM, referert til som CVM. Hypervisoren og CVM starter av en liten partisjon. Deretter kobler CVM til de andre noderne i Nutanix-klyngen, og samler et klynget filsystem, som publiseres som en NFS-eksport. Hypervisoren monterer denne eksporten som en NFS datastore. Derfra startes alle brukerplass VM (inkludert Oracle VMs) av. vmdk-filer på NFS datastore. Alt blokknivå IO (annet enn oppstart) håndteres av CVM via den virtualiserte SCSI-kontrolleren. Igjen, dette er fra VMware-perspektivet. Arkitekturene for andre hypervisorer er forskjellige. Men jeg går ned. Flyttet til Simplivity, min kilde for deres tekniske ting ville være OmniCube Technical Deep Dive. (På 10 sider er dette dype dykket ikke helt så dypt som jeg foretrekker sikkert.) Simplivitetsarkitekturen ligner veldig på Nutanix, i de fleste henseender bortsett fra en: Enkelhet legger til et maskinvare som de kaller OmniCube Accelerator-kortet (OAC). Ellers ser diagrammet for Simplivity ut som Nutanix: Igjen kjører Simplivity8217s IP i OVC VM, annet enn OAC selv, selvfølgelig. OAC er et spesialbygd PCIe-kort, som blant annet fungerer som IO-kontrolleren. Som Nutanix eksporterer OVC et NFS-feste, som ESXi monterer som en NFS datastore. Derfra går all brukerplass IO, inkludert Oracle, gjennom. vmdk-laget i hypervisoren. Nå, ser på ScaleiO, er arkitekturen dramatisk forskjellig fra enten Nutanix eller Simplivity. Først av alt, er Nutanix og Simplivity begge maskinvareplattformer, komplett med spesialbygd maskinvare. ScaleiO er et program. Den er designet for å være lagdelt på toppen av en eldre plattform, og gir en smidig, enkel vei til en konvergert infrastruktur. Spesielt krever ScaleiO ikke bruk av en hypervisor, og kan dermed løpe i en fysisk oppstartet kontekst. Dette er en av ScaleiO8217s hovedfordeler over hypervisorbaserte konvergerte plattformer som Nutanix og Simpivity. ScaleiO består av to hovedkomponenter: The ScaleiO Data Client (SDC) og ScaleiO Data Server (SDS). I en Linux-kontekst (igjen, det eneste operativsystemet jeg bryr meg om dypt), er både SDS og SDC implementert som kjernebelastbare moduler, som ligner på enhetsdrivere. SDS'en administrerer den lokale lagringsmaskinvaren, kobler seg til andre noder til ScaleiO-klyngen, utfører cache-sammenheng, etc. SDC kobler deretter til SDS-en, som ser ut til det som et SCSI-mål. Dermed publiserer SDS lagringsobjekter til SDC, som det lokale OS ser som LUNs. Derfra utfører det lokale operativsystemet bare normal IO. Stabeldiagrammet for en fysisk oppstartet ScaleiO-klusterknute kunne ikke være enklere: ScaleiO kan også kjøres i en virtualisert sammenheng. I dette tilfellet ser ScaleiO ut som om det ser ut som Nutanix eller Simplivity, fordi det også har en kontroller VM, som heter ScaleiO VM (SVM). Denne SVM kjører både SDS og SDC. Alle IO er kanalisert gjennom SVM. Imidlertid er alt i ScaleiO implementert i en blokk, i stedet for fil, måte. Dermed ser ESXi hypervisoren et blokklagringsbasseng som det konverterer til et VMFS-filsystem, i stedet for å bruke NFS. (SVM gir et iSCSI-mål for dette formålet.) Slik ser ScaleiO ut i en virtualisert konfigurasjon: Den andre interessante tingen om ScaleiO er at den lar deg kjøre på en konvergert eller divergerende måte. Siden klienten (SDC) og serveren (SDS) er separate komponenter, kan du kjøre dem på egen maskinvare, slik at ScaleiO-serverklyngen blir effektivt til et lagringsarrangement. Se følgende grafikk for et eksempel (takket være Kevin Closson for dette): Selvfølgelig kan du også kjøre ScaleiO på en konvergert måte, i så fall ser plattformen ut som Nutanix eller Simplivity (med unntakene nevnt). Nå ser vi på hver av disse arkitekturene i forbindelse med å kjøre Oracle, det ser ut til at ScaleiO har den åpenbare kanten. Dette skyldes: Både Nutanix og Simplivity krever at du virtualiserer for å kunne kjøre på plattformen. ScaleiO gjør det ikke. Selv den mest ivrige forfatteren av virtualisering av Oracle (og jeg vil sikkert kvalifisere seg for den poengsummen) ville ønske å opprettholde muligheten til å kjøre på bare metall hvis nødvendig. Vedta en plattform som absolutt krever at kunden virtualiserer alle Oracle arbeidsbelastninger, sannsynligvis ikke kommer til å fungere for mange Oracle-kunder. Bruken av en VMware NFS datastore som primærbeholder for Oracle-lagring er problematisk, spesielt i en Oracle-kontekst. Mens jeg var med EMC Global Solutions Organization, testet vi NFS datastores for Oracle datafiler. Det hadde en enorm ytelseffekt, i forhold til enten vanlig NFS (dvs. direkte montert på gjestenes OS, og ved hjelp av Oracle Direct NFS Client) eller et blokkbasert VMFS-filsystem, ved hjelp av konvensjonell SAN-lagring. Det er ingen grunn til at dette ville være noe annerledes i en konvergert sammenheng. Tenk på det. Koden banen for en IO på en Oracle ASM diskgruppe som lagres på en. vmdk fil som i sin tur på en NFS datastore krever en enormt lang kodebane. Sammenlign det med ScaleiO, spesielt i en fysisk oppstartet kontekst, hvor IO-kodebanen ikke lenger er lengre enn å bruke en vanlig enhetsdriver. Den divergerte tilnærmingen til ScaleiO er uten tvil skikkelig bygget for Oracle. Jeg har gjort en ganske god levetid for de siste 17 årene av mitt liv ved å forstå en ting: Oracle er dyrt, og derfor er den Oracle-lisensierte CPUen den eneste dyreste maskinvare i hele konfigurasjonen. Avlasting av noe arbeid fra den Oracle-lisensierte CPUen på en ikke-Oracle-lisensiert CPU er typisk en svært lønnsom beslutning. (Det er mulig at dette er grunnen til at Oracle-databaseservere vedtatt lagringsmatsteknologi så vidt: Ved å laste ned bruksoperasjoner som snaps, test dev kloning, datalagring, backup og lignende på et lagringssystem, beholder kunden den dyrebare Oracle-lisensierte CPU å gjøre det som gjør det best: Kjør spørsmål.) Både Nutanix og Simplivity krever at kunden kjører på en konvergert måte, og bruker dermed den Oracle-lisensierte CPU (på ESXi-verten i dette tilfellet) til å kjøre lagrings-IO-operasjoner. That8217 er sløsing med den dyrebare Oracle-lisensierte CPU. Det er således helt mulig at en fullt konvergert infrastruktur kan være dårlig egnet for Oracle på grunn av enkel økonomi. Ved å aktivere en divergert konfigurasjon (det vil si mer som et tradisjonelt SAN-lagringssystem), optimaliserer ScaleiO nøyaktig Oracle CPU. Selvfølgelig gjenstår det å se hvordan alt dette skiller seg ut. It8217s tidlig. For nå, skjønt, ScaleiO ser bra ut til meg. Apparater som mikrobølgeovner, kjøleskap, iPod, iPads og TV er gode eksempler på brukervennligheten. Å bringe den iboende komplekse verden av Oracle-databaser sammen med brukervennligheten til apparater er utfordrende. Per definisjon hvis Oracle Exadata er et apparat, bør bruken være enkel, kreve relativt lite vedlikehold, og som et kjøleskap gjør jobben som i dette tilfellet kjører databaser i ekstreme ytelsesnivåer. Hvis Oracle Exadata ikke er et apparat enn hva er det, fant jeg dette spørsmålet ganske overbevisende. Husk at jeg virkelig vokste opp i et virkelig apparat-orientert miljø (NetApp). Se mine første blogginnlegg for mer informasjon om min bakgrunn på NetApp. Av denne grunn tror jeg jeg forstår hva et apparat er ganske bra. På NetApp (og i mine tidlige dager på NetApp var filers sanne apparater med noe som helst mål), apparatkonseptet betydde at enheten var en brødrister: Ett spak for å presse ned og en knapp for å snu. Det er det. Plugg den inn. Den fungerer. Ingen trinn 2. Cisco oppstod egentlig fra begrepet apparatet. Cisco-ruteren erstattet den forrige ruteren, som vanligvis var en UNIX-boks som ble kjørt rutet. Som sådan definerte Cisco-ruteren ganske mye begrepet hva det betyr å være et sant apparat. Folkene i Cisco gjorde følgende argument: Vi trenger ikke all infrastruktur i UNIX å gjøre ruting. En UNIX-boks må gjøre mange ting. En ruter trenger egentlig bare å gjøre en ting: Nettverk. Vi kunne lage en dramatisk forenklet enhet som kunne gjøre ruting veldig bra, til en mye lavere kostnad enn en UNIX-boks. Basert på dette konseptet har et apparat følgende egenskaper: Ekstremt enkelt grensesnitt. Bør være mye enklere enn å gjøre det på ikke-apparatets måte. Dvs. en Cisco-router er mye enklere enn å kjøre rutet på en UNIX-boks. Et enkelt formål. Enheten må være dedikert til å gjøre en ting, men gjør det veldig bra. Som hvordan en Cisco-ruteren er mye bedre å gjøre ruting enn en UNIX-boks som kjører rutet. Eller som hvordan en NetApp-fil er mye bedre å gjøre NFS-filserver enn en UNIX-boks som kjører nfsd. Du får ideen. Ved å redusere antallet funksjoner som enheten utfører, reduserer du også dramatisk koden som må kjøres på enheten. (Den opprinnelige NetApp ONTAP OS var et enkelt-threaded 16 bit OS med bare noen få 100K kodelinjer.) Dette fører til neste funksjon i et apparat som er: Vesentlig redusert kostnad. De opprinnelige NetApp-filene var omtrent en 5000 enhet. En tilsvarende UNIX-boks som ble brukt som en NFS-filserver, kjørte rundt 50 000. Lignende kostnadsforskjeller eksisterte for Cisco-rutere vs. UNIX-bokser som rutere. Transformativ teknologi. Et apparat, hvis det virkelig er et apparat, blir den åpenbare og naturlige måten å gjøre ting på. Innen kort tid etter at routeren ble introdusert, kontrollerte Cisco rutermarkedet. De fordrev helt den forrige måten å gjøre ruting på. Det samme skjedde i filservering med NetApp. Oracle ExaData misligholder alle disse testene: Det har så komplisert et grensesnitt som en hvilken som helst Oracle databaseserver (det vil si at den kjører det mest komplekse og dyre programvaren som noensinne er skrevet til generell bruk). Absolutt ikke apparat-lignende. Et Oracle ExaData-rack inneholder generell beregnings servere, som kan brukes til å kjøre i utgangspunktet alt du vil. Du kan laste inn noe Oracle-program på det, og ingen vil hevde at en Oracle-databaseserver er et apparat. Oracle ExaData er åpenbart dyrere enn en vanlig, åpen systemdatabaseserver, og det er langt dyrere (antatt intelligent styring) enn bruker VMware vSphere for å virtualisere Oracle databaseservere. Oracle ExaData er muligens vanedannende i Big Blue-sans, men det er absolutt ikke en transformativ teknologi på samme måte som en Cisco-router, iPad, iPhone eller lignende. Når det gjelder en analogi som fungerer, liker jeg å bruke biler. De to selskapene i bilbransjen som produserer apparatbiler er Honda og Toyota. Honda Civic er en apparatbil, som er Toyota Camry. En av disse bilene gir alle apparatets fordeler: De har et radikalt forenklet grensesnitt. Alt om disse bilene er designet for å gjøre dem enkle å betjene. Fordi de er så enkle, er de også veldig pålitelige og effektive. De er engangsbiler. De får deg fra punkt a til punkt b. Det er det. Ikke noe fancy. De selges til en svært rimelig pris, i forhold til ikke-kjøretøyer (for eksempel BMW eller Mercedes for eksempel). Når du har kjørt en Honda Civic eller Toyota Camry, forutsatt at du er en apparatdriver (og det er mange folk som er apparatdrivere), er disse bilene helt vanedannende. Du handler bare en inn for den nye modellen når den gamle slites ut (og de tar lang, lang tid å ha på seg). Jeg har kjent folk som har kjørt disse bilene (i ulike modellår) hele livet. Ved hjelp av bilanalogen er ExaData definitivt ikke en Honda eller en Toyota. Det er ikke engang en BMW eller en Mercedes. Det er en Ferrari. Det er en lurt ut, høy ytelse maskin. Det er veldig fort, ikke noe spørsmål. Det er imidlertid dyrere skjønt. Og det er veldig, veldig komplekst og krevende å kjøre. Takk til Bart Sjerps for dette innholdet. Det ser ut til å være mye forvirring på lisensiering når kunder vurderer å kjøre Oracle-databaser på VMware. En del av forvirringen er forårsaket av Oracle med vilje (klassisk FUD) ved å foreslå at lisensiering er dyrere på VMware enn på fysiske servere. Virkeligheten couldn8217t være mer annerledes 8211 Jeg tror sterkt at mange kunder faktisk kan lagre på databaselisenser ved å gå virtuelt. Men for å forstå hvordan du skal oppnå dette, må du vite noen ting 8211 Jeg håper jeg kan klare dette opp i en kort forklaring. Jeg vil holde diskusjonen til Oracle database lisenser og ignorere application middleware etc. for nå. Lisensmodeller Kunder lisensierer vanligvis sin grunnleggende database med en av tre alternativer: Lisens av CPU (kjernen) 8211 jo flere CPU-kjerner, desto flere lisenser er nødvendig. Det er en prosessorkjernefaktor avhengig av typen CPU og kan være 0,25, 0,5, 0,75 eller 1,0. Lisens av navngitt bruker 8211 de mer navngitte brukerne, desto flere lisenser er nødvendig. Mengden CPU8217 er ikke viktig, heller ikke mengden av totale databaser. Vanligvis en lisenspakke per 25 brukere. Enterprise License 8211 forhandler kunden en kontrakt for hele selskapet og etterpå kan distribuere så mange databaser på så mange serverscpus som han vil. Hvis en kunde bruker 2 eller 3, spiller det ingen rolle om de kjører virtuelle eller fysiske. Men det er heller ingen lisensbesparelser mulig uten å forhandle om sine kontrakter. Jeg vil ikke gå så langt som å foreslå at kundene skal endre lisensmodellene, slik at vi forlater dette som for tiden. Etter min erfaring bruker de fleste bedriftskunder enten cpu-lisensiering eller bedriftsavtaler. Noen har forskjellige lisensieringsmetoder for ulike forretningsenheter. Oracle kan være veldig kreativ i kundespesifikke kontrakter, så forvent å finne en annen situasjon for hver enkelt kunde. Men let8217s påtar CPU-lisensiering for denne diskusjonens skyld. Vedlikeholdsstøtte Brukerne kjøper vanligvis CPU-lisensene, men må da betale vedlikehold for tiden de bruker lisensene til. Årlig vedlikeholdskostnad er ca. 25 av lisensen (listepris). Jeg har ingen informasjon om typiske rabatter. Jeg forventer at kundene får minst 50 rabatt fra prislisten (men bare på lisenser, ikke på vedlikehold AFAIK). Databaseversjon og opsjoner Den enkle databaselisensen leveres i 3 versjoner (for servere): Standard Edition One 8211 Maks 2 prosessorer, ingen muligheter tillatt. Brukes kun til testing og svært små distribusjoner Standard Edition (SE) 8211 Maks 4 prosessorer, ingen muligheter tillatt. Kun brukt for mindre størrelser og arbeidsbelastninger (men hold deg innstilt) Enterprise Edition (EE) 8211 Ingen begrensninger og på toppen av EE, kan du ha mange lisensierte funksjoner. De fleste kunder vil bruke dette, i hvert fall for produksjonsdatabaser. På toppen av den grunnleggende databaselisensen bruker de fleste kunder et sett med alternativer, som krever tilleggslisenser per CPU. De vanligste alternativene er: Real Application Clusters (RAC) 8211 gjør det mulig for mange servere å kjøre den samme databasen (aktiv aktiv klynging) for å tillate skalering og høy tilgjengelighet. Real Application Clusters En knutep. 8211 samme, men en database kan bare kjøre aktivt på en knute. Kun for høy tilgjengelighet. Active Data Guard 8211 ekstern replikering ved hjelp av loggfrakt. Vær oppmerksom på at standard datavakt er gratis, men Active Data Guard lar standby-databasen åpnes for skrivebeskyttet formål og tilbyr noen ekstra funksjoner. Partisjonering 8211 tillater at tabeller deles opp i mindre biter. Absolutt nødvendig når du kjører store databaser og ingen nedetid kan tolereres. Forenkler administrasjonsarbeidet og gir noen ytelsesfordeler. Real Application Testing 8211 tillater arbeidsbelastninger å spilles inn og spilles på en annen database for å utføre ytelse og funksjonalitetstest. Avansert komprimering 8211 tillater databaser å bli komprimert 8211 som krever mindre lagring og økt ytelse (i de fleste tilfeller). Diagnostics Pack Tuning pack 8211 gir automatiserte rapporter. Oracle AWR (Advanced Workload Reports 8211 et ytelsesrapporteringsverktøy) er en del av Tuning Pack. Etter min erfaring har nesten alle kunder partisjonering. De fleste kunder har tuningdiagnostics pack. Noen kunder har RAC. Noen kunder har de andre alternativene. Det finnes flere alternativer, men disse er de vanligste. Mange kunder har 3 eller flere alternativer 8211 Noen ganger koster alternativene mer enn basistabell lisens 8211, spesielt hvis de bruker RAC, vil de også ha de fleste andre alternativer. Kjører på en klynge Hvis en database kjører på en klynge, antar Oracle at databasen kan bruke noen prosessor i klyngen. Dette er uavhengig av hvilken type klynge som brukes (det kan også være MSCS, HP MCSG, Vmware, Oracle RAC, etc.). Dette er i utgangspunktet grunnlaget for all FUD og forvirring. Hvis du for eksempel distribuerer en VMware-gård (klynger) på 16 servere, og alle virtuelle maskiner kjører alle slags ting (filtrykk, utveksling, applikasjoner osv.) Og bare en liten virtuell maskin i hjørnet, med bare en virtuell CPU kjører en liten Oracle-database, ville du forvente å bare betale for en CPU-kjernen 8211, men Oracle8217s resonnement er at denne lille VM-enheten kan bli dynamisk flyttet (VMotion) til alle noder i klyngen og på hvilken som helst prosessor. Derfor må alle CPU8217s være fullt lisensiert av Oracle. Så i dette tilfellet ville det være billigere å kjøre enkeltdatabasen på en (liten) fysisk server enn å kjøre på en VM i gården. Total kostnad for stabelen I en typisk database server distribusjon, kostnaden for databaselisensiering er langt større enn prisen på maskinvare OS lisenser kombinert. Jeg har ikke harde numre, men jeg antar at gjennomsnittlig DB-lisenskostnad (pluss alternativer) er 10 ganger større enn prisen på server-operativsystemet. Så en 5000 server ville vanligvis kreve 50.000 på lisenser. Da vedlikehold er 25 årlig, er den totale prisen på lisenser over en 3 til 5 års periode enda høyere 8211 så for en 5 år TCO kan den totale lisenskostnaden være 75.000 (antagelsen 8211 kan også være nærmere 100.000 8211 og nei, jeg didn8217t gjør en feil med en ekstra null, Oracle er virkelig dette dyrt). Utnyttelse Det er svært vanskelig å formatere en typisk Oracle databasebasert applikasjon. Det finnes ingen gode metoder eller beregninger for å finne ut hvor mye CPU-strøm, disk IO og minne er nødvendig for å kjøre en gitt app. Så historisk sparer prosjektgruppen deres databaseservere for toppbelastning, og fordi de ikke kan forutsi hvor stor toppbelastningen er, dobler de ressursene 8220just i case8221. Sluttresultatet er at de fleste databasetjenere er overordnede i forhold til CPU og minne. De fleste fysiske distribuerte databasetjenere vil gjennomsnittlig på ca 10-15 CPU-belastning (eller mindre). Imidlertid vil de topp til høyere belastninger på bestemte tidspunkter, for eksempel mandag morgen når mange brukere logger på, eller når batchbehandlingen i månedskvartalene er startet, etc. Deretter kan utnyttelsesnumrene påvirkes av andre oppgaver av prosessorene. Noen vanlige årsaker til 8220artificially high8221 CPU-belastninger på databaseservere: CPU er involvert i lagringsspeiling (dvs. Host Level Mirroring 8211 ved hjelp av Oracel ASM eller en Unix volumbehandler) CPU er involvert i filoverføringer via IP-nettverket. Sikkerhetskopiering (ikke-serverløs, ved bruk av CPU, Network og IO båndbredde) Kunder kjører applikasjonsserveren på samme maskin som kjører opp CPU-belastning 8211 Dette kan kjøre CPU-belastning fra 10 til 90 eller mer. Samme for Middleware og Enterprise Service-busser (Tenk Oracle BEA, IBM Websphere, SAP Netweaver osv.) En rekke overvåkingsagenter brenner CPU-sykluser (Tivoli, BMC, HP Openview, CA, osv.). Hver agent kanskje bruker 1, men legger den opp og du har en annen 5-10 overhead. Administratorer genererer database dumper eksport og driver egne rapporter, skript og verktøy. De kjører ad hoc spørringer også som ikke burde være på produksjon. Dårlig tilpassede databaseservere forårsaker personsøking og annen CPU-overhead 8211 vanskelig å diagnostisere, men driver opp CPU og IO betydelig. Database admin oppgaver (tabell omorganisasjoner, (re) bygningsindekser, konvertering av tabellrom, 8230) Og så on8230 Alle disse forårsaker prosessorene, kostnadseffektivt lisensiert for databehandling. å gjøre andre ting. Så hvis en server kjører til 15 bruk, kan utnyttelsen forårsaket av databasens arbeidsbelastning bare være 10 og resten forårsaket av andre ting (om nødvendig eller ikke). Unødvendig å si at Oracle liker at kundene bruker sine dyre lisensierte CPU8217s for andre oppgaver fordi det tvinger dem til å kjøpe flere CPUer tidligere, og dermed drive sine lisensinntekter. Isn8217t livet bra for en Oracle rep Antall databaser De fleste kunder driver mange databaser. For den gjennomsnittlige bedriftskunden jeg besøker, er 100 databaser et normalt nummer. En stor global som jeg besøkte, driver 3000 Oracle-databaser over hele verden (og dette er bare omfanget av dette bestemte prosjektteamet). Tenk på kostnadene ved lisensiering av alle disse databasene på alle individuelle servere8230 Hvorfor så mange Vel, kunder liker ikke å dele flere applikasjoner på en database (og ofte støttes dette ikke engang). Så hvis du kjører SAP ERP, Oracle JD Edwards, din egen bankapp og noen andre, krever de alle en egen produksjonsdatabase. For hver produksjonsdatabase kan du finne et akseptmiljø, testsystem, utviklingsserver, kanskje et oppføringsområde for å laste data inn i datalageret, kanskje et brannfrekvensmiljø, en standby for DR, et treningssystem og så videre. Kunder vil sjelden dele produksjonsmiljøer på samme server (med mindre det er virtualisert eller i hvert fall med seglestyringsadministrasjon). Noen ganger deler de noen databaser for ikke-prod på en server. Så for eksempel si 100 databaser, kjører gjennomsnittskunden mellom 30 og 50 (fysiske) servere. Kraft av store tall Det krever ikke rakettvitenskap å forstå at mange av disse databasene ikke krever topp ytelse på samme tid. Et utviklingssystem driver vanligvis arbeidsbelastning på dagtid (når utviklere koder nye applikasjonsfunksjoner). Et datalager driver forespørsler om dagen og laster om kvelden. For et produksjonssystem avhenger det av forretningsprosessen. Et akseptssystem kan ligge i tomgang i flere uker, og plutselig topp i noen dager forbereder en ny versjon utplassering i live produksjonssystemet. Og så videre. Så hva om du kunne dele ressurser på tvers av databaser 8211 uten å påvirke kode nivåer, sikkerhet, stabilitet og så videre. Hvis det ville være mulig 8211 ville du ikke ha størrelse for 8220peak lastetider two8221 lenger. Du ville ha størrelse for det du forventer og antar en gjennomsnittlig utnyttelse av, si, 70 over hele landskapet. Hvis en database trenger ekstra hestekrefter, er det nok tilgjengelig i landskapet. Hvor mye lisens kostnad vil du spare ved å redusere antall CPU8217s slik at utnyttelsen går opp fra 10 til 70 Hva ville være effekten på strøm, kjøling, gulvplass, maskinvare investeringer, time-to-market Hva ville være virksomheten fordel for ikke å begrense produksjonsytelsen til en enkelt server, uansett hva som var størrelsen under den første implementeringen. Risikoen unngår Hva ville være fordelene med å løse fremtidige ytelsesproblemer ved bare å legge til den nyeste og beste Intel-serveren i klyngen og Vmotion den urolige databasen over Wasn8217t denne nettopp hvorfor vi startet server virtualisering i utgangspunktet ca 8 år siden og hvorfor EMC kjøpte VMware Wouldn8217t du tror den gjennomsnittlige Oracle-selgeren er redd for å dø når kunden begynner å vurdere å kjøre sine databaser på en virtuell plattform (cloud) Ville det gjøre fornemmelse for ham å drive sine kunder gale med FUD rundt lisensiering, støtte problemer og hva han kan tenke på for å hindre at hans kunder går denne veien Selv truer med å slippe all støtte hvis de fortsetter å gå i den retningen Hvis Oracle er redd for å miste lisensinntekter, ville du tro at det er et stort potensial for besparelser for våre kunder her Reisen til den private databasskyen Så hvordan skal vi håndtere dette Noen få utgangspunkt: Oracle støtter VMware. Periode. Ethvert annet krav til Oracle-reps kan tas med et saltkorn (for å være mer spesifikt: det er ikke noe). Oracle bekrefter ikke VMware. Deretter bekrefter Oracle ikke noe annet enn sin egen hard - og programvare. Men IMO, støtte er alt du trenger og diskusjonen rundt sertifisering fører ingen steder. Oracle kan be kunden om å gjenopprette problemer på en fysisk server hvis de mistenker problemer med hypervisoren. Isn8217 er det flott at vi kan gjøre dette enkelt med Replication Manager Oracle støtter bare Oracle RAC på VMware for en bestemt versjon (11.2.0.2). Enhver annen versjon med RAC anbefales ikke på VMware på grunn av støtteproblemer. Forventet å endres i fremtiden. Både EMC og VMware tilbyr ekstra garantier for kunder som distribuerer Oracle på Vmware. Så hvor Oracle trekker seg tilbake, vil EMC og VMware løse et problem uansett. Ytelse er ikke lenger et problem. Med Vsphere 5 kan en enkelt virtuell maskin ha 32 virtuelle prosessorer, 1 TB ram og drive 1 million iops. Bare de mest krevende arbeidsbelastningene ville ikke passe inn i dette fotavtrykket. Men med kunder som kjører hundrevis av databaser, kan vi kanskje begynne med de 95 som passer og gjør betydelige besparelser der. Etter den tid vi har gjort, vil VMware ha Vsphere 6 og hvem vet hva som skjer da. Hvordan komme seg rundt lisensproblemet Som jeg sa, krever Oracle lisenser for alle servere i en klynge. Så hvordan begrenser du antall lisenser Ved å distribuere en Oracle-only VMware-klynge. Bare kjør Oracle databaser her. Ingen programmer, ingen mellomvare, ingen fileservers, og prøver å flytte alt av det som ikke er relatert til databasebehandling. Ingen vertsreplikasjon, ingen lagringsspeiling osv. Si at du har et eldre miljø med 10 servere, hver med 16 kjerner, så du har 160 kjerner lisensiert med oracle EE og en rekke alternativer. Gjennomsnittlig CPU belastning er 15, men let8217s antar 20 for å være konservativ. Jeg hevder at en enkelt VMware-klynge med 3 servere hver med 32 kjerner vil enkelt gjøre jobben. Nå har vi 3 32 96 kjerner å bli lisensiert. 96160 0,6 60 så vi lagret 40 på lisensiering med en gang. Sannsynligvis vil den gjennomsnittlige CPU-belastningen på hele klyngen fortsatt være mye mindre enn 70, slik at vi gradvis kan legge til en rekke flere databaser inntil vi gjennomsnittlig ut på 70. Hvis det gamle systemet ikke kjørte Intel x86, men SPARC, PA-RISC eller POWER cpu8217s så var prosessorfaktoren sannsynligvis 1,0 eller 0,75. Intel har 0,5. Så for 96 kjerner (Intel) vil du måtte betale 48 full lisenser. En annen 33 besparelser. Besparelsene på 40 på lisensiering vil lett berettige en investering i en fin ny EMC-lagringsinfrastruktur med EFD, FAST-VP og alle andre godbiter. Tror du at kunden vil presse oss hardt for en 0,01 lavere GB pris konkurrerende HDS eller Netapp hvis vi bare lagret dem millioner i Oracle lisenser Men historien slutter ikke her. Ytterligere besparelser Let8217s antar at kunden behøvde høy tilgjengelighet og utrulling av ytelse og kjørte Oracle RAC. RAC er det dyreste lisensierte alternativet og du trenger minst to for en to-node-klynge. Men VMware muliggjør også HA (High Availaiblity clustering). Ved å bruke VMware HA i stedet for RAC, må du mislykkes og gjenopprette databasen i tilfelle avbrudd 8211 hvis kunden ikke kan tolerere dette, må han holde fast ved RAC (kun for kritiske databaser). Men de fleste kunder kan leve med 5 minutter nedetid i tilfelle en server CPU mislykkes, og i så fall kan erstatning av RAC med VMware HA lagre dem en annen stor mengde dollar. Let8217s antar at med virtualisering har du rettferdiggjort investeringen i en fin EMC-infrastruktur med Flash-stasjoner for å erstatte det konkurrerende utstyret. Nå er Oracle-klyngen ikke lenger begrenset av lagringsplass IO8217s og kan kjøre mer arbeidsbelastning ut av de samme 3 VMware-serverne i klyngen. Men du kan også erstatte vertsspeiling (hvis aktuelt). Du kan implementere stillbilder sikkerhetskopier for å få IO lasten vekk fra produksjons servere. Du fjernet mellomvare - og appspesifikasjoner fra databaseserverne 8211 som reduserer CPU-utnyttelsen og gir enda mer takhøyde for DB-konsolidering 8211 uten å kjøpe ekstra lisenser fra Oracle. Du har en kunde som ønsker enda mer Hva om de lager to databaseklynger for VMware One for produksjon (kjører Oracle Enterprise Edition (EE) med alle de alternativene de trenger) og en for Non-prod (kjører Oracle Standard Edition (SE) uten Alternativer 8211 god nok til testdev og mindre kritiske arbeidsbelastninger uten oppgave). Jeg vedder på at antall ikke-prod databaser vil være mye mer enn prod. Ved å fjerne de dyre alternativene, og flytte fra Enterprise til Standard Edition, lagret du en tonn penger på Oracle-lisensiering, da SE er mye billigere enn EE. Men vær oppmerksom på 8211 djevelen er i detaljene, og bruk av Standard Edition er ikke for svak av hjertet (for eksempel kan du ikke lenger klone en partisjonert database til en SE-aktivert server på grunn av den manglende lisensen og funksjonaliteten). Fortsatt hvis kunden er opptatt av å spare så mye som mulig, så kan dette være den endelige sølv bullet8230 Kjører de et stort Enterprise Data warehouse Forsiktig finne ut om de har problemer med det og se om du kan plassere Greenplum 8211 og lagre en annen pose med penger og påskynde sine BI-spørringer. But be careful, in an Oracle-religious shop it might backfire on you8230 Reality Check I had this discussion already with a few enterprise customers. And found that although the story is easy in theory, the reality is different. If a customer already has the 160 CPU licenses purchased from Oracle, then the Oracle rep will not happily give a money-back in return of the shelfware licenses. So in that case the customer can only save on maintenance and support. But having enough licenses on the shelf, he would not have to purchase any more for the next 5 to 10 years. So talk cost avoidance instead of immediate savings. And again, if they are licensed by user or have a site license, then saving on licenses will be a tough discussion. Still, the savings on powercoolinghardwarefloorspace would still be significant enough to proceed anyway. And don8217t forget the other benefits of private cloud of which we all know how to position: they are no different for Oracle than for other business applications. Final thought For this to work you need a customer that is willing to work with you and be open on how they negociated with Oracle, and a team of DB engineers to work with you to make it happen. If internal politics cause significant roadblocks then you will get nowhere. It8217s not an easy sell but the rewards can be massive. We8217re only just starting to figure out how to convince customers and drive this approach. Feedback welcome and let me know if you need support. The online Everything Oracle at EMC community has lots of information on this subject. See in particular this presentation which I co-presented (with Sam Lucido) at this year8217s VMworld. Download 8220US Oracle Technology Commercial Price List8221 for the database license document. Read the fine print because it8217s not always as simple as it seems. Oracle disk configuration Oracle Database Tips by Burleson Consulting Improper Oracle Disk Setup Under the heading of improper disk setup there are many sub topics. Some of these disk setup topics include: Interface issues Mount options Filesystem choices Disk size and speed choices Lets look at each of these in the Oracle environment. Generally interface issues resolve to bandwidth issues. A case in point, a major bakery had upgraded their system, putting in more, faster CPUs, higher speed disks and newer hardware overall. They calculated on the average they only used 75 of the bandwidth on the old system so they reduced the number of HBAs from 12 dual-channel to 8 dual-channel. After the upgrade performance looked great, until the end of month processing crunch, suddenly performance dropped to half of what it was before. Investigation showed that while on the average they only needed 75 of the bandwidth of the 12 HBAs during end of month, end of quarter and end of year processing they actually required more. Luckily for them the HBAs in the old system where compatible and, they had the needed expansion slots to add the needed HBAs to the new system. With the 4 additional HBAs in place they quadrupled their performance. The other major choice in interfaces is in interface type, SCSI, Fibre, Fabric. Unfortunately there is no simple answer, you need to examine your system and if IO timing is bad, find out whether it is related to contention or bandwidth issues. Note that when you monitor IO timing you need to look at it from Oracles perspective, that is, from the time Oracle requests the IO to the time the IO is received by the Oracle system, not strictly at the operating system level. If you see a large difference between what Oracle is saying IO timings are and what the OS is saying you need to track down where the time is being consumed between the disk packs and the Oracle database. Essentially Oracle doesnt like any mount option involving logging on its datafile mount points. Anything you can do to make the disk look RAW to Oracle is a good thing. This means nologging, noatime, async, aio and many other mount options need to be considered depending on your operating system. Dramatic improvements in performance have been reported from just changing the mount options on the drives otr filesystems that support your Oracle datafiles. Generally it is not advised to switch to nologging type options on filesystems where non-Oracle or binary type files (executables) are stored. In UNIX you can control whether a file system uses buffered or unbuffered IO. With Oracle the use of a buffered filesystem is redundant and dangerous. An example of the dangers of a buffered filesystem with Oracle is when power is lost. The buffer in a buffered filesystem depends on the cache battery to provide enough power to allow the buffer to be written to disk before the disk spins down. However, many shops fail to monitor the cache battery lifetime limitations or fail to change the batteries at all. This can result in loss of data in a buffered filesystem on loss of power. You can turn off buffered writes in several ways (buffered reads arent an issue, but you should always use write-through caching). One is to mount the filesystems used with Oracle files as non-buffered using such options as: AIX: dio, rbrw, nointegrity SUN: delaylog, mincachedirect, convosyncdirect, nodatainlog LINUX: async, noatime HP: Use VxFS with: delaylog, nodatainlog, mincachedirect, convosyncdirect Using Direct IO at the Oracle Level For information about Oracle direct IO, refer to this URL by Steve Adams: Checking Your Server Methods for configuring the OS will vary depending on the operating system and file system in use. Here are some examples of quick checks that anyone can perform to ensure that you are using direct IO: Solaris - Look for a quotforcedirectioquot option. Oracle DBAs find this option often makes a huge difference in IO speed for Sun servers. Here is the Sun documentation: docs. sundbdoc816-02116m6nc6713aview AIX - Look for a quotdioquot option. Here is a great link for AIX direct IO: Veritas VxFS - (including HP-UX, Solaris and AIX), look for quotconvosyncdirectquot. It is also possible to enable direct IO on a per-file basis using Veritas QIO refer to the quotqiostatquot command and corresponding man page for hints. For HPUX, see Oracle on HP-UX - Best Practices. Linux - Linux systems support direct IO on a per-filehandle basis (which is much more flexible), and I believe Oracle enables this feature automatically. Someone should verify at what release Oracle started to support this feature (it is called ODIRECT). See Kernel Asynchronous IO (AIO) Support for Linux and this great OTN article: Talking Linux: OCFS Update. Im Using LINUX and ATA Arrays, no Stress, but IO is slow Dont panic Most LINUX kernels will take the default ATA interface setpoints that were the standard when the kernel was built (or even older ones). This can be corrected. In LINUX there is the hdparm command which allows you to reset how ATA drives are accessed by the operating system. Using hdparm is simple and with it I have seen 300 improvement in access speeds of various ATA drives. Lets go through a quick tuning sequence. First, we will use the hdparm command with no arguments but the full path to the disk device listing: rootaultlinux2 root hdparm devhdb devhdb: multcount 16 (on) IOsupport 0 (default 16-bit) unmaskirq 0 (off) usingdma 0 (off) keepsettings 0 (off) readonly 0 (off) readahead 8 (on) geometry 775571663, sectors 78177792, start 0 The hdparm with no arguments but the disk device gives the current settings for the disk drive. You should compare this to the specifications for your drive. You may find that direct emmory access (DMA) is not being used, readahead is too small, you are only using 16 bit when you should be using 32 bit, etc. Next, lets do a basic benchmark of the current performance of the drive, you do this using the hdparm Tt option (for all options do a man hdparm at the command line. rootaultlinux2 root hdparm - Tt devhdb Timing buffer-cache reads: 128 MB in 1.63 seconds 78.53 MBsec Timing buffered disk reads: 64 MB in 14.20 seconds 4.51 MBsec Now lets adjust the settings, the c option, when set to 1 enables 32 bit IO, the u option is used to get or set the interrupt-unmask flag for the drive. A setting of 1 permits the driver to unmask other interrupts during processing of a disk interrupt, which greatly improves Linuxs responsiveness and eliminates quotserial port overrunquot errors. Use this feature with caution on older kernels: some drivecontroller combinations do not tolerate the increased IO latencies possible when this feature is enabled, resul ting in massive filesystem corruption. However most versions of Linux (RedHat 2.1 and greater) using modern controllers dont have this issue. The p option is used to autoset the PIO mode and d is used to set or unset the DMA mode. rootaultlinux2 root hdparm - c1 - u0 - p - d0 devhdb devhdb: attempting to set PIO mode to 0 setting 32-bit IOsupport flag to 1 setting unmaskirq to 0 (off) setting usingdma to 0 (off) IOsupport 1 (32-bit) unmaskirq 0 (off) usingdma 0 (off) So we turned on 32 bit mode and set DMA to mode 0. Lets see the resulting performance change using our previous Tt option. rootaultlinux2 root hdparm - Tt devhdb Timing buffer-cache reads: 128 MB in 1.63 seconds 78.53 MBsec Timing buffered disk reads: 64 MB in 9.80 seconds 6.53 MBsec So we didnt change the buffer-cache read timings, however, we improved the buffered disk reads by 45. Lets tweak some more and see if we can do better. The m option sets the multi-sector IO count on the drive. The c option sets the 32 bit option, the X sets the access mode to mdma2 the d1 option turns on direct memory access, the a8 option improves the readahead performance for large reads and u1 turns on the unmasking operation described above. rootaultlinux2 root hdparm - m16 - c3 - X mdma2 - d1 - a8 - u1 devhdb devhdb: setting fs readahead to 8 setting 32-bit IOsupport flag to 3 setting multcount to 16 setting unmaskirq to 1 (on) setting usingdma to 1 (on) setting xfermode to 34 (multiword DMA mode2) multcount 16 (on) IOsupport 3 (32-bit wsync) unmaskirq 1 (on) usingdma 1 (on) readahead 8 (on) So now lets see what we have done to performance using the Tt option. rootaultlinux2 root hdparm - Tt devhdb devhdb: Timing buffer-cache reads: 128 MB in 1.56 seconds 82.05 MBsec Timing buffered disk reads: 64 MB in 4.29 seconds 14.92 MBsec Not bad We improved buffered cache reads by 5 and buffered disk reads by 231 These options can then be loaded into a startup file to make them part of the system startup. Im Really Feeling SCSI About Disk Performance, what then Sorry for the bad pun (well, actually Im not) what can be done with SCSI interfaces To tell you the truth, not a lot, however, there are some items which you may find useful. Most interfaces will buffer commands and issue them in batches, for example, most SCSI interfaces use a 32 command buffer that stacks commands until it has 32 of them and then fires them off. This can be reset in LINUX using options in the modules. conf file for the SCSI interface module. In other UNIX flavors there are many settings which can be changed, but an exact understanding of the interface and its limitations as well as current system loads must be had before changing any of the SCSI settings. If you feel you need to have them checked, ask your SA. Disk Stress In a Nut Shell In summary, to determine if a disk or array is undergoing IO related stress, perform an IO balance and an IO timing analysis. If the IO timing analysis shows excessive read or write times investigate the causes. Generally speaking, poor IO timings will result when: A single disk exceeds 110 - 150 IO per second An entire multi-read capable RAID10 array exceeds MIRRORSDPM110 IOs per second An entire non-multi-read capable RAID10 array exceeds DPM110 IOs per second If a RAID5 array exceeds (DISKS-1)66 IOs per second then it will probably experience poor IO timings. Make sure Oracle is using direct IO at both the OS and Oracle levels Make sure your disk interface is tuned to perform optimally DPMDisks per mirror Seeing stress from the Oracle Side Disk stress will show up on the Oracle side as excessive read or write times. Filesystem stress is shown by calculating the IO timings as shown in Figure 16. For complete scripts, see my complete Oracle script collection at dba-oracleoraclescripts. htm . rem Purpose: Calculate IO timing values for datafiles col name format a65 col READTIMPHYRDS heading AvgRead Time format 9,999.999 col WRITETIMPHYWRTS heading AvgWrite Time format 9,999.999 set lines 132 pages 45 start title132 IO Timing Analysis spool repoutampdbiotime select f. FILE, d.name, PHYRDS, PHYWRTS, READTIMPHYRDS, WRITETIMPHYWRTS from vfilestat f, vdatafile d where f. filed. file and phyrdsgt0 and phywrtsgt0 union select a. FILE, b.name, PHYRDS, PHYWRTS, READTIMPHYRDS, WRITETIMPHYWRTS from vtempstat a, vtempfile b where a. fileb. file and phyrdsgt0 and phywrtsgt0 order by 5 desc spool off ttitle off clear col Figure 16: IO Timing Report An example of the output from Figure 16 is shown in Figure 17. Date: 112005 Page: 1 Time: 11:12 AM IO Timing Analysis PERFSTAT whoraw database FILE NAME PHYRDS PHYWRTS READTIMPHYRDS WRITETIMPHYWRTS ----- -------------- ---------- ------- -------------- ---------------- 13 devrawraw19 77751 102092 76.8958599 153.461829 33 devrawraw35 32948 52764 65.7045041 89.5749375 7 devrawraw90 245854 556242 57.0748615 76.1539869 54 devrawraw84 208916 207539 54.5494409 115.610912 40 devrawraw38 4743 27065 38.4469745 47.1722889 15 devrawraw41 3850 7216 35.6272727 66.1534091 12 devrawraw4 323691 481471 32.5510193 100.201424 16 devrawraw50 10917 46483 31.9372538 74.5476626 18 devrawraw24 3684 4909 30.8045603 71.7942554 23 devrawraw58 63517 78160 29.8442779 84.4477866 5 devrawraw91 102783 94639 29.1871516 87.8867909 Figure 17: Example IO Timing Report As you can see from Figure 17 we are looking at an example report from a RAW configuration using single disks. Notice how both read and write times exceed even the rather large good practice limits of 10-20 milliseconds for a disk read. However in my experience for reads you should not exceed 5 milliseconds and usually with modern buffered reads, 1-2 milliseconds. Oracle is more tolerant for write delays since it uses a delayed write mechanism, so 10-20 milliseconds on writes will normally not cause significant Oracle waits, however, the smaller you can get read and write times, the better In UNIX or LINUX you have multiple filesystem options, RAW, JFS, ext2, ext3, reiserFS, OCFS. You need to use the best performing filesystem usually RAW, ext3 or resierFS. Oracle OCFS is also viable. RAW is probably the simplest filesystem to understand. In Unix systems, a disk can be configured to contain a single contiguous chunk of space, or it can be configured to contain multiple separate chunks of space. Each chunk of space is called a partition or section. Typically a partition would be formatted to contain a filesystem, allowing a hierchical structure of directories and files to be created. A partition that does not contain a filesystem is called a raw partition . A database extent stored on a raw partition is called a raw extent. The primary advantage to using raw extents is the possibility of increased performance compared to extents stored in Unix files. The performance benefits occur because: File system overhead and address translation is eliminated. Database block addresses map directly to raw partition addresses. Read operations transfer data directly from the disk controller to shared memory and write operations transfer directly from shared memory to the disk controller. The Unix buffer pool is not used, avoiding the necessity to copy data from a Unix page buffer to shared memory and vice versa. Although they may provide increased performance, raw extents have several major disadvantages. You should not take the decision to use them lightly. Among the disadvantages are: Raw disk partitions are cumbersome to configure and manage. You have to keep track of what is on each raw partition yourself. You can easily make mistakes and destroy the contents of a raw partition. The number of raw partitions available on a disk may be quite limited. For example, on Solaris 2.5, a disk can have at most 8 partitions. Moving raw partitions from one disk to another may be difficult or impossible. Raw partition sizes are fixed. Allocating more space to a partition requires backing up all the partitions on a disk, designing a new partition layout, and restoring all saved data. You cannot use the same operating system backup utilities to make backups of files and raw partitions. You may get worse performance with raw devices than you do with files. The performance difference is highly dependent on the operating systems implementation of the file system. Many modern Unix systems, like Ditical Unix, AIX 4.2, HP-UX 10, Solaris 2.6, and others have highly advanced filesystem implementations that include many performance optimizations. Older Unix systems, such as Unix System V Release 4 are somewhat less advanced and raw partitions may provide better performance on these systems. You may not be able to use logical volume managers with raw partitions. Not all Unix systems support logical volumes composed of raw partitions. The EXT2 Filesystem The, Ext2fs is based on the Extfs code with many reorganizations and many improvements. It has been designed with evolution in mind and contains space for future improvements. The Second Extended File System has been designed and implemented to fix some problems present in the first Extended File System. The Ext2fs supports standard Unix file types: regular files, directories, device special files and symbolic links. Ext2fs is able to manage filesystems created on really big partitions. While the original kernel code restricted the maximal filesystem size to 2 GB, recent work in the VFS layer have raised this limit to 4 TB. Thus, it is now possible to use big disks without the need of creating many partitions. Ext2fs provides long file names. It uses variable length directory entries. The maximal file name size is 255 characters. This limit could be extended to 1012 if needed. Ext2fs reserves some blocks for the super user ( root ). Normally, 5 of the blocks are reserved. This allows the administrator to recover easily from situations where user processes fill up filesystems. Advanced Ext2fs features In addition to the standard Unix features, Ext2fs supports some extensions which are not usually present in Unix filesystems. File attributes allow the users to modify the kernel behavior when acting on a set of files. One can set attributes on a file or on a directory. In the later case, new files created in the directory inherit these attributes. BSD or System V Release 4 semantics can be selected at mount time. BSD-like synchronous updates can be used in Ext2fs. Ext2fs allows the administrator to choose the logical block size when creating the filesystem. Block sizes can typically be 1024, 2048 and 4096 bytes. Using big block sizes can speed up IO since fewer IO requests, and thus fewer disk head seeks, need to be done to access a file. Ext2fs implements fast symbolic links. Ext2fs keeps track of the filesystem state. Always skipping filesystem checks may sometimes be dangerous, so Ext2fs provides two ways to force checks at regular intervals. A mount counter is maintained in the superblock. Each time the filesystem is mounted in readwrite mode, this counter is incremented. When it reaches a maximal value (also recorded in the superblock), the filesystem checker forces the check even if the filesystem is Clean. Mount options can also be used to change the kernel error behavior. An attribute allows the users to request secure deletion on files. When such a file is deleted, random data is written in the disk blocks previously allocated to the file. This prevents malicious people from gaining access to the previous content of the file by using a disk editor. Last, new types of files inspired from the 4.4 BSD filesystem have recently been added to Ext2fs. Immutable files can only be read: nobody can write or delete them. This can be used to protect sensitive configuration files. Append-only files can be opened in write mode but data is always appended at the end of the file. Like immutable files, they cannot be deleted or renamed. This is especially useful for log files which can only grow. According to Dr. Stephan Tweety: The ext3 filesystem is a journaling extension to the standard ext2 filesystem on Linux. Journaling results in massively reduced time spent recovering a filesystem after a crash, and is therefore in high demand in environments where high availability is important, not only to improve recovery times on single machines but also to allow a crashed machines filesystem to be recovered on another machine when we have a cluster of nodes with a shared disk the real objective in EXT3 was this simple thing: availability. When something goes down in EXT3, we dont want to have to go through a fsck. We want to be able to reboot the machine instantly and have everything nice and consistent. You can take an existing EXT2 filesystem, throw a journal file onto it, and mount it as EXT3. The ReiserFS 3.6.x (the version included as part of Linux 2.4) was designed and developed by Hans Reiser and his team of developers at Namesys. The ReiserFS uses a specially optimized b balanced tree (one per filesystem) to organize all of its filesystem data. This offers a nice performance boost, as well as easing artificial restrictions on filesystem layouts. Its now possible to have a directory that contains 100,000 other directories, for example. Another benefit of using a btree is that ReiserFS, like most other next-generation filesystems, dynamically allocates inodes as needed rather than creating a fixed set of inodes at filesystem creation time. This helps the filesystem to be more flexible to the various storage requirements that may be thrown at it, while at the same time allowing for some additional space-efficiency. ReiserFS also has a host of features aimed specifically at improving small file performance. Unlike ext2, ReiserFS doesnt allocate storage space in fixed one k or four k blocks. Instead, it can allocate the exact size it needs. And ReiserFS also includes some special optimizations centered around tails, a name for files and end portions of files that are smaller than a filesystem block. In order to increase performance, ReiserFS is able to store files inside the btree leaf nodes themselves, rather than storing the data somewhere else on the disk and pointing to it. This does two things. First, it dramatically increases small file performance. Since the file data and the statdata (inode) information are stored right next to each other, they can normally be read with a single disk IO operation. Second, ReiserFS is able to pack the tails together, saving a lot of space. In fact, a ReiserFS filesystem with tail packing enabled (the default) can store six percent more data than the equivalent ext2 filesystem, which is amazing in itself. However, tail packing does cause a slight performance hit since it forces ReiserFS to repack data as files are modified. For this reason, ReiserFS tail packing can be turned off, allowing the administrator to choose between good speed and space efficiency, or opt for even more speed at the cost of some storage capacity. Of course we also have many other filesystems such as those from Veritas, Polyserver and other specialized systems. Oracle and Filesystems Generally Oracle prefers filesystems that dont do logging or journaling for filesystems that contain datafiles so if you use EXT2, EXT3 or reiserFS you need to mount them with the journaling or logging off. If RAW filesystems are used you avoid some overhead but usually can only obtain a 2-5 percent performance increase over modern optimized filesystems. RAIDRedundant Arrays of Inexpensive Disks The main strengths of RAID technology are its dependability and IO bandwidth. For example, in a RAID5 array, the data is stored as are checksums and other information about the contents of each disk in the array. If one disk is lost, the others can use this stored information to re-create the lost data. However, this rebuild of data on-the-fly causes a massive hit on performance. In RAID 1, RAID 10 and RAID 01 failed disks are immediately replaced by their mirror with no performance hit. This makes RAID very attractive. RAID 5 has the same advantages as shadowing and striping at a lower cost. It has been suggested that if the manufacturers would use slightly more expensive disks (RASMEDredundant array of slightly more expensive disks) performance gains could be realized. A RAID system appears as one very large, reliable disk to the CPU. There are several levels of RAID to date: RAID 0 . Known as disk striping. RAID 1 . Known as disk shadowing or mirroring. RAID 10 . Combination of RAID0 and RAID1. May also be called RAID 10 depending on whether they are striped and mirrored or mirrored then striped. It is generally felt that RAID 10 performs better than RAID 01. RAID 2 . Data is distributed in extremely small increments across all disks and adds one or more disks that contain a Hamming code for redundancy. RAID 2 is not considered commercially viable due to the added disk requirements (10 to 20 percent must be added to allow for the Hamming disks). RAID 3 . This also distributes data in small increments but adds only one parity disk. This results in good performance for large transfers, but small transfers show poor performance. RAID 4 . In order to overcome the small transfer performance penalties in RAID3, RAID4 uses large data chunks distributed over several disks and a single parity disk. This results in a bottleneck at the parity disk. Due to this performance problem RAID 4 is not considered commercially viable. RAID 3 and 4 are usually are used for video streaming technology or large LOB storage. RAID 5 . This solves the bottleneck by distributing the parity data across the disk array. The major problem is it requires several write operations to update parity data. The performance hit is only moderate, and the other benefits may outweigh this minor problem. However the penalty for writes can be over 20 and must be weighed against the benefits. RAID 6 . This adds a second redundancy disk that contains error-correction codes. Read performance is good due to load balancing, but write performance suffers due to RAID 6 requiring more writes than RAID 5 for data update. For the money, I would suggest RAID01 or RAID10, that is, striped and mirrored. It provides nearly all of the dependability of RAID5 and gives much better write performance. You will usually take at least a 20 percent write performance hit using RAID5. For read-only applications RAID5 is a good choice, but in high-transactionhigh-performance environments the write penalties may be too high. Figure 18 shows RAID 1-0 or 0-1 depending on whether you stripe and then mirror or mirror first and then stripe. In most situations you get better performance from RAID 1-0 (mirroring then striping.) Figure 18: Mirroring and Striping Table 1 shows how Oracle suggests RAID should be used with Oracle database files. Table 1: RAID Recommendations (From MOSC NOTE: 45635.1) Disk Speed and Size Selection This all points to the fact that in order to get the maximum performance from your disk system you must understand the IO characteristics (the profile) of your database system, be it Oracle, SQL Server, Informix, UDB or MySQL. You must tune your disk architecture to support the expected IO profile and must tune the database system to take advantage of the disk architecture. For example, an Oracle database has different IO characteristics depending on whether it is reading or writing data and what type of read or write it is doing. Other databases have fixed readwrite sizes. You must determine the IO profile for your database and then use the IO profile of the database to determine the maximum and minimum IO size. The IO profile will tell you what percentage of IO is large IO and what percentage is small IO, it will also give you the expected IO rate in IOsecond. Once you have the IO per second you can determine the IO capacity (number of drives) needed to support your database. The first rule of tuning your disk system is: Size first for IO capacity, then for volume. Some back of the envelope calculations for the number of spindles needed to support IO rate are: RAID10 with active readwrite to all mirrors: IOR is expected maximum IO rate in IOsec NSIOR is the average non-sequential IO rate of the disks in IOsec (range of 90-100 for RAID10) M is the number of mirrors (The maximum of the IO rate divided by the average non-sequential IO rate per disk times the number of mirrors to the nearest power of M or 2M) RAID5 assuming 1 parity disk: IOR is expected maximum IO rate in IOsec CNSIOR is the corrected average non-sequential IO rate of the disks in IOsec (range of 60-90 for RAID5) (The maximum of the IO rate divided by the average non-sequential IO rate per disk corrected for RAID5 penalties plus 1 disk for the parity disk) The correction for the non-sequential IO rate for RAID is due to the up to 400 penalty on writes (writes take 4 times linger than reads on the same drive). In some cases on RAID5 I have seen this go as high as 6400 (writes take 64 times as long as reads for the same file) when combined with other problems such as fragmentation. A case in point, early RAID architectures utilized the quotstripe shallow and widequot mind set where files where broken into small pieces and spread over a large number of disks. For example, stripe unites per disk of as small as 8K were common. Many systems read in IO sizes of 64K or larger. This means that to satisfy a single IO request 8 disks of the RAID set were required, if there were fewer than 8 disks in the set. Disks would have to undergo 2 or more IOs to satisfy the request. This sounds fine if you are talking about a single user wanting to read a large file from a large group of disks very quickly, however, what happens when you have 10 or 100 or 1000 concurrent users all wanting to do the same thing Tune for Concurrency This problem with concurrent access and RAID arrays is one of the most prevailing in the industry. The ubiquitous IO wait is usually the predominant wait event in any database system simply due to the fact that IO to memory is in the nanosecond range while IO to disk is in the millisecond range, when you add in blocked access due to multi-disk IO requests you get a snowball effect that can cripple your IO subsystem. Array manufacturers have begun to recognize this concurrent access problem and have increased the base stripe unit per disk to 64K, matching the IO unit for many systems. Of course now systems such as SUN and Windows utilize maximum IO sizes of 1 megabyte or larger, so again the array manufacturers are playing catch up to the server manufacturers. So what is our second rule of tuning disks Based on the above information the rule is: Always ensure that the primary IO size for your database system is matched to the IO size of the disk array system. Of course the inverse also holds true: Always match the stripe unit per disk to the expected majority IO request from your (database) application. In the 1990s Paul Chen of the University Of Berkeley computer center published a series of papers on tuning disk array stripe units size based on expected concurrency. In these papers by Mr. Chen and his associates they determined that the IO speed (as measured by average seek time) and IO rate (as measured in megabytes per second) for a disk determined the stripe size for performance in an array even when the number of concurrent accesses is not known. There were three formulae derived from these papers: For non-RAID5 arrays when concurrency is known: SU - Striping unit per disk S - Concurrency slope coefficient ( APT - Average positioning time (milliseconds) DTR - Data transfer rate (Megabytesec) CON - number of concurrent users. 1.024 1s1000ms1024K1M (conversion factors for units) So for a drive that has an average seek time of 5.6 ms and a transfer rate of 20 Mbytesecond the calculated stripe unit for a 20 concurrent user base would be: For a system where you didnt know the concurrency the calculation becomes: So for the same drive: 235.6201.024 76.46K so rounding up 128K or rounding down 64K And from Chens final paper, a formula for RAID5 arrays is: 0.55.6201.024 57.34 (rounding up 64K) The values for average access time and transfer rate used in these examples is actually fairly low when compared to more advanced drives so the stripe sizes shown above are probably low by at least a factor of 2 or more. I say this because while average seek times drop, the transfer rate increases for example on a Ultra3 SCSI 15K drive the spec for average seek may drop to 4.7 ms, however the transfer rate leaps to 70 Mbyte per second. So the over all value of the combined factor goes from 112 to 329, a 293 increase. Many system administrators are guilty of perpetuating the 100 myth. This myth states that you dont need more assets (be it disk, CPU, or Memory) until the existing asset is 100 utilized. This leads to performance issues in the area of disks. Due to disk physics the best performance for a disk is at the outer edges, once you get towards the inner sectors performance decreases because of the distance the head must travel to read the data and other factors. In the good old days administrators spent much time positioning frequently used files on the outer edges of disks. While physically positioning files on disks is difficult if not impossible in modern RAID systems, you should endeavor not to fill the disks to 100 of capacity. Some experts say dont use more then 30 if you want maximum performance, others 50. I say it depends on how the system is used, the operating system and the RAID array system. For example the Clariion from EMC promises to tune the placement of files such that frequently used files are in the best locations. So, what can we summarize about disk size and speed Get the fastest drives you can and plan capacity based on concurrency requirements as well as IO requirements. The more, faster disks the better. Improper Initialization File Parameter Settings For Oracle7, version 7.3, there are 154 initialization parameters, for Oracle8, version 8.0.5, there are 184. In Oracle8 i there are 194. In Oracle9i version 9.0.1 there are 251 and in 9iR2, 257. In 10g the number of parameters actually dropped to 254 but the number of undocumented parameters increased. In 9iR2 the number of undocumented parameters was 583 up to 918 in 10gR1. Fortunately there are very few that you need to adjust to tune Oracle. Table 2 lists the major tuning parameters, but is not supposed to be a complete list by any means. Table 2: Tuning Parameters How to determine proper setpoints for all of these is beyond the scope of this paper. However the Oracle tuning guides provide many good tips as does the Burleson Consulting web site: remote-dba . Improper PGA setup I dont believe there is anyone out there that believes disk based sorts and hashes are good things. A disk based operation will take anywhere from 17 to hundreds of times as long as a memory based operation depending on buffering, IO bandwidth, memory and disk speeds. Oracle provides AWRRPT or statspack reports to track and show the number of sorts. Unfortunately hashes are not so easily tracked. Oracle tracks disk and memory sorts, number of sort rows and other sort related statistics. Hashes on the other hand only can be tracked usually by the execution plans for cumulative values, and by various views for live values. In versions prior to 9i the individual areas were set using the sortareasize and hashareasize parameters, after 9i the parameter PGAAGGREGATETARGET was provided to allow automated setting of the sort and hash areas. For currently active sorts or hashes the script in Figure 19 can be used to watch the growth of temporary areas. For complete scripts, see my complete Oracle script collection at dba-oracleoraclescripts. htm . column now format a14 column operation format a15 column dt newvalue td noprint set feedback off select tochar(sysdate, ddmonyyyyhh24miss) dt from dual set lines 132 pages 55 title132 Sorts and Hashes spool repoutampampdbsortshashesampamptd select sid, workareasize, expectedsize, actualmemused, maxmemused, tempsegsize, tochar(sysdate, ddmonyyyyhh24miss) now, operationtype operation from vsqlworkareaactive spool off clear columns set lines 80 feedback on ttitle off Figure 19: Live Sorts and Hashes Report Figure 20 shows an example output from this report. Date: 010406 Page: 1 Time: 01:27 PM Sorts and Hashes SYS whoville database Work Area Expected Actual Mem Max Mem Tempseg SID Size Size Used Used Size Now Operation ---- --------- -------- ---------- ------- ------- --------------- --------------- 1176 6402048 6862848 0 0 04jan2006132711 GROUP BY (HASH) 582 114688 114688 114688 114688 04jan2006132711 GROUP BY (SORT) 568 5484544 5909504 333824 333824 04jan2006132711 GROUP BY (HASH) 1306 3469312 3581952 1223680 1223680 04jan2006132711 GROUP BY (HASH) Figure 20: Example Sorts and hashes Report As you can see the whoville database had no hashes, at the time the report was run, going to disk. We can also look at the cumulative statistics in the vsysstat view for cumulative sort data. Date: 120905 Page: 1 Time: 03:36 PM Sorts Report PERFSTAT sd3p database Type Sort Number Sorts -------------------- -------------- sorts (memory) 17,213,802 sorts (disk) 230 sorts (rows) 3,268,041,228 Figure 21: Cumulative Sorts Another key indicator that hashes are occurring are if there is excessive IO to the temporary tablespace yet there are few or no disk sorts. The PGAAGGREGATETARGET is the target total amount of space for all PGA memory areas. However, only 5 or a maximum of 200 megabytes can be assigned to any single process. The limit for PGAAGGREGATETARGET is 4 gigabytes (supposedly) however you can increase the setting above this point. The 200 megabyte limit is set by the pgamaxsize undocumented parameter, this parameter can be reset but only under the guidance of Oracle support. But what size should PGAAGGREGATETARGET be set The AWRRPT report in 10g provides a sort histogram which can help in this decision. Figure 22 shows an example of this histogram. PGA Aggr Target Histogram DBInst: OLSols Snaps: 73-74 - gt Optimal Executions are purely in-memory operations Low High Optimal Optimal Total Execs Optimal Execs 1-Pass Execs M-Pass Execs ------- ------- -------------- -------------- ------------ ------------ 2K 4K 1,283,085 1,283,085 0 0 64K 128K 2,847 2,847 0 0 128K 256K 1,611 1,611 0 0 256K 512K 1,668 1,668 0 0 512K 1024K 91,166 91,166 0 0 1M 2M 690 690 0 0 2M 4M 174 164 10 0 4M 8M 18 12 6 0 ------------------------------------------------------------- Figure 22: Sort Histogram In this case we are seeing 1-pass executions indicating disk sorts are occurring with the maximum size being in the 4m to 8m range. For an 8m sort area the PGAAGGREGATETARGET should be set at 320 megabytes (sorts get 0.5(.05PGAAGGREGATETARGET) ). For this system the setting was at 160 so 4 megabytes was the maximum sort size, as you can see we were seeing 1-pass sorts in the 2-4m range as well even at 160m. By monitoring the realtime or live hashes and sorts and looking at the sort histograms from the AWRRPT reports you can get a very good idea of the needed PGAAGGREGATETARGET setting. If you need larger than 200 megabyte sort areas you may need to get approval from Oracle support through the i-tar process to set the pgamaxsize parameter to greater than 200 megabytes. This paper has presented the major tuning issues I have seen at many sites during tuning engagement. I have presented ways of determining if the issues exist and how to determine settings to help mitigate the issues in an active database. Burleson is the American Team Note: This Oracle documentation was created as a support and Oracle training reference for use by our DBA performance tuning consulting professionals. Feel free to ask questions on our Oracle forum . Verify experience Anyone considering using the services of an Oracle support expert should independently investigate their credentials and experience, and not rely on advertisements and self-proclaimed expertise. All legitimate Oracle experts publish their Oracle qualifications . Errata Oracle technology is changing and we strive to update our BC Oracle support information. If you find an error or have a suggestion for improving our content, we would appreciate your feedback. Just e-mail: and include the URL for the page. The Oracle of Database Support Copyright copy 1996 - 2016 All rights reserved by Burleson Oracle reg is the registered trademark of Oracle Corporation.
No comments:
Post a Comment