From 1b8ebcc69092723b04d66b3eca8488933cf00af1 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Wed, 17 Feb 2021 12:18:35 +0100 Subject: [PATCH] Add the stats to our docs Signed-off-by: Pierre-Yves Chibon --- docs/_static/datanommer_max_per_req.jpg | Bin 0 -> 20992 bytes docs/_static/datanommer_mean_per_req.jpg | Bin 0 -> 20011 bytes docs/_static/datanommer_percent_sucess.jpg | Bin 0 -> 20718 bytes docs/_static/datanommer_req_per_sec.jpg | Bin 0 -> 21863 bytes docs/datanommer_datagrepper/index.rst | 1 + docs/datanommer_datagrepper/stats.rst | 151 +++++++++++++++++++++ 6 files changed, 152 insertions(+) create mode 100644 docs/_static/datanommer_max_per_req.jpg create mode 100644 docs/_static/datanommer_mean_per_req.jpg create mode 100644 docs/_static/datanommer_percent_sucess.jpg create mode 100644 docs/_static/datanommer_req_per_sec.jpg create mode 100644 docs/datanommer_datagrepper/stats.rst diff --git a/docs/_static/datanommer_max_per_req.jpg b/docs/_static/datanommer_max_per_req.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ad096e333fa6b20b40df50c838afcd97258821fb GIT binary patch literal 20992 zcmc$_1yo(jvMxLq?ry=|-Gh68;2vCq1b26Lf)m^c9^4&*yF+jb?hgORKKEqrbI&>V zzwg~U#_Q2zbyro_*WJ~tXV>ag^L62M9YB$mkdgpEAP}Gr=mEg%G9U`TKtVx6LBc>o zL&L(tz#(8DBEZ8Vyg@@p#vs5YA|$}Y$0sIdq#`DzC&S05=AxlzW?^S%C!%`G&&|rm z$i~k43j_oU3yT1cfP;vL!%Bir!uo%lUb_KQ7?28>4mgMu07C_Vqk>+00XzT%0>FO_ z_jdw^fP?}ALBI9_IDg1~3w|XK7&yf15`X{>0>DtfQ2+pR+W8L+{%vArySvO8->@HR z_naeH;!Y2!u;<`OiqLdAp&~v^Cm8EacahY6l9QTij2dkJ69pV&NPiPA_CFY4oM_P+ z=bPOEtYYmGu1P}u0}G+9LnsZCQJS!xRex$hQEE&ZU6GC0Q(~Yi$O>~n%>0+dxm&_- zT`|C<4aQ_^hh5^`2(w=aq?|2UVc>Z)z z%K4@Ls_{>lfnZm;_`kpc>82UO*-jq;z_WYoJ}Q&NUOMV40G^q4#R$zN?JO%8d9_-* zaLx~}Y^1-(XoKIsJq7@v(qL!Q+H)V0e`ou>IKQZu9YwRWEcS{BCf_y3%Nw}2&A%p& zyE=wVIs5(cu!y)8fXbpxg)T#QA|bM46>zN%O5O~nv>7q7n0w}ABJ2cMm`B@*GC$!u zTX8LB^q@0I!T$cHC`I=qD{hrCwU!o7Gx4l;Cr?>lz1ZkXj0>UvS{vM`=7zn)7Ss9` zok{kdqy=kl&1Ro3G4Hs%_PeGXw}daVaqa;C_laRYCNec95%G6VcuV@}KmMS_*b^U%s^17#l&y%1M2QH?lv-jhU-U ztZJ|9xNuT1IYA$uyz6hX7vl?m&XbKavGT+VUsBF@78}N@XUenWg=Ptv?afXbKTl80iZVYq_pcU z++Y3K=pPcy{Qf`C|NlwwwHKg80YDI7AaHO<5CHy%3K#$ahd@O`hr}ReW)(ugBq38^ zA=S5iT>@Z0AOHjj_6m#|G~i!GHID5~z}sF$3rF!*RY^|?-lVjcM=iiOQyK%A=sx2b-Iwfu}QJlDJC_V_CX714a>GqlL*$F>(vc~f#Gm%BL5CaOnvO5 z7tVzi3Hzhm1smjImWSDg7p5K<5s8gMg=+s9roh3U%(bK!GZQAAuofAw2Yn#8bKVyl zhmramU$J+Mv$qlfZPBchW6$mt$X|Se)H3r~qdT$-zFrx5PePM*GAXjwB#+^Z+3^20 z!NHU%aJrM+vNKFA{AMAX^OUY7=hg?Nz`%~-%ShWAX}BpNQ4|=$G^tHD~8vovye1oT%58yvU1pzF=}0CPhI{;~q$(WEVJHA9_UR zd?QJeGVXlN`#)(|U1Q(g|kCUFd#b53_K2%VADjiW)J;d$PD-r#uUPFhc9h>n`oYT@4T85wR zC01`;gg0n-98FzB`emZdWHY`wWx*INQikn2d@MFGqmZ_56UZKH8}h$NhASEb^=kd0 zsqAENHmv!?`Q-ul3Yq8kiw9LpN#zP9Xtcf(974)UDB`M-{n=q&&Fma0un&&b zsPksqR}_Kaa$TJe8W3J-e_rDc8Xy@9?yi;z9K$u3ZlmMm#|pmT7d~2MUK$vhTAdy%{{BeqSZ2)X2gG z`iJL^>A7!M*}8}@1URWI&f2unYtf^y+PLQu>K%N~KXFg|AxP zH(IE>wMMM|Y^kd6KK;2+K60$&+G%7EDO{7s$l|C{`uRv3tAR{sAsn_eZ8EkB@2|TN zk~yOOFMBk#8>cU@Uq^@(r2lL-hC(#1nBrkeD2Z`n7^x{q;N753%|0qUEcdrfJ=ho6 zdPy4>HE{tCpJ|eeR?}X<*fscoJJ=tZzg_Gxcl~a4D>APLREpx9qf%xXeX-Trc*@8- z{I?3-yN@Ja)yS>!A{uI2wBTz}oh4c@Z_d?dQ3xz#Ni7sHI;{QPtL3B4l-+C}(N**} zAC;CgyJ5smU?Dejwy&Zk7rxM?vxwQNmBvf|iqTy-<|%y@3|%uxmmtIcpeJ_uwwX4f>+EA>^t8H;hY!aU zj7yux#})9Of~PiX8_Q{m)@#u*ZU{5F^*+VMJDMpwem(k9G;cg>Xx#O+VY<6(HhUKN z*R$?#IXx;#)_Cskc{X&oX@BHcc^6;t`yP&Dk6L4LY9D?vT{q;eZ68@6s@RM5qK)vf zK+MLA=bR6S4ApJ1>Z{D9`en5z&YOiVgR4Q&BSB_}`7z%|jF2wgWsT(PyP9yfI}Kam z44{k~a(9zlWa^C75)9uD8Wg1kn)E<;GP|}^)lMa*8kC^kw^Y^MEJ>O7;VoUT>Vx6z zg}1o|%cq)VMSeI6w2f49!))x<5+&q2k&}o@lS)m|8hBD(+<~jp9{wIGBv*Vhk+~s5ec7mZ#Mimo z^TQ<6&Or_F@vPOJgsfj!df-I}CBTUZq#Eu&%iICm`iOY*nOG^rfoYm&XUGxlxbJ)I zRB6C^6?p{{)4Hsw!IY~Jw3%N4j8f)UaB%mVvU3hr>dmlxmkZdy-AvGqS*P9rw_2f_ zG%UrjVN_Q~IY+d9Fr#`jXDFXcKTEZZej(pycD;uF54bp%=yKTs8EniA*FPfQeVMru zE~Hk4VI^OIy)X42O4zWUp)~x>7OU1C)L(l6MpOU{3;=_MhWMM)^y|kofQm)}j*dZ0 z%A$zE%qpy45C=gfWG7+JsFtRily`SJr0q2O1`J;)TJF86#yip>VbV&YRE(F%wO^T4 zCvY(-9uaNlqtnS0oFPV4!2Nz&n0V!l&N<4VI^gVJ^}_%y@*DA|l(s@9^N1y*v4Y3< z{1ln7)oFb1cp^t+Q@@PSSlKS_fuqJHAH&bBb8w`pir8Eb`O&)GU#ya@bHuH(g|DB) zmB_58y!+s9v4lb909)!Ol~%Kt@F@C4HcuoIXSCc>S8H3lFND%}%_r|6gEC5*DSe4( zd0jTA8QG6BcwYcwNy7~})VsWrm~!SBVo59ei>PDTO@+eem66UiN>sQ206f|DAeuTy zZ^P!b7hpyOK;YmY2skjX|FA6x00T!wV?l=?CJ{!#ASGjFRZujjRX?KKD?h;9ukJ(^9W85*=430ro83aaT!Ts%`F6q}raa(iX$MhG zSx#K*&&=|}n3Gzl09z?!(TUnCSvky!+PaA)(li0G_|(ZxxYqzp&J$+4ntNvc8SAwd z5Jv&PKw#kDFwjsC5K!QtKeh}wDjEqZOI!{*sj!Hmf!${aVrDiWzb+Iq1*ORic0>C! zNQ~-pa#4L-|6G-T_;3I5BLqqi>=mf5E3P1(iHh2KU~Xr}rph};46JnUUx;^tEo0sB`%cUPaeSlgsk>3!ep}*@czRmI@ZpAvC>4qI_fDR7N{5 z)tzBu^HRZp<<%biSb@TY&)|k&ueHyvN@k{x-3P4s{oV1ir2rk_aqFbrwYU3bn}_3# z$3yPYZMbr1U3N1)fm(Sq2Z#rWm_Mf#gU&6nmMGv~fph4GA^0HOc$KfVH6Jv7==bd} zsD|lDFoik8zXDztzS~0Z2f}dip-9Uv(!+t6o%T__fZ%sMnirzc+i<&AK#;4Dp91{z zE5H?kL{B=mxZ$P(l1?)qa*XjHTT8yngr_O=G=LE+jjR0Ui`6K}ki&8P77p z!h-o=*w|!yZnRj-l77ZK=`ETX7mM4n{W5k+>*!lczwk&=gCpOW{Ah`h_pWbBatx{x z7ipA=OVs1BAd~djW6Mu1-wMl27Wq2a?!0A_eJeO@Sx}z9Z8nXK#i<+G+P8Z!Y;53X zx%6$BK`t%(NYN(R!jEM^ciz7O?=!3J;t-skV?Dw`z25UHuwNuCEM;Krpot(qIHS@D zh8Imr^sc{L_B;K6*`i&y<7w0vtEYaa*8j(up|YXj4Ep@R8z)mxK9WhXs!S_>Yy`+p z0ZKfUnOVm>j(muU)}6-}iejd>Xc6e&(}2UpPtwp*C`eX&i#N4W=t&ew7xDLlDI5)3 zE{S=&Eps%$mN&{;b$_x(*RoAp4xC$|tl#+GU`p&IwHgd@uEzf}EERY9OO~%-%=8&u z_pYH%O~<@EQBgmZAy`y?=eVM(yc9DPb;?*@yXhaZ5r$}3jB*}(1wQb3XT4EQq<&k3 z#JDVtshMl99j2}R9lt=Do3?^)bdYY^3E$1XX*SG8^3xWb&woCIM1%)!he(+jBf6pcVte1QYKVS=!eSWYH2C`5qRwq zYcQ6AL41s!%yeB;-5Ug^bZ^_`WsZvba+lFh?VofmHBZy#J?C0>>(>4+nW@Z_+EpEq z{{e9~Gc-f)7$F*bXfyhs0jr(Xkgyt+nS2a}-r8DOn+IpG_M&^f3|PvJnb`C8bx5W* zuq+OQbsQp7Ddp2{w^PlD4l3L1zkmUO!nk>Q~)BVKk}B`qp-H6@&{ zCiuN%Oyw@D5-6+?e(|n>qCd3?oE2gh3WPY4|IX2;jl0|!S;VYlPWM&9>d_#X>77`*Qf66TSh${3|a9Mn*w-s{vb zI<)nVMSW{Wz$z7uA31va@~ymT!=gml#-u|s;Uqmxg%R;maCI-2lA;ZAoGo?uDneED ztY{l4z;eT-TtmuO7E2oUcvHn8+hfDd>>E$N9dDpEt=;22nw~$nFOEAy2e$E4W~tdbt|4E; zp2oWz^Iup$7q!c-)!q)a++^N!c~7rVo-TQ8uRh9f(3bQ~P*KShYx6_-pm51=nx4xF zMz}r6N}c|c_fXPIamHG%=c27(xCoM<>wf~IxQXc8$&C>1uNoFj~RL!JvOh(nMbGH-74>)#s4yCatOB@JZxLEW! zI!VO%3RO_X@!tA4x;yb8?`u-uvdtW;f#Ro~n2ct3ChDd+*fGQg7Vqf01{k|}_TvbB z?30rlxUc2TuRsb-Qn!Fov9#(NS|xb-6psu3&uNCEDhPR(V~hVAZh{3lLLpD0R-;Ke zVcdZ_#zWYD>1o){XonwG-E>EfBql5Ea5TWAZ#q19;LD6&q+opJeHq%#V}4hR2SYj< z>kFl?Ivk8AEO<&dON*qSSrEF{BX|78uy5K;Dsd%K8NFS7N{oVbR?W&7bu1Bb`4orc zUh69SSSin-Nx_{euYB!M{0bTJu>wX zVYd^pFo!d&VYX+Qo^v$s=)26%X}y&6SKz%K`|Wa))AA0aG0`A9jnFX7>CbLa^|LTxp7YtlRABl&Q8dDeys76E)BFPsUpPFOgm?Xs^x?d@R4 zuO0F-y+(C=k$ErJk#IZs{8ZFl^!!x7sFpo;(}R^r*{xOYvE;Kh(Q&unW*@y9~5W#zyb0X~Lq9*89plW=hKOir@oF;0wY6DUoIl$G-V^2I?n>1_rpCa~p)0}hKqjWD zGXS@4GMwwJ3}hYBClkx(U<&$1&HKo7$0aaMBHbfPXsHw$ZX8QzWA#g2x~NE|tO}jc z1S^&WuGOh_j-J{5`z(DHV`TX$`@;;L7}MN5cAIGSgSwxVRm&HrCs|HfiG}K{D@PqP zDdxqhM}#d3?^o5)waf{o72MtMEe6ms8a{NTLl#D9qNRFw`;*RU-va7zXBSY z-^~TvbW2`L&X4?RxFs-~77yzPWxnlrQe`ZUrWbtQ-QXxeffT;-1?h9TAMYQ2UW4Tt zaasOm->XkWrC9Lz9KcAZ&kvqX?_{&@Uto!2yPbQ(fB$gQsqI%&Zv?gqDL08zY`B!- zBz$~+H`PG*gNImD{)L=lDf^Ae`#m=mNJZJSpLu!ngyCOt;?!RF z;v&NoAz*9B8IzM<_(}e2TiZ(yyf(qt9*Y#r@`(KC%vV5X(n8s=Z688%2e<|Hf4qpE+qB_7nd=be3s`dF*=#TXNURe*&p0$>Dv$)9Pu*wJu7X16Myqlup$%boPE}nbs-! z)TN-x-X!-a=&)1d0OwsudAf~+u*aor+UO?58MHxu#lUG`jiK|B54Nss1wJ0t9@hF) zVs$!pm$v3sQ{^-m6Ol$uEQVw12bz#R$w*h{mokM&km zjl&3zXU2&4Gp|5$s|P$mY@v2=c1K)G$3AH^V?eVuv-WjdcKlN1iQ>|>TvH!_&Cr*v+NN8 zmR=028T(;#T~ z!Cg#?$n}Ro?@+qDv}uXsuTw{Fb9Y|>Hy5@x`7rh*`e_0ZJ+-Fv9|3_R^cpRP<*XW1 zM5fY6F=K2WtvHK5#}ckbh`NSTRGX0)=5BV0%rQuuQbyCUNpLTE?KNMUd^GV}{+1&- zXJ^+1A@%UGA*7aIU~%~V^Pq4B;Y@?lFhng4&v|KEnwnR6UJSE3C9)P- z-M*1PXoNTntUsEghw6aC(-(7T0cSCT)AEn}`Y{9J0<{yOVAeCE_+OmR3C-URQ*sDd zig&-sx+@wsWrpbQk+t^4+hrd$Mok1@T(t1_?VdyPWUIj!xXNDvsOygP9}Q1sKSfz&kGmNt!kW5BQZJ0 z&#|c7lRN`I>&iy$D7$Wg6m;AkIPJH*^V*j)sQ9=i#sgwEo+XF3 zZjt#47^hGM5I1?5)wP{hNErmC)%H}wN*Z7pIiael!J%32FjORv#AWkBDSc?i&dveH zmu4~~@~0Yx3d=02zJL(Dn4GIfoL>i;H5 za~TI3`~3d8`444`vLw`ZC$YAvq(;|Ee}OBgA{^qS;7yys+*Q28{V)+TsLl+v^TqCo z1c61ei(5{*%7NXYJ$ZWc(?CQDmw`KJwi2^J!izcEM;tZfgxx)5E~qzwa01zD?rxQS z-tkfRhR<9fTA7DXXQ?ev|$590;9#5)7>@^RaJLR|4AFq!f>$rPHCT^ zNll|)P#OJDKJpNh;blMuhkEs&7n(dT@ce4$4e4`A3GSf@I_tN}M|uJrVY z)yF8Mwft_QfVBY@gW9O+Y<`AU(6(1OxO#?NqGoHSFl1`CsW5UhMRqL`AE<4o<`g#! z(}n${`U>Q~^Ti>BlIkujG=pInhLZ|yQc2ksmq{TlGl7Y+lT$_WkELd%*gTv(d5<4& zC$lE4iWQ{85sV|EfYzyFY5SwhTfo@A-{xC>?KgVET`y{RC?(}fAC=Dac$Wfx-|yuR zeaV&wGTNAt>HBfa-+4Xew_0%D(A=bro+Np{n148UcG#>Uy93A*P2Q(7?-rLQfu1s% z6>5*BTfxiQ21*B4&y3lwQuU?FKw`p)e#3f^=f)C7t4fCHXH}BI9^6`RcvWDiL56fr zwRApRZREippAvI*#O0Ua&Ofl!7TqWuSZPG@z&_RO5*>q#M|S`HVM8oUvJnL*V=HIz z?+&1;I&gaVQE^GBMJ02ArIV4$e{h&7Q%6W012v!58A9C-!4s8t>FBWmoI!(txL4v^nrJj_QVYDTTs7Z6f_1R9m6!wuzd!H0@qB5M>Sy?nVjBo zq`ftV~4$6Zz=8-q1cd(WF1v%Jo|70tcnCxQ{eRL28D|HkX9rFZg^%EEJjY|ND4 zu~f{?Zc$(R)69z2p_1X6CYc)?UVD%jdS@?DlcY>&>f>A=l7#*wU*Mr)^W)*@sFqJl z+H8J!lH^TSiD#CD≤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 literal 0 HcmV?d00001 diff --git a/docs/_static/datanommer_mean_per_req.jpg b/docs/_static/datanommer_mean_per_req.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9646a732664dabb2d4d956bdef1a0921786bedcf GIT binary patch literal 20011 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 a00UGri4mlUT*qXj&VT>_ARK@6pa0qU%xOyi literal 0 HcmV?d00001 diff --git a/docs/_static/datanommer_req_per_sec.jpg b/docs/_static/datanommer_req_per_sec.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1d53930f789bfbf9eee5c66d736119a23cc834d8 GIT binary patch literal 21863 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 XzDS{dUNC-S0FzL literal 0 HcmV?d00001 diff --git a/docs/datanommer_datagrepper/index.rst b/docs/datanommer_datagrepper/index.rst index 75f893a..658cbfe 100644 --- a/docs/datanommer_datagrepper/index.rst +++ b/docs/datanommer_datagrepper/index.rst @@ -33,3 +33,4 @@ Here is the list of ideas/things we looked at: pg_partitioning pg_timescaledb pg_array_column_postgrest + stats diff --git a/docs/datanommer_datagrepper/stats.rst b/docs/datanommer_datagrepper/stats.rst new file mode 100644 index 0000000..729f9ba --- /dev/null +++ b/docs/datanommer_datagrepper/stats.rst @@ -0,0 +1,151 @@ +Lies, Damn lies and Statistics +============================== + +In order to compare the performances of datagrepper in the different configuration +we looked at, we wrote a small script that runs 30 requests in 10 parallel threads. + +These requests are: + +- filter_by_topic: ``/raw?topic=org.fedoraproject.prod.copr.chroot.start`` +- plain_raw: ``/raw`` +- filter_by_category: ``/raw?category=git`` +- filter_by_username: ``/raw?user=pingou`` +- filter_by_package: ``/raw?package=kernel`` +- get_by_id: ``/id?id=2019-cc9e2d43-6b17-4125-a460-9257b0e52d84`` + +We have then 4 different environments: + +- prod/openshift: this is an openshift deployment of datagrepper hitting the + production database, without any configuration change. + +- prod/aws: this is an AWS deployment of datagrepper, hitting its own local + database, with the ``DEFAULT_QUERY_DELTA`` configuration key set to 3 days. + +- partition/aws: this is an AWS deployment of datagrepper, hitting its own + local postgresql database where the ``messages`` table is partition by ``id`` + with each partition having 10 million records and the ``DEFAULT_QUERY_DELTA`` + configuration key set to 3 days. + +- timescaledb/aws: this is an AWS deployment of datagrepper, hitting its own + local postgresql database where the ``messages`` table as been partition via + the `timescaledb` plugin and the ``DEFAULT_QUERY_DELTA`` configuration key set + to 3 days. + + +Results +------- + +Here are the results for each environment and request. + +prod/openshift +~~~~~~~~~~~~~~ + ++--------------------+------------------+-------------------+------------------+-----------------+ +| | Requests per sec | Mean time per Req | Max time per Req | Percent success | ++====================+==================+===================+==================+=================+ +| filter_by_topic | 0.32 | NA | 45.857601 | 0.00% | ++--------------------+------------------+-------------------+------------------+-----------------+ +| plain_raw | 0.32 | NA | 31.955371 | 0.00% | ++--------------------+------------------+-------------------+------------------+-----------------+ +| filter_by_category | 0.32 | NA | 31.632514 | 0.00% | ++--------------------+------------------+-------------------+------------------+-----------------+ +| filter_by_username | 0.32 | NA | 33.549061 | 0.00% | ++--------------------+------------------+-------------------+------------------+-----------------+ +| filter_by_package | 0.32 | NA | 34.531207 | 0.00% | ++--------------------+------------------+-------------------+------------------+-----------------+ +| get_by_id | 1.57 | 1.575608 | 31.259095 | 86.67% | ++--------------------+------------------+-------------------+------------------+-----------------+ + + +prod/aws +~~~~~~~~ + ++--------------------+------------------+-------------------+------------------+-----------------+ +| | Requests per sec | Mean time per Req | Max time per Req | Percent success | ++====================+==================+===================+==================+=================+ +| filter_by_topic | 7.6 | 1.0068 | 11.2743 | 100.00% | ++--------------------+------------------+-------------------+------------------+-----------------+ +| plain_raw | 9.06 | 0.712975 | 3.323922 | 100.00% | ++--------------------+------------------+-------------------+------------------+-----------------+ +| filter_by_category | 12.43 | 0.489915 | 1.676223 | 100.00% | ++--------------------+------------------+-------------------+------------------+-----------------+ +| filter_by_username | 1.49 | 5.83623 | 10.661274 | 100.00% | ++--------------------+------------------+-------------------+------------------+-----------------+ +| filter_by_package | 0 | 52.69256 | 120.229874 | 1.00% | ++--------------------+------------------+-------------------+------------------+-----------------+ +| get_by_id | 0.73 | 1.534168 | 60.455334 | 83.33% | ++--------------------+------------------+-------------------+------------------+-----------------+ + + +partition/aws +~~~~~~~~~~~~~ + ++--------------------+------------------+-------------------+------------------+-----------------+ +| | Requests per sec | Mean time per Req | Max time per Req | Percent success | ++====================+==================+===================+==================+=================+ +| filter_by_topic | 9.98 | 0.711219 | 3.204178 | 100.00% | ++--------------------+------------------+-------------------+------------------+-----------------+ +| plain_raw | 9.70 | 0.641497 | 1.24704 | 100.00% | ++--------------------+------------------+-------------------+------------------+-----------------+ +| filter_by_category | 13.32 | 0.455219 | 0.594465 | 100.00% | ++--------------------+------------------+-------------------+------------------+-----------------+ +| filter_by_username | 1.3 | 7.084018 | 12.079198 | 100.00% | ++--------------------+------------------+-------------------+------------------+-----------------+ +| filter_by_package | 0 | 55.231556 | 120.125013 | 1.00% | ++--------------------+------------------+-------------------+------------------+-----------------+ +| get_by_id | 0.48 | 2.198211 | 60.444765 | 76.67% | ++--------------------+------------------+-------------------+------------------+-----------------+ + + +timescaledb/aws +~~~~~~~~~~~~~~~ + ++--------------------+------------------+-------------------+------------------+-----------------+ +| | Requests per sec | Mean time per Req | Max time per Req | Percent success | ++====================+==================+===================+==================+=================+ +| filter_by_topic | 14.1 | 0.4286 | 0.514617 | 100.00% | ++--------------------+------------------+-------------------+------------------+-----------------+ +| plain_raw | 12.89 | 0.48235 | 0.661073 | 100.00% | ++--------------------+------------------+-------------------+------------------+-----------------+ +| filter_by_category | 13.94 | 0.423172 | 0.507337 | 100.00% | ++--------------------+------------------+-------------------+------------------+-----------------+ +| filter_by_username | 2.68 | 3.188782 | 5.096244 | 100.00% | ++--------------------+------------------+-------------------+------------------+-----------------+ +| filter_by_package | 0.26 | 33.216631 | 57.901159 | 100.00% | ++--------------------+------------------+-------------------+------------------+-----------------+ +| get_by_id | 12.69 | 0.749068 | 1.73515 | 100.00% | ++--------------------+------------------+-------------------+------------------+-----------------+ + + +Graphs +------ + +Here are the same results graphed per request rather than environment. + +Percentage of success +~~~~~~~~~~~~~~~~~~~~~ + +.. image:: ../_static/datanommer_percent_sucess.jpg + :target: ../_images/datanommer_percent_sucess.jpg + + +Requests per second +~~~~~~~~~~~~~~~~~~~ + +.. image:: ../_static/datanommer_req_per_sec.jpg + :target: ../_images/datanommer_req_per_sec.jpg + + +Mean time per request +~~~~~~~~~~~~~~~~~~~~~ + +.. image:: ../_static/datanommer_mean_per_req.jpg + :target: ../_images/datanommer_mean_per_req.jpg + + +Maximum time per request +~~~~~~~~~~~~~~~~~~~~~~~~ + +.. image:: ../_static/datanommer_max_per_req.jpg + :target: ../_images/datanommer_max_per_req.jpg +