From d017908e6ddf36dacdddb62dd144cb3ea40f932c Mon Sep 17 00:00:00 2001 From: oetiker Date: Wed, 9 Dec 2009 15:00:10 +0000 Subject: [PATCH] last touches for lisa09 git-svn-id: svn://svn.oetiker.ch/rrdtool/trunk@1989 a5681a0c-68f1-0310-ab6d-d61299d08faa --- tutorial/lisa2009/rrd-by-example/body.tex | 44 +++++++++++++--------- tutorial/lisa2009/rrd-intro.odp | Bin 524644 -> 524683 bytes 2 files changed, 27 insertions(+), 17 deletions(-) diff --git a/tutorial/lisa2009/rrd-by-example/body.tex b/tutorial/lisa2009/rrd-by-example/body.tex index fe79d151..23eee881 100644 --- a/tutorial/lisa2009/rrd-by-example/body.tex +++ b/tutorial/lisa2009/rrd-by-example/body.tex @@ -6,6 +6,16 @@ \usepackage{lmodern} \newcommand{\addgraph}[1]{\includegraphics[width=\textwidth]{ex/#1}} \setbeamercovered{transparent=25} +\AtBeginSection[] +{ + \begin{frame} + \begin{center} + \Large\textbf{\insertsection} + \end{center} + % \frametitle{Outline} +% \tableofcontents[currentsection] + \end{frame} +} } \mode
{ @@ -106,7 +116,7 @@ design is that data that get written on every update is as close together as possible.} \begin{frame}{rrd features} -\begin{itemize} +\begin{itemize}[<+-| alert@+>] \item optimized for time-series data \item fixed size rotating data store \item constant on-disk size @@ -150,7 +160,7 @@ together as possible.} \lstinputlisting[language=bash,firstline=20]{ex/update-real.sh} \lstinputlisting[language=bash]{ex/update-real.txt} -\begin{itemize} +\begin{itemize}[<+-| alert@+>] \item rrdtool re-binning at work \item major difference to a normal db \item all bins contain 1.0 @@ -160,7 +170,7 @@ together as possible.} \mode
{\newpage} \begin{frame}{optimizing your rrds} -\begin{itemize} +\begin{itemize}[<+-| alert@+>] \item update of multi DS RRD is cheep \item single update interval per RRD \item RRD modification is expensive @@ -179,7 +189,7 @@ together as possible.} \begin{frame}{fetching data} fetch is for reading data from an rrd \lstinputlisting[language=bash,firstline=8,lastline=9]{ex/catch-fetch.sh} -\begin{itemize} +\begin{itemize}[<+-| alert@+>] \item one RRA with two 300s entries \item one RRA with three 600s entries \end{itemize} @@ -206,7 +216,7 @@ then pull 900 seconds \end{frame} \begin{frame}{fetch recap} -\begin{itemize} +\begin{itemize}[<+-| alert@+>] \item looking for complete coverage \item resolution is only a suggestion \item time stamp in output marks the END of the period @@ -224,7 +234,7 @@ then pull 900 seconds \begin{frame}{the size of an rrd - result} \lstinputlisting{ex/rrd-size.txt} -\begin{itemize} +\begin{itemize}[<+-| alert@+>] \item overhead is minimal \item 8 byte per double \item \ldots per datasource @@ -530,7 +540,7 @@ $15\mathbf{+}23=38$ and uses it as the new step size.} \begin{frame}[fragile]{CDEF internals} -\begin{itemize} +\begin{itemize}[<+-| alert@+>] \item data may come in different resolutions \item all items in a CDEF must have the same resolution \item resolution is expanded to greatest common devisor (gcd) @@ -586,17 +596,17 @@ A VDEF result has a value and a time assigned. \section{Holt Winters Aberrant Behaviour Detection} \begin{frame}{about alert generation} -\begin{itemize} -\item when something unexpected happens send an alert\pause -\item fixed thresholds are too wide a net\pause -\item moving averages weigh all data equal\pause -\item holt winters can predict the future\pause +\begin{itemize}[<+-| alert@+>] +\item when something unexpected happens send an alert +\item fixed thresholds are too wide a net +\item moving averages weigh all data equal +\item holt winters can predict the future \item and no one considers himself clever enough to use it \end{itemize} \end{frame} \begin{frame}{rrd - holt winters assumptions} -\begin{itemize} +\begin{itemize}[<+-| alert@+>] \item data is periodic in nature \item data has continuity \item data continuity is periodic @@ -605,7 +615,7 @@ A VDEF result has a value and a time assigned. \end{frame} \begin{frame}{holt winters aberrant behavior} -\begin{itemize} +\begin{itemize}[<+-| alert@+>] \item prediction of future value and confidence band \item confidence band is like a standard deviation \item real value compared to predicted value +/- confidence band @@ -621,7 +631,7 @@ A VDEF result has a value and a time assigned. within a configurable interval, RRDtool logs a failure.} \begin{frame}{holt winters configuration} -\begin{itemize} +\begin{itemize}[<+-| alert@+>] \item HWPREDICT for starters \item tweaking required \item know the knobs to turn @@ -632,7 +642,7 @@ A VDEF result has a value and a time assigned. \end{frame} \mode
{ -\begin{itemize} +\begin{itemize}[<+-| alert@+>] \item Keep it simple, go for HWPREDICT only when you start using holt winters in RRDtool. \item Every data set is different, tweaking is required. @@ -779,7 +789,7 @@ LINE1:pred#0a0:Prediction \mode
{The image key only shows up when the graph file name is '-'.} \begin{frame}{v-interfaces} -\begin{itemize} +\begin{itemize}[<+-| alert@+>] \item rrdtool info \item rrdtool update\textbf{v} \item rrdtool graph\textbf{v} diff --git a/tutorial/lisa2009/rrd-intro.odp b/tutorial/lisa2009/rrd-intro.odp index 2ccfb30855014f3fc11d8b0f31c32db8916f4314..e2bf67eb578d7bab8f24d5dc097e8ff8aa481e28 100644 GIT binary patch delta 7226 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 delta 7170 zcmZ8m1yodB*Pfwf=x(HulfzJ+2?uo-uKSAYu!C-pAdiQwNKO-in54E1ONaS0Du}rVyGZMjeZz$v0_1uI7G-0 zDVonk0DyCm=w%B6D9$wq43)S55l6@5;Z>}&?u$GGSBzUgBpy*ckCF2cAyXHRSmS{T z-0XaGjD~>A+z-x|mk0; zliebQ;ygO}m`ItpkB$Nr62AC96#@aicR4lyK#t8r1&W#wJ)~}%e*`UqZ4XCN0Kn1o zAK^nUQl#l)DmFWE_uZp2#fIXC{^;lkqImpsljFB282tYv4`uou=pX_BI*9+?7q|wU z7xV$~F+NBDWG4RT9J+ymoAh08tLWCI7oc+RHRPa)_=9(n?I^EToPvSA zekHLA`s(0VnVol^Gy3P`PwX?@;*d<|WacAOJGOYT1g=3Vclu7ftISGT+18IWv`!Y5 zj=`)y$vWwQcsS6oetW_oGnv(0&rwfTF$Xfk_tk>?qQ6L-JoDo0FVc;+Z4W6yd#jm7I+-^ZCUm#8RHq@73I@CTJfs115N% zDv{(OQ}6D}5Np49#kx;MJP0t$_(7(s9Z|(F!I@p*EfWH_&oJ%N(c~OnlWGz^e6`&E zPIXeu))?lcsB5&yQ9M*IjC z-f$Pb=`Hu&qcs`)C}Y-0&G2F+yR@aQx%+$Q4rV8`6b*mN-W z9kF~G0$CM8xosztEYzbinXOozJ&(QVC(xp-dpqQUFs9tFzQZC1Q>PRpg5aU6-3_6ZwqpX*n}4U z8I>xwOAL8yTeO2C*_2-d(_25rK~zMmUl;S zf>sI?IYB^cX?VdkJ!ERwtcmxh6%mU{21=jFt)rxG>WfrmAX8ySHpJ&uf9a6mT`;V) zO7b@z8l%SD6Y%}2=oNOd=MmURUbc?|H8_Z>$;K# zSF523VjLx5^rqq}5+C~2)uvqW`yN0>fw4s#}ev?#^F!DLiOv>v%|fuJA9 zfgKA8o8LQ@0wH6VsJ;MLso>ml+Dlx|vK%o5Lq(6VSHhK0k9&aWFq@240(Sp4fUOrB32S{19p_c-protLNkm zQ2MDtiV_C_AB7JB+8L??u$O-yeMI^WJ=h!-ElQg-7&2Et@QSF%i6lO|Hy-<~Q;xIU z3ybOy6L)9hJM+cPBeuL}d5ouG?imz?Q$}!VpHMPncGamYs$oU=$<+&cGXs~s3&4=?3ir%X)sMj zr=);yYH>MZ4u$yM7*Y58RAi-C( zs?KrTqdD2jngC2dFukk*zA@|ZWUFm|OU||Do2bY+ms{D|CQDFGLbuJ2b&*({5IFyd zbBkgzKRoVmp-1%Ru)B`Q^WG3B{ZHfP5T=k@ikS?#ZV?!j;XpDU`#0(%%EM64ts;dv zXpxFKrfoRmM^iTJAH={jHi2%bp3RIZoH^lyF>0mAMK%>g)LqB&km|T_3MbC86|N(( z>zBc16bQwfksdT3g(E6=t7Nm3;UnWLdMId|Us{&@!Sc?cyxUraa=3hih@RB}20AY@+nG zb4`6{Fu*pvo|4P+Xv)S#!dXtb`WvLLFR$oZUl}7MlRSuf zTEFXSy-LOBwieb47jDVog3B&0hW2YVnUVPl+cvTWI@dFqFWy|wj7-KhL8?!yvP;G6 z1F}ke7z`4J%2ve`6MmPW7xd&gRb1Nzu$Y*fdv(YRWsQVN)VLqMlSoY$l9G3%%@mQo zg^yBXCceb52jMLSsWvbc3Ahp;@4rT$FEV#efws}RF9dIeEtygom^7(h=sfwPh6PWm zE8M}s6M`iaJkywwcVlwvg5=Nmsv2ZD#WiM> zI8+DMXO_OgDpDZL`EDdbnnQsp$t}m+{{62JvJWtgb3WvRFii5#^CRcyIthuZFyQFl zIH^IEIMf5Y&0^6WplQ=W_iPjl>fMc!u$846?+ zx@USG%nR;Lg;oF?em8mvWOyG)7n%rYBfejS?aW(3=DY=diM(I^&|+U{Du6W~8WJ{N zOHxL@Sx)|Czss!KUKeXB6n#2W$~|-b2l*bb!RZRC-ig5HJ4_>6#~|T)D{dbFJJS>4 z73wuf;ZS9k|1G?6?w5;R^CaEwLV0fuM(^OR^GW?&BfCIpI4(_{r=Gn&Re#0iZ9!`)RsXl7Wbc zH!mnmEqrAC@_-e|oy1(e7XrCkeSM4iTfUI?3{mhG)^yt&+8@e&OHeFvg=&(gTjJ~c z;y>9WMxRxKhYw1}Tnz>W;NCeK7W*tq#-CH#S`wtIP-ts}7;<@ng2^Jz}-S~7C)OwKo2%vmAo9J-iNi5%L7 zKIEV-IUdYaBy^U6_-wbT628=Li_(+&o_zx;7~U8ySgbK;rWp&$$zzW5$UH;|K}BIv z^6h6cF6CxqY@0CFg^L9A}&FuCqSptV`~H?mr2Sx}s~(?0`iYrI4Yz z)6z***m8-1ke~4;mUci$sVU>wj9}||q6!(D3MQ~15!T%<2|9rEJ3vBp>;!Q5ZlDqg z&|^hj1tv)-8PcISZ2kC_f+Es|OJcQUX~aM6dSEk}T#em6BRs0nuzf?vFCKN~I+FW;Aj2#z19IuvpS=m(b!wq)Rg%;kSbTVA*Ak8eN74qk!`ZmTES zC5r4}@~Tg8Hz~|}s1R$U&dz_8YK!M0Hx3*f_VR-N!?OdVkZ~N$17Tn2f2op z-eAqmI2-yP3CPb+qNVocRe!VY|6|UXaHEv$NXIEdgv7{dK31YseY0L{78A1*txbZM z!OEc!(|j1t*Kh+XyyBz7A)7jPvH6)Mw9>%4>?FCyVZ!Pia5c`*LTV#Uew)wbugJ1RyXwi}Pp2NeU4wq??yy0G`9eBN7tqI9MZg60&s=a&oH6WaF&AK8aApD&Fiq2sM7v zz_0Q-o7DVj%G~qq0CC>{OBy^z(s2cK;=?oB+Mf+}`Mf(&naoDjSQL{WUhC0A^Hfy- z4ej*|k}Rz}r`EAy1ir!V@H8*TrjW6MIDGmd$w7vUrQ@vS+dN+2cw1g8%C}a_-BRP3 z2pc873jH3fnYN+^8*6>CPxaN69W<7Fe$d5!Rcxv%D;pfq8R&Ah=_L6<(Xv-ZNWC}z zNuclV9hPQOH%M03^{kE0jMvdp%pJx4s;h`c@q*W-OtZ%#ha$5oK868g&tNNnq;aCz z^I4HXcwqwCAl#gL*46aw5t88`!?Qxw<+>-&Mnh++_A!ZXCr&-*6U21}WNog?O$q&5 zC#~xVySjq1(>p}{bBIsSHAzCzPRhQsN3@7K_LrvhK~;D-)Vn`+y&4U5(#l%1Y>i8) zVM{=~;;T0QwO0VNpE0I_>>war-?+C9byPtuMo~3L9Kdd^=RZAH?7&0ze9o=!tM^-J zp5xE;V=unsSFNcOFr92o$3{5}lK0Cr}sM(iGTHA&qdIYeYGZed9)tmH zf`P#Qk$3*e53#(DB<~*RasKug&i{z{dms+Tlx;aDs>lY}(*PWo-lq<2>JlMrp7f+r zAAJ~1G>PQe`f5jGK_qP3H(_C6LxW9s^@oSk6x?A$F2XjB%@ZS%lrO2jm=o8~vz3{tLQ8V5F`QA6U(z2s1C zL=uB~#i7`C{i?yzW_H9jE_u4$GTOImkO<$D@|cRt@{D?}teHL+r1nrk(zm-G^?4+9 zncIwUF!CIVK%FB{|F7W8s0JooqSBKaiDsk)zfxM#d3Y2V9JS6kAwZukK2Xy7Qs?W_ z(U;pH(Cos@BNxg;m#?*szd19P5gLon*> zD0fXjALW=o`;rj0BE+FI^)gMX9ihMp4NHO+Hhd7^KsB~ps88quBEARq6cTRAlc4K; zY6NWMBnf%!)q`PN`KKJ_zeX~TDf`TM#3&ARBy=(A0;S5}Jzgr2uVxB(IJf&nFfE)# zF~5nv^z{`BhDI(3AAc$%Fo-f>fqdYXpWlPIm>G^9dAhbJcm34!Xjxu=rPkLHE6o5o z-RuudVH4Y?LB6bcGn)Pjqn;`x>Yk)P_8HCmy&!rBY=o@S)u7`v=ZBNaaV(k|Oa{v` zv+!N2bSJCIfA_EHl2nLf8VrrF$N+N-zdeGy)VTk#^_4u!Cht^0dY9#S=-M~ z42>?zcngc*@hcsbNHNBwv*3@&cWZwIiVouS6Qs?P2gXYzmh7ZpRF8J|1U7==<=Y>o zYaQz9!WODwDDFO2b0#9QxE)y22XAkD|WJ2dh= zLJ_)_Uu>h#*x!OKjiyJ_Ap&N$!bRtmJqMPen3ZS+k;9Aiejrku?`AzpUjn3sOu1!) zgJ5*8=vaV**j2>g^4`v z#TO*#zUWdXMj-0kGq8%%Y6^!+VQD=9J6<Bb5eRTn{54OC zwjrS>yFdDPKLg`s%gN4E=`^aSKvBn8SJtZZmInjB>537>$2VO0gqB&sWf7G=kxBA! znK7X`7F%V0=@Rtbjmr@MED`QhOgyw;O^t}H6rZ$9>@=*KglSYmFsusAWQ;C&g(ZnP zV@K950L5uhFLh!F;zNMEjc6tzrJ5c-a%Ot>G|53 zt#^j7@|C)Zj z%Gq>B(IG4NE3YG^?PxOjf6~6)AxXlyqrvf5)Jcty$j?n2hnz%xHS*>BFchZH8W99% zk?XU}-y3qXVs^9x>&hJ3pF0(Fl@y70NA#KwAO>|_2eR`b;-kQ=o*yooA%P8BC;MBTskW9@ELVcrTYaQQOTzsYDj(YQZnWdv)C4@uC7 z6HeI;7xPBz*&4JXJd6{K-M2BC%GZG}95;uDgw(B0L#FDgtQ>~<8760I`B<7n1GD#> zCfgScP|P*k)#_^YKgii)ke`p)@$G*ue(Fi;=Cg�V)Of&GYXOStj zBHSS30RT*l|28c!82oUgQ?qaaibr^C5T56M8b|3lNb7NpcJT+z{$k5tB)|N_zyFKB z|03JfAO6ck3U`F{}!{%39Q7wi8b;q4#Z@h|q@f&?%hkDvb2 zhoRVaAXc?U>VF&XLl6G@QS1i&+m3A&Wq}9;00O|D9pDf#@|`nlrUU@^sR00ze-r+} zNND&Si1BeZYVSZ4h_SmM=*%vN33`7A!gypc?;qH`2bK#4qJqlagU}w>7*;R^A|nh0 zwSj@iG5%cY&-qzQ(}SY-prpe@BMEbColyN7!w9& zf4tm7QJ{FtESOpJpF_ESp7fswjqzVU=KUTB;9}