├── .gitignore ├── Dockerfile ├── README.md ├── build-run.sh ├── clean.sh ├── latex ├── arxiv │ ├── caspaxos.bib │ ├── caspaxos.tex │ ├── cc-by.pdf │ ├── lipics-logo-bw.pdf │ ├── lipics-v2018.cls │ └── orcid.pdf ├── buildpdf.sh ├── caspaxos.pdf ├── disc.pdf └── disc │ ├── cc-by.pdf │ ├── disc.bib │ ├── disc.tex │ ├── lipics-logo-bw.pdf │ ├── lipics-v2018.cls │ └── orcid.pdf └── performance ├── client ├── Dockerfile ├── app │ ├── package.json │ └── src │ │ ├── RemoteTesterClient.js │ │ ├── SlidingWindow.js │ │ ├── TestAggregator.js │ │ └── test.js ├── build-client.sh ├── run-client1.sh └── test.sh ├── cloud ├── run.sh └── scripts │ ├── clean-supervisor.sh │ ├── prepare-etcd.sh │ ├── prepare-gryadka.sh │ ├── prepare-mongo.sh │ ├── prepare-system.sh │ ├── supervisor-etcd.sh │ ├── supervisor-gryadka.sh │ └── supervisor-mongo.sh ├── data ├── etcd.log ├── gryadka.log ├── mongo.log ├── node1.node2.pings ├── node1.node3.pings ├── node2.node1.pings ├── node2.node3.pings ├── node3.node1.pings └── node3.node2.pings ├── etcd ├── db │ ├── Dockerfile │ ├── etcd.conf │ ├── isolate.sh │ ├── rejoin.sh │ ├── remote-tester │ │ ├── build.sh │ │ └── src │ │ │ └── remote │ │ │ ├── EtcdKV.go │ │ │ └── main.go │ ├── run-etcd.sh │ └── run-tester.sh ├── docker-compose.yaml ├── isolate.sh └── rejoin.sh ├── gryadka ├── db │ ├── Dockerfile │ ├── cluster.json │ ├── gryadka.conf │ ├── isolate.sh │ ├── redis.conf │ ├── rejoin.sh │ ├── remote-tester │ │ ├── package.json │ │ └── src │ │ │ ├── GryadkaKV.js │ │ │ ├── RemoteTesterServer.js │ │ │ └── start.js │ ├── run-gryadka.sh │ └── run-redis.sh ├── docker-compose.yaml ├── isolate.sh └── rejoin.sh └── mongodb ├── db ├── Dockerfile ├── isolate.sh ├── mongo.conf ├── rejoin.sh ├── remote-tester │ ├── package.json │ └── src │ │ ├── MongoKV.js │ │ ├── RemoteTesterServer.js │ │ └── start.js ├── run-mongo.sh ├── run-tester.sh └── topology ├── docker-compose.yaml ├── isolate.sh └── rejoin.sh /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | 3 | latex/arxiv/caspaxos.aux 4 | latex/arxiv/caspaxos.log 5 | latex/arxiv/caspaxos.out 6 | latex/arxiv/caspaxos.blg 7 | latex/arxiv/caspaxos.bbl 8 | latex/arxiv/caspaxos.vtc 9 | latex/arxiv.tar 10 | 11 | latex/disc/disc.aux 12 | latex/disc/disc.log 13 | latex/disc/disc.out 14 | latex/disc/disc.blg 15 | latex/disc/disc.vtc 16 | latex/disc/disc.bbl -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:17.10 2 | LABEL maintainer="Denis Rystsov " 3 | RUN apt-get update -y 4 | RUN apt-get install -y texlive-xetex texlive-bibtex-extra ttf-liberation fonts-liberation 5 | CMD /latex/buildpdf.sh 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CASPaxos 2 | 3 | CASPaxos is a wait-free, linearizable, multi-writer multi-reader register in unreliable, asynchronous networks supporting arbitrary update operations including compare-and-set (CAS). The register acts as a replicated state machine providing an interface for changing its value by applying an arbitrary user-provided function (a command). Unlike Multi-Paxos and Raft which replicate the log of commands, CASPaxos replicates state, thus avoiding associated complexity, reducing write amplification, increasing concurrency of disk operations and hardware utilization. 4 | 5 | The paper describes CASPaxos, proves its safety properties and evaluates the characteristics of a CASPaxos-based prototype of key-value storage. 6 | 7 | ## Paper 8 | 9 | https://github.com/rystsov/caspaxos/blob/master/latex/caspaxos.pdf 10 | 11 | ## Implementations 12 | 13 | The algorithm is new so most implementations are actively being developed. 14 | 15 | * https://github.com/gryadka/js 16 | * https://github.com/peterbourgon/caspaxos 17 | * https://github.com/spacejam/sled/tree/master/crates/paxos 18 | * https://github.com/ericentin/caspax 19 | * https://github.com/ReubenBond/orleans/tree/poc-caspaxos 20 | * https://github.com/komuw/kshaka 21 | 22 | ## Talks 23 | * [Papers We Love SF: Peter Bourgon on CASPaxos](https://www.youtube.com/watch?v=TW2OPHdIKsM) 24 | 25 | ## Articles 26 | 27 | * [Paxos on Steroids and a Crash Course in TLA+](https://tschottdorf.github.io/single-decree-paxos-tla-compare-and-swap) 28 | * [A TLA+ specification for Gryadka](https://medium.com/@grogepodge/tla-specification-for-gryadka-c80cd625944e) 29 | * [A Proof of Correctness for CASPaxos](http://justinjaffray.com/blog/posts/2018-04-10-caspaxos/) 30 | * [Ben Linsay on CASPaxos](https://medium.com/@blinsay/caspaxos-a8f6b3cf5515) 31 | * [Описание CASPaxos на русском](https://github.com/eshlykov/distributed-computing-course/blob/1c1a117a63c4b625e8ecf31e76c299efd5da3852/caspaxos.md) 32 | * [Exploring consensus via python and CASPaxos](https://www.komu.engineer/blogs/consensus) 33 | -------------------------------------------------------------------------------- /build-run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | if ! docker images | grep caspaxos_pdflatex; then 6 | docker build -t="caspaxos_pdflatex" . 7 | fi 8 | 9 | docker rm caspaxos_pdflatex || true 10 | 11 | docker run -i -t --name=caspaxos_pdflatex \ 12 | -v $(pwd)/latex:/latex \ 13 | caspaxos_pdflatex -------------------------------------------------------------------------------- /clean.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | docker rm caspaxos_pdflatex 4 | docker image rm caspaxos_pdflatex 5 | -------------------------------------------------------------------------------- /latex/arxiv/caspaxos.bib: -------------------------------------------------------------------------------- 1 | @article{lamport01, 2 | title={Paxos made simple}, 3 | author={Lamport, Leslie and others}, 4 | journal={ACM Sigact News}, 5 | volume={32}, 6 | number={4}, 7 | pages={18--25}, 8 | year={2001} 9 | } 10 | 11 | @inproceedings{abcds, 12 | title={The ABCD's of Paxos}, 13 | author={Lampson, Butler}, 14 | booktitle={PODC}, 15 | volume={1}, 16 | pages={13}, 17 | year={2001} 18 | } 19 | 20 | @inproceedings{chubby, 21 | title={Paxos made live: an engineering perspective}, 22 | author={Chandra, Tushar D and Griesemer, Robert and Redstone, Joshua}, 23 | booktitle={Proceedings of the twenty-sixth annual ACM symposium on Principles of distributed computing}, 24 | pages={398--407}, 25 | year={2007}, 26 | organization={ACM} 27 | } 28 | 29 | @inproceedings{vertical, 30 | title={Vertical paxos and primary-backup replication}, 31 | author={Lamport, Leslie and Malkhi, Dahlia and Zhou, Lidong}, 32 | booktitle={Proceedings of the 28th ACM symposium on Principles of distributed computing}, 33 | pages={312--313}, 34 | year={2009}, 35 | organization={ACM} 36 | } 37 | 38 | @article{spanner, 39 | title={Spanner: Google’s globally distributed database}, 40 | author={Corbett, James C and Dean, Jeffrey and Epstein, Michael and Fikes, Andrew and Frost, Christopher and Furman, Jeffrey John and Ghemawat, Sanjay and Gubarev, Andrey and Heiser, Christopher and Hochschild, Peter and others}, 41 | journal={ACM Transactions on Computer Systems (TOCS)}, 42 | volume={31}, 43 | number={3}, 44 | pages={8}, 45 | year={2013}, 46 | publisher={ACM} 47 | } 48 | 49 | @inproceedings{raft, 50 | title={In search of an understandable consensus algorithm.}, 51 | author={Ongaro, Diego and Ousterhout, John K}, 52 | booktitle={USENIX Annual Technical Conference}, 53 | pages={305--319}, 54 | year={2014} 55 | } 56 | 57 | @inproceedings{epaxos, 58 | title={There is more consensus in egalitarian parliaments}, 59 | author={Moraru, Iulian and Andersen, David G and Kaminsky, Michael}, 60 | booktitle={Proceedings of the Twenty-Fourth ACM Symposium on Operating Systems Principles}, 61 | pages={358--372}, 62 | year={2013}, 63 | organization={ACM} 64 | } 65 | 66 | @article{fpaxos, 67 | title={Flexible paxos: Quorum intersection revisited}, 68 | author={Howard, Heidi and Malkhi, Dahlia and Spiegelman, Alexander}, 69 | archivePrefix = "arXiv", 70 | eprint = "1608.06696", 71 | primaryClass = "hep-th", 72 | year={2016} 73 | } 74 | 75 | @article{wpaxos, 76 | title={WPaxos: Ruling the Archipelago with Fast Consensus}, 77 | author={Ailijiang, Ailidani and Charapko, Aleksey and Demirbas, Murat and Kosar, Tevfik}, 78 | archivePrefix = "arXiv", 79 | eprint = "1703.08905", 80 | primaryClass = "hep-th", 81 | year={2017} 82 | } 83 | 84 | @article{bizur, 85 | title={Bizur: A key-value consensus algorithm for scalable file-systems}, 86 | author={Hoch, Ezra N and Ben-Yehuda, Yaniv and Lewis, Noam and Vigder, Avi}, 87 | archivePrefix = "arXiv", 88 | eprint = "1702.04242", 89 | primaryClass = "hep-th", 90 | year={2017} 91 | } 92 | 93 | @article{abd, 94 | title={Sharing memory robustly in message-passing systems}, 95 | author={Attiya, Hagit and Bar-Noy, Amotz and Dolev, Danny}, 96 | journal={Journal of the ACM (JACM)}, 97 | volume={42}, 98 | number={1}, 99 | pages={124--142}, 100 | year={1995}, 101 | publisher={ACM} 102 | } 103 | 104 | @inproceedings{mwmr, 105 | title={On the efficiency of atomic multi-reader, multi-writer distributed memory}, 106 | author={Englert, Burkhard and Georgiou, Chryssis and Musial, Peter M and Nicolaou, Nicolas and Shvartsman, Alexander A}, 107 | booktitle={International Conference On Principles Of Distributed Systems}, 108 | pages={240--254}, 109 | year={2009}, 110 | organization={Springer} 111 | } -------------------------------------------------------------------------------- /latex/arxiv/cc-by.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rystsov/caspaxos/d2c0767651bd5eee8792118d84e750a7648450c6/latex/arxiv/cc-by.pdf -------------------------------------------------------------------------------- /latex/arxiv/lipics-logo-bw.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rystsov/caspaxos/d2c0767651bd5eee8792118d84e750a7648450c6/latex/arxiv/lipics-logo-bw.pdf -------------------------------------------------------------------------------- /latex/arxiv/lipics-v2018.cls: -------------------------------------------------------------------------------- 1 | %% 2 | %% This is file `lipics-v2018.cls', 3 | %% generated with the docstrip utility. 4 | %% 5 | %% The original source files were: 6 | %% 7 | %% lipics.dtx (with options: `class') 8 | %% 9 | %% ----------------------------------------------------------------- 10 | %% Author: le-tex publishing services 11 | %% 12 | %% This file is part of the lipics package for preparing 13 | %% LIPICS articles. 14 | %% 15 | %% Copyright (C) 2010--2018 Schloss Dagstuhl 16 | %% ----------------------------------------------------------------- 17 | %% 18 | \ProvidesClass{lipics-v2018} 19 | [2018/04/09 v1.5 LIPIcs articles] 20 | \NeedsTeXFormat{LaTeX2e}[2015/01/01] 21 | \emergencystretch1em 22 | \advance\hoffset-1in 23 | \advance\voffset-1in 24 | \advance\hoffset2.95mm 25 | \newif\if@nobotseplist \@nobotseplistfalse 26 | \def\@endparenv{% 27 | \addpenalty\@endparpenalty\if@nobotseplist\else\addvspace\@topsepadd\fi\@endpetrue} 28 | \def\@doendpe{% 29 | \@endpetrue 30 | \def\par{\@restorepar 31 | \everypar{}% 32 | \par 33 | \if@nobotseplist 34 | \addvspace\topsep 35 | \addvspace\partopsep 36 | \global\@nobotseplistfalse 37 | \fi 38 | \@endpefalse}% 39 | \everypar{{\setbox\z@\lastbox}% 40 | \everypar{}% 41 | \if@nobotseplist\global\@nobotseplistfalse\fi 42 | \@endpefalse}} 43 | \def\enumerate{% 44 | \ifnum \@enumdepth >\thr@@\@toodeep\else 45 | \advance\@enumdepth\@ne 46 | \edef\@enumctr{enum\romannumeral\the\@enumdepth}% 47 | \expandafter 48 | \list 49 | \csname label\@enumctr\endcsname 50 | {\advance\partopsep\topsep 51 | \topsep\z@\@plus\p@ 52 | \ifnum\@listdepth=\@ne 53 | \labelsep0.72em 54 | \else 55 | \ifnum\@listdepth=\tw@ 56 | \labelsep0.3em 57 | \else 58 | \labelsep0.5em 59 | \fi 60 | \fi 61 | \usecounter\@enumctr\def\makelabel##1{\hss\llap{##1}}}% 62 | \fi} 63 | \def\endenumerate{\ifnum\@listdepth=\@ne\global\@nobotseplisttrue\fi\endlist} 64 | \def\itemize{% 65 | \ifnum \@itemdepth >\thr@@\@toodeep\else 66 | \advance\@itemdepth\@ne 67 | \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% 68 | \expandafter 69 | \list 70 | \csname\@itemitem\endcsname 71 | {\advance\partopsep\topsep 72 | \topsep\z@\@plus\p@ 73 | \ifnum\@listdepth=\@ne 74 | \labelsep0.83em 75 | \else 76 | \ifnum\@listdepth=\tw@ 77 | \labelsep0.75em 78 | \else 79 | \labelsep0.5em 80 | \fi 81 | \fi 82 | \def\makelabel##1{\hss\llap{##1}}}% 83 | \fi} 84 | \def\enditemize{\ifnum\@listdepth=\@ne\global\@nobotseplisttrue\fi\endlist} 85 | \def\@title{\textcolor{red}{Author: Please provide a title}} 86 | \def\@sect#1#2#3#4#5#6[#7]#8{% 87 | \ifnum #2>\c@secnumdepth 88 | \let\@svsec\@empty 89 | \else 90 | \refstepcounter{#1}% 91 | \protected@edef\@svsec{\@seccntformat{#1}\relax}% 92 | \fi 93 | \@tempskipa #5\relax 94 | \ifdim \@tempskipa>\z@ 95 | \begingroup 96 | #6{% 97 | \@hangfrom{\hskip #3\relax 98 | \ifnum #2=1 99 | \colorbox[rgb]{0.99,0.78,0.07}{\kern0.15em\@svsec\kern0.15em}\quad 100 | \else 101 | \@svsec\quad 102 | \fi}% 103 | \interlinepenalty \@M #8\@@par}% 104 | \endgroup 105 | \csname #1mark\endcsname{#7}% 106 | \addcontentsline{toc}{#1}{% 107 | \ifnum #2>\c@secnumdepth \else 108 | \protect\numberline{\csname the#1\endcsname}% 109 | \fi 110 | #7}% 111 | \else 112 | \def\@svsechd{% 113 | #6{\hskip #3\relax 114 | \@svsec #8}% 115 | \csname #1mark\endcsname{#7}% 116 | \addcontentsline{toc}{#1}{% 117 | \ifnum #2>\c@secnumdepth \else 118 | \protect\numberline{\csname the#1\endcsname}% 119 | \fi 120 | #7}}% 121 | \fi 122 | \@xsect{#5}} 123 | \def\@seccntformat#1{\csname the#1\endcsname} 124 | \def\@biblabel#1{\textcolor{darkgray}{\sffamily\bfseries#1}} 125 | \def\copyrightline{% 126 | \ifx\@hideLIPIcs\@undefined 127 | \ifx\@EventLogo\@empty 128 | \else 129 | \setbox\@tempboxa\hbox{\includegraphics[height=42\p@]{\@EventLogo}}% 130 | \rlap{\hspace\textwidth\hspace{-\wd\@tempboxa}\hspace{\z@}% 131 | \vtop to\z@{\vskip-0mm\unhbox\@tempboxa\vss}}% 132 | \fi 133 | \scriptsize 134 | \vtop{\hsize\textwidth 135 | \nobreakspace\par 136 | \@Copyright 137 | \ifx\@EventLongTitle\@empty\else\@EventLongTitle.\\\fi 138 | \ifx\@EventEditors\@empty\else 139 | \@Eds: \@EventEditors 140 | ; Article~No.\,\@ArticleNo; pp.\,\@ArticleNo:\thepage--\@ArticleNo:\pageref{LastPage}% 141 | \\ 142 | \fi 143 | \setbox\@tempboxa\hbox{\includegraphics[height=14\p@,trim=0 15 0 0]{lipics-logo-bw}}% 144 | \hspace*{\wd\@tempboxa}\enskip 145 | \href{http://www.dagstuhl.de/lipics/}% 146 | {Leibniz International Proceedings in Informatics}\\ 147 | \smash{\unhbox\@tempboxa}\enskip 148 | \href{http://www.dagstuhl.de}% 149 | {Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik, Dagstuhl Publishing, Germany}}% 150 | \fi} 151 | \def\ps@plain{\let\@mkboth\@gobbletwo 152 | \let\@oddhead\@empty 153 | \let\@evenhead\@empty 154 | \let\@evenfoot\copyrightline 155 | \let\@oddfoot\copyrightline} 156 | \def\lipics@opterrshort{Option "\CurrentOption" not supported} 157 | \def\lipics@opterrlong{The option "\CurrentOption" from article.cls is not supported by lipics.cls.} 158 | \DeclareOption{a5paper}{\@latexerr{\lipics@opterrshort}{\lipics@opterrlong}} 159 | \DeclareOption{b5paper}{\@latexerr{\lipics@opterrshort}{\lipics@opterrlong}} 160 | \DeclareOption{legalpaper}{\@latexerr{\lipics@opterrshort}{\lipics@opterrlong}} 161 | \DeclareOption{executivepaper}{\@latexerr{\lipics@opterrshort}{\lipics@opterrlong}} 162 | \DeclareOption{landscape}{\@latexerr{\lipics@opterrshort}{\lipics@opterrlong}} 163 | \DeclareOption{10pt}{\@latexerr{\lipics@opterrshort}{\lipics@opterrlong}} 164 | \DeclareOption{11pt}{\@latexerr{\lipics@opterrshort}{\lipics@opterrlong}} 165 | \DeclareOption{12pt}{\@latexerr{\lipics@opterrshort}{\lipics@opterrlong}} 166 | \DeclareOption{oneside}{\@latexerr{\lipics@opterrshort}{\lipics@opterrlong}} 167 | \DeclareOption{twoside}{\@latexerr{\lipics@opterrshort}{\lipics@opterrlong}} 168 | \DeclareOption{titlepage}{\@latexerr{\lipics@opterrshort}{\lipics@opterrlong}} 169 | \DeclareOption{notitlepage}{\@latexerr{\lipics@opterrshort}{\lipics@opterrlong}} 170 | \DeclareOption{onecolumn}{\@latexerr{\lipics@opterrshort}{\lipics@opterrlong}} 171 | \DeclareOption{twocolumn}{\@latexerr{\lipics@opterrshort}{\lipics@opterrlong}} 172 | \DeclareOption{fleqn}{\@latexerr{\lipics@opterrshort}{\lipics@opterrlong}} 173 | \DeclareOption{openbib}{\@latexerr{\lipics@opterrshort}{\lipics@opterrlong}} 174 | \DeclareOption{a4paper}{\PassOptionsToClass{\CurrentOption}{article} 175 | \advance\hoffset-2.95mm 176 | \advance\voffset8.8mm} 177 | \DeclareOption{numberwithinsect}{\let\numberwithinsect\relax} 178 | \DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} 179 | \ProcessOptions 180 | \LoadClass[twoside,notitlepage,fleqn]{article} 181 | \renewcommand\normalsize{% 182 | \@setfontsize\normalsize\@xpt{13}% 183 | \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@ 184 | \abovedisplayshortskip \z@ \@plus3\p@ 185 | \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@ 186 | \belowdisplayskip \abovedisplayskip 187 | \let\@listi\@listI} 188 | \normalsize 189 | \renewcommand\small{% 190 | \@setfontsize\small\@ixpt{11.5}% 191 | \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@ 192 | \abovedisplayshortskip \z@ \@plus2\p@ 193 | \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@ 194 | \def\@listi{\leftmargin\leftmargini 195 | \topsep 4\p@ \@plus2\p@ \@minus2\p@ 196 | \parsep 2\p@ \@plus\p@ \@minus\p@ 197 | \itemsep \parsep}% 198 | \belowdisplayskip \abovedisplayskip 199 | } 200 | \renewcommand\footnotesize{% 201 | \@setfontsize\footnotesize{8.5}{9.5}% 202 | \abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@ 203 | \abovedisplayshortskip \z@ \@plus\p@ 204 | \belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@ 205 | \def\@listi{\leftmargin\leftmargini 206 | \topsep 3\p@ \@plus\p@ \@minus\p@ 207 | \parsep 2\p@ \@plus\p@ \@minus\p@ 208 | \itemsep \parsep}% 209 | \belowdisplayskip \abovedisplayskip 210 | } 211 | \renewcommand\large{\@setfontsize\large{10.5}{13}} 212 | \renewcommand\Large{\@setfontsize\Large{12}{14}} 213 | \setlength\parindent{1.5em} 214 | \setlength\headheight{3mm} 215 | \setlength\headsep {10mm} 216 | \setlength\footskip{3mm} 217 | \setlength\textwidth{140mm} 218 | \setlength\textheight{222mm} 219 | \setlength\oddsidemargin{32mm} 220 | \setlength\evensidemargin{38mm} 221 | \setlength\marginparwidth{25mm} 222 | \setlength\topmargin{13mm} 223 | \setlength{\skip\footins}{2\baselineskip \@plus 4\p@ \@minus 2\p@} 224 | \def\@listi{\leftmargin\leftmargini 225 | \parsep\z@ \@plus\p@ 226 | \topsep 8\p@ \@plus2\p@ \@minus4\p@ 227 | \itemsep \parsep} 228 | \let\@listI\@listi 229 | \@listi 230 | \def\@listii {\leftmargin\leftmarginii 231 | \labelwidth\leftmarginii 232 | \advance\labelwidth-\labelsep 233 | \topsep 4\p@ \@plus2\p@ \@minus\p@ 234 | \parsep\z@ \@plus\p@ 235 | \itemsep \parsep} 236 | \def\@listiii{\leftmargin\leftmarginiii 237 | \labelwidth\leftmarginiii 238 | \advance\labelwidth-\labelsep 239 | \topsep 2\p@ \@plus\p@\@minus\p@ 240 | \parsep \z@ 241 | \partopsep \p@ \@plus\z@ \@minus\p@ 242 | \itemsep \z@ \@plus\p@} 243 | \def\ps@headings{% 244 | \def\@evenhead{\large\sffamily\bfseries 245 | \llap{\hbox to0.5\oddsidemargin{\ifx\@ArticleNo\@empty\textcolor{blue}{XX}\else\@ArticleNo\fi:\thepage\hss}}\leftmark\hfil}% 246 | \def\@oddhead{\large\sffamily\bfseries\rightmark\hfil 247 | \rlap{\hbox to0.5\oddsidemargin{\hss\ifx\@ArticleNo\@empty\textcolor{blue}{XX}\else\@ArticleNo\fi:\thepage}}}% 248 | \def\@oddfoot{\hfil 249 | \rlap{% 250 | \vtop{% 251 | \vskip10mm 252 | \colorbox[rgb]{0.99,0.78,0.07} 253 | {\@tempdima\evensidemargin 254 | \advance\@tempdima1in 255 | \advance\@tempdima\hoffset 256 | \hb@xt@\@tempdima{% 257 | \ifx\@hideLIPIcs\@undefined 258 | \textcolor{darkgray}{\normalsize\sffamily 259 | \bfseries\quad 260 | \expandafter\textsolittle 261 | \expandafter{\@EventShortTitle}}% 262 | \fi 263 | \strut\hss}}}}} 264 | \let\@evenfoot\@empty 265 | \let\@mkboth\markboth 266 | \let\sectionmark\@gobble 267 | \let\subsectionmark\@gobble} 268 | \pagestyle{headings} 269 | \renewcommand\maketitle{\par 270 | \begingroup 271 | \thispagestyle{plain} 272 | \renewcommand\thefootnote{\@fnsymbol\c@footnote}% 273 | \if@twocolumn 274 | \ifnum \col@number=\@ne 275 | \@maketitle 276 | \else 277 | \twocolumn[\@maketitle]% 278 | \fi 279 | \else 280 | \newpage 281 | \global\@topnum\z@ % Prevents figures from going at top of page. 282 | \@maketitle 283 | \fi 284 | \thispagestyle{plain}\@thanks 285 | \endgroup 286 | \global\let\thanks\relax 287 | \global\let\maketitle\relax 288 | \global\let\@maketitle\relax 289 | \global\let\@thanks\@empty 290 | \global\let\@author\@empty 291 | \global\let\@date\@empty 292 | \global\let\@title\@empty 293 | \global\let\title\relax 294 | \global\let\author\relax 295 | \global\let\date\relax 296 | \global\let\and\relax 297 | } 298 | \newwrite\tocfile 299 | \def\@maketitle{% 300 | \newpage 301 | \null\vskip-\baselineskip 302 | \vskip-\headsep 303 | \@titlerunning 304 | \@authorrunning 305 | %%\let \footnote \thanks 306 | \parindent\z@ \raggedright 307 | \if!\@title!\def\@title{\textcolor{red}{Author: Please fill in a title}}\fi 308 | {\LARGE\sffamily\bfseries\mathversion{bold}\@title \par}% 309 | \vskip 1.5em 310 | \ifx\@author\orig@author 311 | \textcolor{red}{Author: Please provide author information}% 312 | \else 313 | {\def\thefootnote{\@arabic\c@footnote}% 314 | \setcounter{footnote}{0}% 315 | \fontsize{9.5}{12}\selectfont\@author}% 316 | \fi 317 | \bgroup 318 | \immediate\openout\tocfile=\jobname.vtc 319 | \protected@write\tocfile{\let\footnote\@gobble}{% 320 | \string\contitem 321 | \string\title{\@title}% 322 | \string\author{\@authorsfortoc}% 323 | \string\page{\@ArticleNo:\thepage--\@ArticleNo:\number\numexpr\getpagerefnumber{LastPage}}}% 324 | \closeout\tocfile 325 | \egroup 326 | \par} 327 | \renewcommand\tableofcontents{% 328 | \section*{\contentsname}% 329 | \@starttoc{toc}} 330 | \setcounter{secnumdepth}{4} 331 | \renewcommand\section{\@startsection {section}{1}{\z@}% 332 | {-3.5ex \@plus -1ex \@minus -.2ex}% 333 | {2.3ex \@plus.2ex}% 334 | {\sffamily\Large\bfseries\raggedright}} 335 | \renewcommand\subsection{\@startsection{subsection}{2}{\z@}% 336 | {-3.25ex\@plus -1ex \@minus -.2ex}% 337 | {1.5ex \@plus .2ex}% 338 | {\sffamily\Large\bfseries\raggedright}} 339 | \renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% 340 | {-3.25ex\@plus -1ex \@minus -.2ex}% 341 | {1.5ex \@plus .2ex}% 342 | {\sffamily\Large\bfseries\raggedright}} 343 | \renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}% 344 | {-3.25ex \@plus-1ex \@minus-.2ex}% 345 | {1.5ex \@plus .2ex}% 346 | {\sffamily\large\bfseries\raggedright}} 347 | \renewcommand\subparagraph{\@startsection{subparagraph}{5}{\z@}% 348 | {3.25ex \@plus1ex \@minus .2ex}% 349 | {-1em}% 350 | {\sffamily\normalsize\bfseries}} 351 | \setlength\leftmargini \parindent 352 | \setlength\leftmarginii {1.2em} 353 | \setlength\leftmarginiii{1.2em} 354 | \setlength\leftmarginiv {1.2em} 355 | \setlength\leftmarginv {1.2em} 356 | \setlength\leftmarginvi {1.2em} 357 | \renewcommand\labelenumi{% 358 | \textcolor{darkgray}{\sffamily\bfseries\upshape\mathversion{bold}\theenumi.}} 359 | \renewcommand\labelenumii{% 360 | \textcolor{darkgray}{\sffamily\bfseries\upshape\mathversion{bold}\theenumii.}} 361 | \renewcommand\labelenumiii{% 362 | \textcolor{darkgray}{\sffamily\bfseries\upshape\mathversion{bold}\theenumiii.}} 363 | \renewcommand\labelenumiv{% 364 | \textcolor{darkgray}{\sffamily\bfseries\upshape\mathversion{bold}\theenumiv.}} 365 | \renewcommand\labelitemi{% 366 | \textcolor[rgb]{0.6,0.6,0.61}{\ifnum\@listdepth=\@ne 367 | \rule{0.67em}{0.33em}% 368 | \else 369 | \rule{0.45em}{0.225em}% 370 | \fi}} 371 | \renewcommand\labelitemii{% 372 | \textcolor[rgb]{0.6,0.6,0.61}{\rule{0.45em}{0.225em}}} 373 | \renewcommand\labelitemiii{% 374 | \textcolor[rgb]{0.6,0.6,0.61}{\sffamily\bfseries\textasteriskcentered}} 375 | \renewcommand\labelitemiv{% 376 | \textcolor[rgb]{0.6,0.6,0.61}{\sffamily\bfseries\textperiodcentered}} 377 | \renewenvironment{description} 378 | {\list{}{\advance\partopsep\topsep\topsep\z@\@plus\p@ 379 | \labelwidth\z@ \itemindent-\leftmargin 380 | \let\makelabel\descriptionlabel}} 381 | {\ifnum\@listdepth=\@ne\global\@nobotseplisttrue\fi\endlist} 382 | \renewcommand*\descriptionlabel[1]{% 383 | \hspace\labelsep\textcolor{darkgray}{\sffamily\bfseries\mathversion{bold}#1}} 384 | \renewenvironment{abstract}{% 385 | \vskip\bigskipamount 386 | \noindent 387 | \rlap{\color[rgb]{0.51,0.50,0.52}\vrule\@width\textwidth\@height1\p@}% 388 | \hspace*{7mm}\fboxsep1.5mm\colorbox[rgb]{1,1,1}{\raisebox{-0.4ex}{% 389 | \large\selectfont\sffamily\bfseries\abstractname}}% 390 | \vskip3\p@ 391 | \fontsize{9.5}{12.5}\selectfont 392 | \noindent\ignorespaces} 393 | {\vskip\baselineskip\noindent 394 | \subjclassHeading 395 | \ifx\@subjclass\@empty 396 | \textcolor{red}{Author: Please fill in \string\subjclass\space macro}% 397 | \else 398 | \@subjclass 399 | \fi 400 | \vskip\baselineskip 401 | \noindent\keywordsHeading 402 | \ifx\@keywords\@empty 403 | \textcolor{red}{Author: Please fill in \string\keywords\space macro}% 404 | \else 405 | \@keywords 406 | \fi 407 | \ifx\@hideLIPIcs\@undefined 408 | \ifx\@DOIPrefix\@empty\else 409 | \vskip\baselineskip\noindent 410 | \doiHeading\doi{\@DOIPrefix.\@EventAcronym.\@EventYear.\@ArticleNo}% 411 | \fi 412 | \fi 413 | \ifx\@category\@empty\else 414 | \vskip\baselineskip\noindent 415 | \categoryHeading\@category 416 | \fi 417 | \ifx\@relatedversion\@empty\else 418 | \vskip\baselineskip\noindent 419 | \relatedversionHeading\@relatedversion 420 | \fi 421 | \ifx\@supplement\@empty\else 422 | \vskip\baselineskip\noindent 423 | \supplementHeading\@supplement 424 | \fi 425 | \ifx\@funding\@empty\else 426 | \vskip\baselineskip\noindent 427 | \fundingHeading\@funding 428 | \fi 429 | \ifx\@acknowledgements\@empty\else 430 | \vskip\baselineskip\noindent 431 | \acknowledgementsHeading\@acknowledgements 432 | \fi} 433 | \renewenvironment{thebibliography}[1] 434 | {\if@noskipsec \leavevmode \fi 435 | \par 436 | \@tempskipa-3.5ex \@plus -1ex \@minus -.2ex\relax 437 | \@afterindenttrue 438 | \@tempskipa -\@tempskipa \@afterindentfalse 439 | \if@nobreak 440 | \everypar{}% 441 | \else 442 | \addpenalty\@secpenalty\addvspace\@tempskipa 443 | \fi 444 | \noindent 445 | \rlap{\color[rgb]{0.51,0.50,0.52}\vrule\@width\textwidth\@height1\p@}% 446 | \hspace*{7mm}\fboxsep1.5mm\colorbox[rgb]{1,1,1}{\raisebox{-0.4ex}{% 447 | \normalsize\sffamily\bfseries\refname}}% 448 | \@xsect{1ex \@plus.2ex}% 449 | \list{\@biblabel{\@arabic\c@enumiv}}% 450 | {\leftmargin8.5mm 451 | \labelsep\leftmargin 452 | \settowidth\labelwidth{\@biblabel{#1}}% 453 | \advance\labelsep-\labelwidth 454 | \usecounter{enumiv}% 455 | \let\p@enumiv\@empty 456 | \renewcommand\theenumiv{\@arabic\c@enumiv}}% 457 | \fontsize{9.5}{12.5}\selectfont 458 | \sloppy 459 | \clubpenalty4000 460 | \@clubpenalty \clubpenalty 461 | \widowpenalty4000% 462 | \sfcode`\.\@m} 463 | {\def\@noitemerr 464 | {\@latex@warning{Empty `thebibliography' environment}}% 465 | \endlist} 466 | \renewcommand\footnoterule{% 467 | \kern-8\p@ 468 | {\color[rgb]{0.60,0.60,0.61}\hrule\@width40mm\@height1\p@}% 469 | \kern6.6\p@} 470 | \renewcommand\@makefntext[1]{% 471 | \parindent\z@\hangindent1em 472 | \leavevmode 473 | \hb@xt@1em{\@makefnmark\hss}#1} 474 | \usepackage[utf8]{inputenc} 475 | \IfFileExists{lmodern.sty}{\RequirePackage{lmodern}}{} 476 | \RequirePackage[T1]{fontenc} 477 | \RequirePackage{textcomp} 478 | \RequirePackage[mathscr]{eucal} 479 | \RequirePackage{amssymb} 480 | \PassOptionsToPackage{retainmissing}{MnSymbol} 481 | \AtBeginDocument{\@ifpackageloaded{MnSymbol}% 482 | {\expandafter\let\csname ver@amssymb.sty\endcsname\relax 483 | \let\complement\@undefined 484 | \RequirePackage{amssymb}}{}} 485 | \RequirePackage{soul} 486 | \sodef\textsolittle{}{.12em}{.5em\@plus.08em\@minus.06em}% 487 | {.4em\@plus.275em\@minus.183em} 488 | \RequirePackage{color} 489 | \definecolor{darkgray}{rgb}{0.31,0.31,0.33} 490 | \RequirePackage{babel} 491 | \RequirePackage[tbtags,fleqn]{amsmath} 492 | \RequirePackage{enumerate} 493 | \def\@enum@{\list{\textcolor{darkgray}{\sffamily\bfseries\upshape\mathversion{bold}\csname label\@enumctr\endcsname}}% 494 | {\advance\partopsep\topsep 495 | \topsep\z@\@plus\p@ 496 | \usecounter{\@enumctr}\def\makelabel##1{\hss\llap{##1}}}} 497 | \def\romanenumerate{\enumerate[(i)]} 498 | \let\endromanenumerate\endenumerate 499 | \def\alphaenumerate{\enumerate[(a)]} 500 | \let\endalphaenumerate\endenumerate 501 | \def\bracketenumerate{\enumerate[(1)]} 502 | \let\endbracketenumerate\endenumerate 503 | \RequirePackage{amsthm} 504 | \thm@headfont{% 505 | \textcolor{darkgray}{$\blacktriangleright$}\nobreakspace\sffamily\bfseries} 506 | \def\th@remark{% 507 | \thm@headfont{% 508 | \textcolor{darkgray}{$\blacktriangleright$}\nobreakspace\sffamily}% 509 | \normalfont % body font 510 | \thm@preskip\topsep \divide\thm@preskip\tw@ 511 | \thm@postskip\thm@preskip 512 | } 513 | \def\@endtheorem{\endtrivlist}%\@endpefalse 514 | \renewcommand\qedsymbol{\textcolor{darkgray}{\ensuremath{\blacktriangleleft}}} 515 | \renewenvironment{proof}[1][\proofname]{\par 516 | \pushQED{\qed}% 517 | \normalfont \topsep6\p@\@plus6\p@\relax 518 | \trivlist 519 | \item[\hskip\labelsep 520 | \color{darkgray}\sffamily\bfseries 521 | #1\@addpunct{.}]\ignorespaces 522 | }{% 523 | \popQED\endtrivlist%\@endpefalse 524 | } 525 | \theoremstyle{plain} 526 | \newtheorem{theorem}{Theorem} 527 | \newtheorem{lemma}[theorem]{Lemma} 528 | \newtheorem{corollary}[theorem]{Corollary} 529 | \theoremstyle{definition} 530 | \newtheorem{definition}[theorem]{Definition} 531 | \newtheorem{example}[theorem]{Example} 532 | \theoremstyle{remark} 533 | \newtheorem*{remark}{Remark} 534 | \ifx\numberwithinsect\relax 535 | \@addtoreset{theorem}{section} 536 | \expandafter\def\expandafter\thetheorem\expandafter{% 537 | \expandafter\thesection\expandafter\@thmcountersep\thetheorem} 538 | \fi 539 | \RequirePackage{graphicx} 540 | \RequirePackage{array} 541 | \let\@classzold\@classz 542 | \def\@classz{% 543 | \expandafter\ifx\d@llarbegin\begingroup 544 | \toks \count@ = 545 | \expandafter{\expandafter\small\the\toks\count@}% 546 | \fi 547 | \@classzold} 548 | \RequirePackage{multirow} 549 | \RequirePackage{tabularx} 550 | \RequirePackage[online]{threeparttable} 551 | \def\TPTtagStyle#1{#1)} 552 | \def\tablenotes{\small\TPT@defaults 553 | \@ifnextchar[\TPT@setuptnotes\TPTdoTablenotes} % ] 554 | \RequirePackage{listings} 555 | \lstset{basicstyle=\small\ttfamily,% 556 | backgroundcolor=\color[rgb]{0.85,0.85,0.86},% 557 | frame=single,framerule=0pt,xleftmargin=\fboxsep,xrightmargin=\fboxsep} 558 | \RequirePackage[left,mathlines]{lineno} 559 | \linenumbers 560 | \renewcommand\linenumberfont{\normalfont\tiny\sffamily} 561 | %%%% patch to cope with amsmath 562 | %%%% http://phaseportrait.blogspot.de/2007/08/lineno-and-amsmath-compatibility.html 563 | \newcommand*\patchAmsMathEnvironmentForLineno[1]{% 564 | \expandafter\let\csname old#1\expandafter\endcsname\csname #1\endcsname 565 | \expandafter\let\csname oldend#1\expandafter\endcsname\csname end#1\endcsname 566 | \renewenvironment{#1}% 567 | {\linenomath\csname old#1\endcsname}% 568 | {\csname oldend#1\endcsname\endlinenomath}}% 569 | \newcommand*\patchBothAmsMathEnvironmentsForLineno[1]{% 570 | \patchAmsMathEnvironmentForLineno{#1}% 571 | \patchAmsMathEnvironmentForLineno{#1*}}% 572 | \AtBeginDocument{% 573 | \patchBothAmsMathEnvironmentsForLineno{equation}% 574 | \patchBothAmsMathEnvironmentsForLineno{align}% 575 | \patchBothAmsMathEnvironmentsForLineno{flalign}% 576 | \patchBothAmsMathEnvironmentsForLineno{alignat}% 577 | \patchBothAmsMathEnvironmentsForLineno{gather}% 578 | \patchBothAmsMathEnvironmentsForLineno{multline}} 579 | \RequirePackage{lastpage} 580 | \IfFileExists{doi.sty} 581 | {\RequirePackage{doi}% 582 | \renewcommand*{\doitext}{}} 583 | {\RequirePackage{hyperref}% 584 | \def\doi##1{##1}} 585 | \hypersetup{pdfborder={0 0 0}} 586 | \RequirePackage[labelsep=space,singlelinecheck=false,% 587 | font={up,small},labelfont={sf,bf},% 588 | listof=false]{caption}%"listof" instead of "list" for backward compatibility 589 | \@ifpackagelater{hyperref}{2009/12/09} 590 | {\captionsetup{compatibility=false}}%cf. http://groups.google.de/group/comp.text.tex/browse_thread/thread/db9310eb540fbbd8/42e30f3b7b3aa17a?lnk=raot 591 | {} 592 | \DeclareCaptionLabelFormat{boxed}{% 593 | \kern0.05em{\color[rgb]{0.99,0.78,0.07}\rule{0.73em}{0.73em}}% 594 | \hspace*{0.67em}\bothIfFirst{#1}{~}#2} 595 | \captionsetup{labelformat=boxed} 596 | \captionsetup[table]{position=top} 597 | \RequirePackage[figuresright]{rotating} 598 | \caption@AtBeginDocument{\@ifpackageloaded{subfig}{\ClassError{lipics}{% 599 | Do not load the subfig package}{The more recent subcaption package is already loaded}}{}} 600 | \RequirePackage{subcaption} 601 | \usepackage{xstring} 602 | \newcommand\ccsdesc[2][100]{\StrSubstitute{#2}{~}{ $\rightarrow$ }} 603 | \def\titlerunning#1{\gdef\@titlerunning{{\let\footnote\@gobble\markboth{#1}{#1}}}} 604 | \def\authorrunning#1{% 605 | \gdef\@authorrunning{\markright{\if!#1!\textcolor{red}{Author: Please fill in the \string\authorrunning\space macro}\else#1\fi}}} 606 | \titlerunning{\@title} 607 | \authorrunning{\textcolor{red}{Author: Please use the \string\authorrunning\space macro}} 608 | \def\EventLongTitle#1{\gdef\@EventLongTitle{#1}} 609 | \EventLongTitle{} 610 | \def\EventShortTitle#1{\gdef\@EventShortTitle{#1}} 611 | \EventShortTitle{} 612 | \def\EventEditors#1{\gdef\@EventEditors{#1}} 613 | \EventEditors{} 614 | \def\EventNoEds#1{\gdef\@EventNoEds{#1}\xdef\@Eds{Editor\ifnum#1>1s\fi}} 615 | \EventNoEds{1} 616 | \def\EventLogo#1{\gdef\@EventLogo{#1}} 617 | \EventLogo{} 618 | \def\EventAcronym#1{\gdef\@EventAcronym{#1}} 619 | \EventAcronym{} 620 | \def\EventYear#1{\gdef\@EventYear{#1}} 621 | \EventYear{} 622 | \def\EventDate#1{\gdef\@EventDate{#1}} 623 | \EventDate{} 624 | \def\EventLocation#1{\gdef\@EventLocation{#1}} 625 | \EventLocation{} 626 | \def\SeriesVolume#1{\gdef\@SeriesVolume{#1}} 627 | \SeriesVolume{} 628 | \def\ArticleNo#1{\gdef\@ArticleNo{#1}} 629 | \ArticleNo{} 630 | \def\DOIPrefix#1{\gdef\@DOIPrefix{#1}} 631 | \DOIPrefix{10.4230/LIPIcs} 632 | \let\orig@author\@author 633 | \let\@authorsfortoc\@empty 634 | \newcount\c@author 635 | \def\@authornum{0} 636 | \def\author#1#2#3#4#5{% 637 | \ifx\@author\orig@author\let\@author\@empty\fi 638 | \g@addto@macro\@author{% 639 | \addvspace{0.5\baselineskip}% 640 | {\Large\bfseries 641 | \if!#1!% 642 | \textcolor{red}{Author: Please enter author name}% 643 | \else 644 | #1% 645 | \if!#5!\else\footnote{#5}\fi 646 | \fi 647 | \par}\nobreak 648 | \if!#2!\textcolor{red}{Author: Please enter affiliation as second parameter of the author macro}\else#2\fi 649 | \if!#3!\else\\*\href{mailto:#3}{#3}\fi 650 | \if!#4!\else\\*\href{#4}{\lower2\p@\hbox{\includegraphics[height=10\p@]{orcid}}\;#4}\fi 651 | \par\nobreak}% 652 | \global\advance\c@author\@ne 653 | \protected@write\@auxout{}{\string\gdef\string\@authornum{\the\c@author}} 654 | \ifnum\c@author=\@ne 655 | \gdef\@authorsfortoc{#1}% 656 | \else 657 | \expandafter\g@addto@macro\expandafter\@authorsfortoc\expandafter{\expandafter\csname\the\c@author authand\endcsname#1}% 658 | \@namedef{\the\c@author authand}{,\space}% 659 | \AtBeginDocument{% 660 | \expandafter\ifnum\@authornum=2 661 | \@namedef{2authand}{\space and\space}% 662 | \else 663 | \@namedef{\@authornum authand}{,\space and\space}% 664 | \fi} 665 | \fi} 666 | \newcommand*\affil[2][]{% 667 | \ClassError{lipics} 668 | {Deprecated: Please enter affiliation as second parameter of the author macro} 669 | {Since 2017, \string\affil\space is obsolete in lipics.}} 670 | \newcommand*\Copyright[1]{% 671 | \def\@Copyright{% 672 | \setbox\@tempboxa\hbox{\includegraphics[height=14\p@,clip]{cc-by}}% 673 | \@rightskip\@flushglue \rightskip\@rightskip 674 | \hangindent\dimexpr\wd\@tempboxa+0.5em\relax 675 | \href{http://creativecommons.org/licenses/by/3.0/}% 676 | {\smash{\lower\baselineskip\hbox{\unhcopy\@tempboxa}}}\enskip 677 | \textcopyright\ % 678 | \ifx!#1!\textcolor{red}{Author: Please fill in the \string\Copyright\space macro}\else#1\fi 679 | ;\\% 680 | licensed under Creative Commons License CC-BY\ifx!#1!\\\null\fi\par}} 681 | \Copyright{\textcolor{red}{Author: Please provide a copyright holder}} 682 | \def\hideLIPIcs{\let\@hideLIPIcs\relax} 683 | \def\keywords#1{\def\@keywords{#1}} 684 | \let\@keywords\@empty 685 | \def\keywordsHeading{% 686 | \textcolor{darkgray}{\fontsize{9.5}{12.5}\sffamily\bfseries 687 | Keywords and phrases\enskip}} 688 | \def\subjclass#1{\gdef\@subjclass{#1}} 689 | \let\@subjclass\@empty 690 | \def\subjclassHeading{% 691 | \textcolor{darkgray}{\fontsize{9.5}{12.5}\sffamily\bfseries 692 | 2012 ACM Subject Classification\enskip}} 693 | \def\doiHeading{% 694 | \textcolor{darkgray}{\fontsize{9.5}{12.5}\sffamily\bfseries 695 | Digital Object Identifier\enskip}} 696 | \def\category#1{\def\@category{#1}} 697 | \let\@category\@empty 698 | \def\categoryHeading{% 699 | \textcolor{darkgray}{\fontsize{9.5}{12.5}\sffamily\bfseries 700 | Category\enskip}} 701 | \def\relatedversion#1{\def\@relatedversion{#1}} 702 | \let\@relatedversion\@empty 703 | \def\relatedversionHeading{% 704 | \textcolor{darkgray}{\fontsize{9.5}{12.5}\sffamily\bfseries 705 | Related Version\enskip}} 706 | \def\supplement#1{\def\@supplement{#1}} 707 | \let\@supplement\@empty 708 | \def\supplementHeading{% 709 | \textcolor{darkgray}{\fontsize{9.5}{12.5}\sffamily\bfseries 710 | Supplement Material\enskip}} 711 | \def\funding#1{\def\@funding{#1}} 712 | \let\@funding\@empty 713 | \def\fundingHeading{% 714 | \textcolor{darkgray}{\fontsize{9.5}{12.5}\sffamily\bfseries 715 | Funding\enskip}} 716 | \def\acknowledgements#1{\def\@acknowledgements{#1}} 717 | \let\@acknowledgements\@empty 718 | \def\acknowledgementsHeading{% 719 | \textcolor{darkgray}{\fontsize{9.5}{12.5}\sffamily\bfseries 720 | Acknowledgements\enskip}} 721 | \endinput 722 | %% 723 | %% End of file `lipics-v2018.cls'. 724 | -------------------------------------------------------------------------------- /latex/arxiv/orcid.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rystsov/caspaxos/d2c0767651bd5eee8792118d84e750a7648450c6/latex/arxiv/orcid.pdf -------------------------------------------------------------------------------- /latex/buildpdf.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | rm /latex/caspaxos.pdf || true 6 | rm /latex/disc.pdf || true 7 | rm /latex/arxiv.tar || true 8 | 9 | 10 | pushd /latex/disc 11 | 12 | pdflatex disc.tex 13 | bibtex disc 14 | pdflatex disc.tex 15 | pdflatex disc.tex 16 | 17 | popd 18 | 19 | pushd /latex/arxiv 20 | 21 | pdflatex caspaxos.tex 22 | bibtex caspaxos 23 | pdflatex caspaxos.tex 24 | pdflatex caspaxos.tex 25 | 26 | tar -cf arxiv.tar caspaxos.bbl caspaxos.tex cc-by.pdf lipics-logo-bw.pdf lipics-v2018.cls orcid.pdf 27 | 28 | popd 29 | 30 | mv /latex/arxiv/caspaxos.pdf /latex/ 31 | mv /latex/arxiv/arxiv.tar /latex/ 32 | mv /latex/disc/disc.pdf /latex/ -------------------------------------------------------------------------------- /latex/caspaxos.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rystsov/caspaxos/d2c0767651bd5eee8792118d84e750a7648450c6/latex/caspaxos.pdf -------------------------------------------------------------------------------- /latex/disc.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rystsov/caspaxos/d2c0767651bd5eee8792118d84e750a7648450c6/latex/disc.pdf -------------------------------------------------------------------------------- /latex/disc/cc-by.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rystsov/caspaxos/d2c0767651bd5eee8792118d84e750a7648450c6/latex/disc/cc-by.pdf -------------------------------------------------------------------------------- /latex/disc/disc.bib: -------------------------------------------------------------------------------- 1 | @article{lamport01, 2 | title={Paxos made simple}, 3 | author={Lamport, Leslie and others}, 4 | journal={ACM Sigact News}, 5 | volume={32}, 6 | number={4}, 7 | pages={18--25}, 8 | year={2001} 9 | } 10 | 11 | @inproceedings{abcds, 12 | title={The ABCD's of Paxos}, 13 | author={Lampson, Butler}, 14 | booktitle={PODC}, 15 | volume={1}, 16 | pages={13}, 17 | year={2001} 18 | } 19 | 20 | @inproceedings{chubby, 21 | title={Paxos made live: an engineering perspective}, 22 | author={Chandra, Tushar D and Griesemer, Robert and Redstone, Joshua}, 23 | booktitle={Proceedings of the twenty-sixth annual ACM symposium on Principles of distributed computing}, 24 | pages={398--407}, 25 | year={2007}, 26 | organization={ACM} 27 | } 28 | 29 | @inproceedings{vertical, 30 | title={Vertical paxos and primary-backup replication}, 31 | author={Lamport, Leslie and Malkhi, Dahlia and Zhou, Lidong}, 32 | booktitle={Proceedings of the 28th ACM symposium on Principles of distributed computing}, 33 | pages={312--313}, 34 | year={2009}, 35 | organization={ACM} 36 | } 37 | 38 | @article{spanner, 39 | title={Spanner: Google’s globally distributed database}, 40 | author={Corbett, James C and Dean, Jeffrey and Epstein, Michael and Fikes, Andrew and Frost, Christopher and Furman, Jeffrey John and Ghemawat, Sanjay and Gubarev, Andrey and Heiser, Christopher and Hochschild, Peter and others}, 41 | journal={ACM Transactions on Computer Systems (TOCS)}, 42 | volume={31}, 43 | number={3}, 44 | pages={8}, 45 | year={2013}, 46 | publisher={ACM} 47 | } 48 | 49 | @inproceedings{raft, 50 | title={In search of an understandable consensus algorithm.}, 51 | author={Ongaro, Diego and Ousterhout, John K}, 52 | booktitle={USENIX Annual Technical Conference}, 53 | pages={305--319}, 54 | year={2014} 55 | } 56 | 57 | @inproceedings{epaxos, 58 | title={There is more consensus in egalitarian parliaments}, 59 | author={Moraru, Iulian and Andersen, David G and Kaminsky, Michael}, 60 | booktitle={Proceedings of the Twenty-Fourth ACM Symposium on Operating Systems Principles}, 61 | pages={358--372}, 62 | year={2013}, 63 | organization={ACM} 64 | } 65 | 66 | @article{fpaxos, 67 | title={Flexible paxos: Quorum intersection revisited}, 68 | author={Howard, Heidi and Malkhi, Dahlia and Spiegelman, Alexander}, 69 | archivePrefix = "arXiv", 70 | eprint = "1608.06696", 71 | primaryClass = "hep-th", 72 | year={2016} 73 | } 74 | 75 | @article{wpaxos, 76 | title={WPaxos: Ruling the Archipelago with Fast Consensus}, 77 | author={Ailijiang, Ailidani and Charapko, Aleksey and Demirbas, Murat and Kosar, Tevfik}, 78 | archivePrefix = "arXiv", 79 | eprint = "1703.08905", 80 | primaryClass = "hep-th", 81 | year={2017} 82 | } 83 | 84 | @article{abd, 85 | title={Sharing memory robustly in message-passing systems}, 86 | author={Attiya, Hagit and Bar-Noy, Amotz and Dolev, Danny}, 87 | journal={Journal of the ACM (JACM)}, 88 | volume={42}, 89 | number={1}, 90 | pages={124--142}, 91 | year={1995}, 92 | publisher={ACM} 93 | } 94 | 95 | @inproceedings{mwmr, 96 | title={On the efficiency of atomic multi-reader, multi-writer distributed memory}, 97 | author={Englert, Burkhard and Georgiou, Chryssis and Musial, Peter M and Nicolaou, Nicolas and Shvartsman, Alexander A}, 98 | booktitle={International Conference On Principles Of Distributed Systems}, 99 | pages={240--254}, 100 | year={2009}, 101 | organization={Springer} 102 | } -------------------------------------------------------------------------------- /latex/disc/lipics-logo-bw.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rystsov/caspaxos/d2c0767651bd5eee8792118d84e750a7648450c6/latex/disc/lipics-logo-bw.pdf -------------------------------------------------------------------------------- /latex/disc/lipics-v2018.cls: -------------------------------------------------------------------------------- 1 | %% 2 | %% This is file `lipics-v2018.cls', 3 | %% generated with the docstrip utility. 4 | %% 5 | %% The original source files were: 6 | %% 7 | %% lipics.dtx (with options: `class') 8 | %% 9 | %% ----------------------------------------------------------------- 10 | %% Author: le-tex publishing services 11 | %% 12 | %% This file is part of the lipics package for preparing 13 | %% LIPICS articles. 14 | %% 15 | %% Copyright (C) 2010--2018 Schloss Dagstuhl 16 | %% ----------------------------------------------------------------- 17 | %% 18 | \ProvidesClass{lipics-v2018} 19 | [2018/04/09 v1.5 LIPIcs articles] 20 | \NeedsTeXFormat{LaTeX2e}[2015/01/01] 21 | \emergencystretch1em 22 | \advance\hoffset-1in 23 | \advance\voffset-1in 24 | \advance\hoffset2.95mm 25 | \newif\if@nobotseplist \@nobotseplistfalse 26 | \def\@endparenv{% 27 | \addpenalty\@endparpenalty\if@nobotseplist\else\addvspace\@topsepadd\fi\@endpetrue} 28 | \def\@doendpe{% 29 | \@endpetrue 30 | \def\par{\@restorepar 31 | \everypar{}% 32 | \par 33 | \if@nobotseplist 34 | \addvspace\topsep 35 | \addvspace\partopsep 36 | \global\@nobotseplistfalse 37 | \fi 38 | \@endpefalse}% 39 | \everypar{{\setbox\z@\lastbox}% 40 | \everypar{}% 41 | \if@nobotseplist\global\@nobotseplistfalse\fi 42 | \@endpefalse}} 43 | \def\enumerate{% 44 | \ifnum \@enumdepth >\thr@@\@toodeep\else 45 | \advance\@enumdepth\@ne 46 | \edef\@enumctr{enum\romannumeral\the\@enumdepth}% 47 | \expandafter 48 | \list 49 | \csname label\@enumctr\endcsname 50 | {\advance\partopsep\topsep 51 | \topsep\z@\@plus\p@ 52 | \ifnum\@listdepth=\@ne 53 | \labelsep0.72em 54 | \else 55 | \ifnum\@listdepth=\tw@ 56 | \labelsep0.3em 57 | \else 58 | \labelsep0.5em 59 | \fi 60 | \fi 61 | \usecounter\@enumctr\def\makelabel##1{\hss\llap{##1}}}% 62 | \fi} 63 | \def\endenumerate{\ifnum\@listdepth=\@ne\global\@nobotseplisttrue\fi\endlist} 64 | \def\itemize{% 65 | \ifnum \@itemdepth >\thr@@\@toodeep\else 66 | \advance\@itemdepth\@ne 67 | \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% 68 | \expandafter 69 | \list 70 | \csname\@itemitem\endcsname 71 | {\advance\partopsep\topsep 72 | \topsep\z@\@plus\p@ 73 | \ifnum\@listdepth=\@ne 74 | \labelsep0.83em 75 | \else 76 | \ifnum\@listdepth=\tw@ 77 | \labelsep0.75em 78 | \else 79 | \labelsep0.5em 80 | \fi 81 | \fi 82 | \def\makelabel##1{\hss\llap{##1}}}% 83 | \fi} 84 | \def\enditemize{\ifnum\@listdepth=\@ne\global\@nobotseplisttrue\fi\endlist} 85 | \def\@title{\textcolor{red}{Author: Please provide a title}} 86 | \def\@sect#1#2#3#4#5#6[#7]#8{% 87 | \ifnum #2>\c@secnumdepth 88 | \let\@svsec\@empty 89 | \else 90 | \refstepcounter{#1}% 91 | \protected@edef\@svsec{\@seccntformat{#1}\relax}% 92 | \fi 93 | \@tempskipa #5\relax 94 | \ifdim \@tempskipa>\z@ 95 | \begingroup 96 | #6{% 97 | \@hangfrom{\hskip #3\relax 98 | \ifnum #2=1 99 | \colorbox[rgb]{0.99,0.78,0.07}{\kern0.15em\@svsec\kern0.15em}\quad 100 | \else 101 | \@svsec\quad 102 | \fi}% 103 | \interlinepenalty \@M #8\@@par}% 104 | \endgroup 105 | \csname #1mark\endcsname{#7}% 106 | \addcontentsline{toc}{#1}{% 107 | \ifnum #2>\c@secnumdepth \else 108 | \protect\numberline{\csname the#1\endcsname}% 109 | \fi 110 | #7}% 111 | \else 112 | \def\@svsechd{% 113 | #6{\hskip #3\relax 114 | \@svsec #8}% 115 | \csname #1mark\endcsname{#7}% 116 | \addcontentsline{toc}{#1}{% 117 | \ifnum #2>\c@secnumdepth \else 118 | \protect\numberline{\csname the#1\endcsname}% 119 | \fi 120 | #7}}% 121 | \fi 122 | \@xsect{#5}} 123 | \def\@seccntformat#1{\csname the#1\endcsname} 124 | \def\@biblabel#1{\textcolor{darkgray}{\sffamily\bfseries#1}} 125 | \def\copyrightline{% 126 | \ifx\@hideLIPIcs\@undefined 127 | \ifx\@EventLogo\@empty 128 | \else 129 | \setbox\@tempboxa\hbox{\includegraphics[height=42\p@]{\@EventLogo}}% 130 | \rlap{\hspace\textwidth\hspace{-\wd\@tempboxa}\hspace{\z@}% 131 | \vtop to\z@{\vskip-0mm\unhbox\@tempboxa\vss}}% 132 | \fi 133 | \scriptsize 134 | \vtop{\hsize\textwidth 135 | \nobreakspace\par 136 | \@Copyright 137 | \ifx\@EventLongTitle\@empty\else\@EventLongTitle.\\\fi 138 | \ifx\@EventEditors\@empty\else 139 | \@Eds: \@EventEditors 140 | ; Article~No.\,\@ArticleNo; pp.\,\@ArticleNo:\thepage--\@ArticleNo:\pageref{LastPage}% 141 | \\ 142 | \fi 143 | \setbox\@tempboxa\hbox{\includegraphics[height=14\p@,trim=0 15 0 0]{lipics-logo-bw}}% 144 | \hspace*{\wd\@tempboxa}\enskip 145 | \href{http://www.dagstuhl.de/lipics/}% 146 | {Leibniz International Proceedings in Informatics}\\ 147 | \smash{\unhbox\@tempboxa}\enskip 148 | \href{http://www.dagstuhl.de}% 149 | {Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik, Dagstuhl Publishing, Germany}}% 150 | \fi} 151 | \def\ps@plain{\let\@mkboth\@gobbletwo 152 | \let\@oddhead\@empty 153 | \let\@evenhead\@empty 154 | \let\@evenfoot\copyrightline 155 | \let\@oddfoot\copyrightline} 156 | \def\lipics@opterrshort{Option "\CurrentOption" not supported} 157 | \def\lipics@opterrlong{The option "\CurrentOption" from article.cls is not supported by lipics.cls.} 158 | \DeclareOption{a5paper}{\@latexerr{\lipics@opterrshort}{\lipics@opterrlong}} 159 | \DeclareOption{b5paper}{\@latexerr{\lipics@opterrshort}{\lipics@opterrlong}} 160 | \DeclareOption{legalpaper}{\@latexerr{\lipics@opterrshort}{\lipics@opterrlong}} 161 | \DeclareOption{executivepaper}{\@latexerr{\lipics@opterrshort}{\lipics@opterrlong}} 162 | \DeclareOption{landscape}{\@latexerr{\lipics@opterrshort}{\lipics@opterrlong}} 163 | \DeclareOption{10pt}{\@latexerr{\lipics@opterrshort}{\lipics@opterrlong}} 164 | \DeclareOption{11pt}{\@latexerr{\lipics@opterrshort}{\lipics@opterrlong}} 165 | \DeclareOption{12pt}{\@latexerr{\lipics@opterrshort}{\lipics@opterrlong}} 166 | \DeclareOption{oneside}{\@latexerr{\lipics@opterrshort}{\lipics@opterrlong}} 167 | \DeclareOption{twoside}{\@latexerr{\lipics@opterrshort}{\lipics@opterrlong}} 168 | \DeclareOption{titlepage}{\@latexerr{\lipics@opterrshort}{\lipics@opterrlong}} 169 | \DeclareOption{notitlepage}{\@latexerr{\lipics@opterrshort}{\lipics@opterrlong}} 170 | \DeclareOption{onecolumn}{\@latexerr{\lipics@opterrshort}{\lipics@opterrlong}} 171 | \DeclareOption{twocolumn}{\@latexerr{\lipics@opterrshort}{\lipics@opterrlong}} 172 | \DeclareOption{fleqn}{\@latexerr{\lipics@opterrshort}{\lipics@opterrlong}} 173 | \DeclareOption{openbib}{\@latexerr{\lipics@opterrshort}{\lipics@opterrlong}} 174 | \DeclareOption{a4paper}{\PassOptionsToClass{\CurrentOption}{article} 175 | \advance\hoffset-2.95mm 176 | \advance\voffset8.8mm} 177 | \DeclareOption{numberwithinsect}{\let\numberwithinsect\relax} 178 | \DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} 179 | \ProcessOptions 180 | \LoadClass[twoside,notitlepage,fleqn]{article} 181 | \renewcommand\normalsize{% 182 | \@setfontsize\normalsize\@xpt{13}% 183 | \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@ 184 | \abovedisplayshortskip \z@ \@plus3\p@ 185 | \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@ 186 | \belowdisplayskip \abovedisplayskip 187 | \let\@listi\@listI} 188 | \normalsize 189 | \renewcommand\small{% 190 | \@setfontsize\small\@ixpt{11.5}% 191 | \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@ 192 | \abovedisplayshortskip \z@ \@plus2\p@ 193 | \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@ 194 | \def\@listi{\leftmargin\leftmargini 195 | \topsep 4\p@ \@plus2\p@ \@minus2\p@ 196 | \parsep 2\p@ \@plus\p@ \@minus\p@ 197 | \itemsep \parsep}% 198 | \belowdisplayskip \abovedisplayskip 199 | } 200 | \renewcommand\footnotesize{% 201 | \@setfontsize\footnotesize{8.5}{9.5}% 202 | \abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@ 203 | \abovedisplayshortskip \z@ \@plus\p@ 204 | \belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@ 205 | \def\@listi{\leftmargin\leftmargini 206 | \topsep 3\p@ \@plus\p@ \@minus\p@ 207 | \parsep 2\p@ \@plus\p@ \@minus\p@ 208 | \itemsep \parsep}% 209 | \belowdisplayskip \abovedisplayskip 210 | } 211 | \renewcommand\large{\@setfontsize\large{10.5}{13}} 212 | \renewcommand\Large{\@setfontsize\Large{12}{14}} 213 | \setlength\parindent{1.5em} 214 | \setlength\headheight{3mm} 215 | \setlength\headsep {10mm} 216 | \setlength\footskip{3mm} 217 | \setlength\textwidth{140mm} 218 | \setlength\textheight{222mm} 219 | \setlength\oddsidemargin{32mm} 220 | \setlength\evensidemargin{38mm} 221 | \setlength\marginparwidth{25mm} 222 | \setlength\topmargin{13mm} 223 | \setlength{\skip\footins}{2\baselineskip \@plus 4\p@ \@minus 2\p@} 224 | \def\@listi{\leftmargin\leftmargini 225 | \parsep\z@ \@plus\p@ 226 | \topsep 8\p@ \@plus2\p@ \@minus4\p@ 227 | \itemsep \parsep} 228 | \let\@listI\@listi 229 | \@listi 230 | \def\@listii {\leftmargin\leftmarginii 231 | \labelwidth\leftmarginii 232 | \advance\labelwidth-\labelsep 233 | \topsep 4\p@ \@plus2\p@ \@minus\p@ 234 | \parsep\z@ \@plus\p@ 235 | \itemsep \parsep} 236 | \def\@listiii{\leftmargin\leftmarginiii 237 | \labelwidth\leftmarginiii 238 | \advance\labelwidth-\labelsep 239 | \topsep 2\p@ \@plus\p@\@minus\p@ 240 | \parsep \z@ 241 | \partopsep \p@ \@plus\z@ \@minus\p@ 242 | \itemsep \z@ \@plus\p@} 243 | \def\ps@headings{% 244 | \def\@evenhead{\large\sffamily\bfseries 245 | \llap{\hbox to0.5\oddsidemargin{\ifx\@ArticleNo\@empty\textcolor{blue}{XX}\else\@ArticleNo\fi:\thepage\hss}}\leftmark\hfil}% 246 | \def\@oddhead{\large\sffamily\bfseries\rightmark\hfil 247 | \rlap{\hbox to0.5\oddsidemargin{\hss\ifx\@ArticleNo\@empty\textcolor{blue}{XX}\else\@ArticleNo\fi:\thepage}}}% 248 | \def\@oddfoot{\hfil 249 | \rlap{% 250 | \vtop{% 251 | \vskip10mm 252 | \colorbox[rgb]{0.99,0.78,0.07} 253 | {\@tempdima\evensidemargin 254 | \advance\@tempdima1in 255 | \advance\@tempdima\hoffset 256 | \hb@xt@\@tempdima{% 257 | \ifx\@hideLIPIcs\@undefined 258 | \textcolor{darkgray}{\normalsize\sffamily 259 | \bfseries\quad 260 | \expandafter\textsolittle 261 | \expandafter{\@EventShortTitle}}% 262 | \fi 263 | \strut\hss}}}}} 264 | \let\@evenfoot\@empty 265 | \let\@mkboth\markboth 266 | \let\sectionmark\@gobble 267 | \let\subsectionmark\@gobble} 268 | \pagestyle{headings} 269 | \renewcommand\maketitle{\par 270 | \begingroup 271 | \thispagestyle{plain} 272 | \renewcommand\thefootnote{\@fnsymbol\c@footnote}% 273 | \if@twocolumn 274 | \ifnum \col@number=\@ne 275 | \@maketitle 276 | \else 277 | \twocolumn[\@maketitle]% 278 | \fi 279 | \else 280 | \newpage 281 | \global\@topnum\z@ % Prevents figures from going at top of page. 282 | \@maketitle 283 | \fi 284 | \thispagestyle{plain}\@thanks 285 | \endgroup 286 | \global\let\thanks\relax 287 | \global\let\maketitle\relax 288 | \global\let\@maketitle\relax 289 | \global\let\@thanks\@empty 290 | \global\let\@author\@empty 291 | \global\let\@date\@empty 292 | \global\let\@title\@empty 293 | \global\let\title\relax 294 | \global\let\author\relax 295 | \global\let\date\relax 296 | \global\let\and\relax 297 | } 298 | \newwrite\tocfile 299 | \def\@maketitle{% 300 | \newpage 301 | \null\vskip-\baselineskip 302 | \vskip-\headsep 303 | \@titlerunning 304 | \@authorrunning 305 | %%\let \footnote \thanks 306 | \parindent\z@ \raggedright 307 | \if!\@title!\def\@title{\textcolor{red}{Author: Please fill in a title}}\fi 308 | {\LARGE\sffamily\bfseries\mathversion{bold}\@title \par}% 309 | \vskip 1.5em 310 | \ifx\@author\orig@author 311 | \textcolor{red}{Author: Please provide author information}% 312 | \else 313 | {\def\thefootnote{\@arabic\c@footnote}% 314 | \setcounter{footnote}{0}% 315 | \fontsize{9.5}{12}\selectfont\@author}% 316 | \fi 317 | \bgroup 318 | \immediate\openout\tocfile=\jobname.vtc 319 | \protected@write\tocfile{\let\footnote\@gobble}{% 320 | \string\contitem 321 | \string\title{\@title}% 322 | \string\author{\@authorsfortoc}% 323 | \string\page{\@ArticleNo:\thepage--\@ArticleNo:\number\numexpr\getpagerefnumber{LastPage}}}% 324 | \closeout\tocfile 325 | \egroup 326 | \par} 327 | \renewcommand\tableofcontents{% 328 | \section*{\contentsname}% 329 | \@starttoc{toc}} 330 | \setcounter{secnumdepth}{4} 331 | \renewcommand\section{\@startsection {section}{1}{\z@}% 332 | {-3.5ex \@plus -1ex \@minus -.2ex}% 333 | {2.3ex \@plus.2ex}% 334 | {\sffamily\Large\bfseries\raggedright}} 335 | \renewcommand\subsection{\@startsection{subsection}{2}{\z@}% 336 | {-3.25ex\@plus -1ex \@minus -.2ex}% 337 | {1.5ex \@plus .2ex}% 338 | {\sffamily\Large\bfseries\raggedright}} 339 | \renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% 340 | {-3.25ex\@plus -1ex \@minus -.2ex}% 341 | {1.5ex \@plus .2ex}% 342 | {\sffamily\Large\bfseries\raggedright}} 343 | \renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}% 344 | {-3.25ex \@plus-1ex \@minus-.2ex}% 345 | {1.5ex \@plus .2ex}% 346 | {\sffamily\large\bfseries\raggedright}} 347 | \renewcommand\subparagraph{\@startsection{subparagraph}{5}{\z@}% 348 | {3.25ex \@plus1ex \@minus .2ex}% 349 | {-1em}% 350 | {\sffamily\normalsize\bfseries}} 351 | \setlength\leftmargini \parindent 352 | \setlength\leftmarginii {1.2em} 353 | \setlength\leftmarginiii{1.2em} 354 | \setlength\leftmarginiv {1.2em} 355 | \setlength\leftmarginv {1.2em} 356 | \setlength\leftmarginvi {1.2em} 357 | \renewcommand\labelenumi{% 358 | \textcolor{darkgray}{\sffamily\bfseries\upshape\mathversion{bold}\theenumi.}} 359 | \renewcommand\labelenumii{% 360 | \textcolor{darkgray}{\sffamily\bfseries\upshape\mathversion{bold}\theenumii.}} 361 | \renewcommand\labelenumiii{% 362 | \textcolor{darkgray}{\sffamily\bfseries\upshape\mathversion{bold}\theenumiii.}} 363 | \renewcommand\labelenumiv{% 364 | \textcolor{darkgray}{\sffamily\bfseries\upshape\mathversion{bold}\theenumiv.}} 365 | \renewcommand\labelitemi{% 366 | \textcolor[rgb]{0.6,0.6,0.61}{\ifnum\@listdepth=\@ne 367 | \rule{0.67em}{0.33em}% 368 | \else 369 | \rule{0.45em}{0.225em}% 370 | \fi}} 371 | \renewcommand\labelitemii{% 372 | \textcolor[rgb]{0.6,0.6,0.61}{\rule{0.45em}{0.225em}}} 373 | \renewcommand\labelitemiii{% 374 | \textcolor[rgb]{0.6,0.6,0.61}{\sffamily\bfseries\textasteriskcentered}} 375 | \renewcommand\labelitemiv{% 376 | \textcolor[rgb]{0.6,0.6,0.61}{\sffamily\bfseries\textperiodcentered}} 377 | \renewenvironment{description} 378 | {\list{}{\advance\partopsep\topsep\topsep\z@\@plus\p@ 379 | \labelwidth\z@ \itemindent-\leftmargin 380 | \let\makelabel\descriptionlabel}} 381 | {\ifnum\@listdepth=\@ne\global\@nobotseplisttrue\fi\endlist} 382 | \renewcommand*\descriptionlabel[1]{% 383 | \hspace\labelsep\textcolor{darkgray}{\sffamily\bfseries\mathversion{bold}#1}} 384 | \renewenvironment{abstract}{% 385 | \vskip\bigskipamount 386 | \noindent 387 | \rlap{\color[rgb]{0.51,0.50,0.52}\vrule\@width\textwidth\@height1\p@}% 388 | \hspace*{7mm}\fboxsep1.5mm\colorbox[rgb]{1,1,1}{\raisebox{-0.4ex}{% 389 | \large\selectfont\sffamily\bfseries\abstractname}}% 390 | \vskip3\p@ 391 | \fontsize{9.5}{12.5}\selectfont 392 | \noindent\ignorespaces} 393 | {\vskip\baselineskip\noindent 394 | \subjclassHeading 395 | \ifx\@subjclass\@empty 396 | \textcolor{red}{Author: Please fill in \string\subjclass\space macro}% 397 | \else 398 | \@subjclass 399 | \fi 400 | \vskip\baselineskip 401 | \noindent\keywordsHeading 402 | \ifx\@keywords\@empty 403 | \textcolor{red}{Author: Please fill in \string\keywords\space macro}% 404 | \else 405 | \@keywords 406 | \fi 407 | \ifx\@hideLIPIcs\@undefined 408 | \ifx\@DOIPrefix\@empty\else 409 | \vskip\baselineskip\noindent 410 | \doiHeading\doi{\@DOIPrefix.\@EventAcronym.\@EventYear.\@ArticleNo}% 411 | \fi 412 | \fi 413 | \ifx\@category\@empty\else 414 | \vskip\baselineskip\noindent 415 | \categoryHeading\@category 416 | \fi 417 | \ifx\@relatedversion\@empty\else 418 | \vskip\baselineskip\noindent 419 | \relatedversionHeading\@relatedversion 420 | \fi 421 | \ifx\@supplement\@empty\else 422 | \vskip\baselineskip\noindent 423 | \supplementHeading\@supplement 424 | \fi 425 | \ifx\@funding\@empty\else 426 | \vskip\baselineskip\noindent 427 | \fundingHeading\@funding 428 | \fi 429 | \ifx\@acknowledgements\@empty\else 430 | \vskip\baselineskip\noindent 431 | \acknowledgementsHeading\@acknowledgements 432 | \fi} 433 | \renewenvironment{thebibliography}[1] 434 | {\if@noskipsec \leavevmode \fi 435 | \par 436 | \@tempskipa-3.5ex \@plus -1ex \@minus -.2ex\relax 437 | \@afterindenttrue 438 | \@tempskipa -\@tempskipa \@afterindentfalse 439 | \if@nobreak 440 | \everypar{}% 441 | \else 442 | \addpenalty\@secpenalty\addvspace\@tempskipa 443 | \fi 444 | \noindent 445 | \rlap{\color[rgb]{0.51,0.50,0.52}\vrule\@width\textwidth\@height1\p@}% 446 | \hspace*{7mm}\fboxsep1.5mm\colorbox[rgb]{1,1,1}{\raisebox{-0.4ex}{% 447 | \normalsize\sffamily\bfseries\refname}}% 448 | \@xsect{1ex \@plus.2ex}% 449 | \list{\@biblabel{\@arabic\c@enumiv}}% 450 | {\leftmargin8.5mm 451 | \labelsep\leftmargin 452 | \settowidth\labelwidth{\@biblabel{#1}}% 453 | \advance\labelsep-\labelwidth 454 | \usecounter{enumiv}% 455 | \let\p@enumiv\@empty 456 | \renewcommand\theenumiv{\@arabic\c@enumiv}}% 457 | \fontsize{9.5}{12.5}\selectfont 458 | \sloppy 459 | \clubpenalty4000 460 | \@clubpenalty \clubpenalty 461 | \widowpenalty4000% 462 | \sfcode`\.\@m} 463 | {\def\@noitemerr 464 | {\@latex@warning{Empty `thebibliography' environment}}% 465 | \endlist} 466 | \renewcommand\footnoterule{% 467 | \kern-8\p@ 468 | {\color[rgb]{0.60,0.60,0.61}\hrule\@width40mm\@height1\p@}% 469 | \kern6.6\p@} 470 | \renewcommand\@makefntext[1]{% 471 | \parindent\z@\hangindent1em 472 | \leavevmode 473 | \hb@xt@1em{\@makefnmark\hss}#1} 474 | \usepackage[utf8]{inputenc} 475 | \IfFileExists{lmodern.sty}{\RequirePackage{lmodern}}{} 476 | \RequirePackage[T1]{fontenc} 477 | \RequirePackage{textcomp} 478 | \RequirePackage[mathscr]{eucal} 479 | \RequirePackage{amssymb} 480 | \PassOptionsToPackage{retainmissing}{MnSymbol} 481 | \AtBeginDocument{\@ifpackageloaded{MnSymbol}% 482 | {\expandafter\let\csname ver@amssymb.sty\endcsname\relax 483 | \let\complement\@undefined 484 | \RequirePackage{amssymb}}{}} 485 | \RequirePackage{soul} 486 | \sodef\textsolittle{}{.12em}{.5em\@plus.08em\@minus.06em}% 487 | {.4em\@plus.275em\@minus.183em} 488 | \RequirePackage{color} 489 | \definecolor{darkgray}{rgb}{0.31,0.31,0.33} 490 | \RequirePackage{babel} 491 | \RequirePackage[tbtags,fleqn]{amsmath} 492 | \RequirePackage{enumerate} 493 | \def\@enum@{\list{\textcolor{darkgray}{\sffamily\bfseries\upshape\mathversion{bold}\csname label\@enumctr\endcsname}}% 494 | {\advance\partopsep\topsep 495 | \topsep\z@\@plus\p@ 496 | \usecounter{\@enumctr}\def\makelabel##1{\hss\llap{##1}}}} 497 | \def\romanenumerate{\enumerate[(i)]} 498 | \let\endromanenumerate\endenumerate 499 | \def\alphaenumerate{\enumerate[(a)]} 500 | \let\endalphaenumerate\endenumerate 501 | \def\bracketenumerate{\enumerate[(1)]} 502 | \let\endbracketenumerate\endenumerate 503 | \RequirePackage{amsthm} 504 | \thm@headfont{% 505 | \textcolor{darkgray}{$\blacktriangleright$}\nobreakspace\sffamily\bfseries} 506 | \def\th@remark{% 507 | \thm@headfont{% 508 | \textcolor{darkgray}{$\blacktriangleright$}\nobreakspace\sffamily}% 509 | \normalfont % body font 510 | \thm@preskip\topsep \divide\thm@preskip\tw@ 511 | \thm@postskip\thm@preskip 512 | } 513 | \def\@endtheorem{\endtrivlist}%\@endpefalse 514 | \renewcommand\qedsymbol{\textcolor{darkgray}{\ensuremath{\blacktriangleleft}}} 515 | \renewenvironment{proof}[1][\proofname]{\par 516 | \pushQED{\qed}% 517 | \normalfont \topsep6\p@\@plus6\p@\relax 518 | \trivlist 519 | \item[\hskip\labelsep 520 | \color{darkgray}\sffamily\bfseries 521 | #1\@addpunct{.}]\ignorespaces 522 | }{% 523 | \popQED\endtrivlist%\@endpefalse 524 | } 525 | \theoremstyle{plain} 526 | \newtheorem{theorem}{Theorem} 527 | \newtheorem{lemma}[theorem]{Lemma} 528 | \newtheorem{corollary}[theorem]{Corollary} 529 | \theoremstyle{definition} 530 | \newtheorem{definition}[theorem]{Definition} 531 | \newtheorem{example}[theorem]{Example} 532 | \theoremstyle{remark} 533 | \newtheorem*{remark}{Remark} 534 | \ifx\numberwithinsect\relax 535 | \@addtoreset{theorem}{section} 536 | \expandafter\def\expandafter\thetheorem\expandafter{% 537 | \expandafter\thesection\expandafter\@thmcountersep\thetheorem} 538 | \fi 539 | \RequirePackage{graphicx} 540 | \RequirePackage{array} 541 | \let\@classzold\@classz 542 | \def\@classz{% 543 | \expandafter\ifx\d@llarbegin\begingroup 544 | \toks \count@ = 545 | \expandafter{\expandafter\small\the\toks\count@}% 546 | \fi 547 | \@classzold} 548 | \RequirePackage{multirow} 549 | \RequirePackage{tabularx} 550 | \RequirePackage[online]{threeparttable} 551 | \def\TPTtagStyle#1{#1)} 552 | \def\tablenotes{\small\TPT@defaults 553 | \@ifnextchar[\TPT@setuptnotes\TPTdoTablenotes} % ] 554 | \RequirePackage{listings} 555 | \lstset{basicstyle=\small\ttfamily,% 556 | backgroundcolor=\color[rgb]{0.85,0.85,0.86},% 557 | frame=single,framerule=0pt,xleftmargin=\fboxsep,xrightmargin=\fboxsep} 558 | \RequirePackage[left,mathlines]{lineno} 559 | \linenumbers 560 | \renewcommand\linenumberfont{\normalfont\tiny\sffamily} 561 | %%%% patch to cope with amsmath 562 | %%%% http://phaseportrait.blogspot.de/2007/08/lineno-and-amsmath-compatibility.html 563 | \newcommand*\patchAmsMathEnvironmentForLineno[1]{% 564 | \expandafter\let\csname old#1\expandafter\endcsname\csname #1\endcsname 565 | \expandafter\let\csname oldend#1\expandafter\endcsname\csname end#1\endcsname 566 | \renewenvironment{#1}% 567 | {\linenomath\csname old#1\endcsname}% 568 | {\csname oldend#1\endcsname\endlinenomath}}% 569 | \newcommand*\patchBothAmsMathEnvironmentsForLineno[1]{% 570 | \patchAmsMathEnvironmentForLineno{#1}% 571 | \patchAmsMathEnvironmentForLineno{#1*}}% 572 | \AtBeginDocument{% 573 | \patchBothAmsMathEnvironmentsForLineno{equation}% 574 | \patchBothAmsMathEnvironmentsForLineno{align}% 575 | \patchBothAmsMathEnvironmentsForLineno{flalign}% 576 | \patchBothAmsMathEnvironmentsForLineno{alignat}% 577 | \patchBothAmsMathEnvironmentsForLineno{gather}% 578 | \patchBothAmsMathEnvironmentsForLineno{multline}} 579 | \RequirePackage{lastpage} 580 | \IfFileExists{doi.sty} 581 | {\RequirePackage{doi}% 582 | \renewcommand*{\doitext}{}} 583 | {\RequirePackage{hyperref}% 584 | \def\doi##1{##1}} 585 | \hypersetup{pdfborder={0 0 0}} 586 | \RequirePackage[labelsep=space,singlelinecheck=false,% 587 | font={up,small},labelfont={sf,bf},% 588 | listof=false]{caption}%"listof" instead of "list" for backward compatibility 589 | \@ifpackagelater{hyperref}{2009/12/09} 590 | {\captionsetup{compatibility=false}}%cf. http://groups.google.de/group/comp.text.tex/browse_thread/thread/db9310eb540fbbd8/42e30f3b7b3aa17a?lnk=raot 591 | {} 592 | \DeclareCaptionLabelFormat{boxed}{% 593 | \kern0.05em{\color[rgb]{0.99,0.78,0.07}\rule{0.73em}{0.73em}}% 594 | \hspace*{0.67em}\bothIfFirst{#1}{~}#2} 595 | \captionsetup{labelformat=boxed} 596 | \captionsetup[table]{position=top} 597 | \RequirePackage[figuresright]{rotating} 598 | \caption@AtBeginDocument{\@ifpackageloaded{subfig}{\ClassError{lipics}{% 599 | Do not load the subfig package}{The more recent subcaption package is already loaded}}{}} 600 | \RequirePackage{subcaption} 601 | \usepackage{xstring} 602 | \newcommand\ccsdesc[2][100]{\StrSubstitute{#2}{~}{ $\rightarrow$ }} 603 | \def\titlerunning#1{\gdef\@titlerunning{{\let\footnote\@gobble\markboth{#1}{#1}}}} 604 | \def\authorrunning#1{% 605 | \gdef\@authorrunning{\markright{\if!#1!\textcolor{red}{Author: Please fill in the \string\authorrunning\space macro}\else#1\fi}}} 606 | \titlerunning{\@title} 607 | \authorrunning{\textcolor{red}{Author: Please use the \string\authorrunning\space macro}} 608 | \def\EventLongTitle#1{\gdef\@EventLongTitle{#1}} 609 | \EventLongTitle{} 610 | \def\EventShortTitle#1{\gdef\@EventShortTitle{#1}} 611 | \EventShortTitle{} 612 | \def\EventEditors#1{\gdef\@EventEditors{#1}} 613 | \EventEditors{} 614 | \def\EventNoEds#1{\gdef\@EventNoEds{#1}\xdef\@Eds{Editor\ifnum#1>1s\fi}} 615 | \EventNoEds{1} 616 | \def\EventLogo#1{\gdef\@EventLogo{#1}} 617 | \EventLogo{} 618 | \def\EventAcronym#1{\gdef\@EventAcronym{#1}} 619 | \EventAcronym{} 620 | \def\EventYear#1{\gdef\@EventYear{#1}} 621 | \EventYear{} 622 | \def\EventDate#1{\gdef\@EventDate{#1}} 623 | \EventDate{} 624 | \def\EventLocation#1{\gdef\@EventLocation{#1}} 625 | \EventLocation{} 626 | \def\SeriesVolume#1{\gdef\@SeriesVolume{#1}} 627 | \SeriesVolume{} 628 | \def\ArticleNo#1{\gdef\@ArticleNo{#1}} 629 | \ArticleNo{} 630 | \def\DOIPrefix#1{\gdef\@DOIPrefix{#1}} 631 | \DOIPrefix{10.4230/LIPIcs} 632 | \let\orig@author\@author 633 | \let\@authorsfortoc\@empty 634 | \newcount\c@author 635 | \def\@authornum{0} 636 | \def\author#1#2#3#4#5{% 637 | \ifx\@author\orig@author\let\@author\@empty\fi 638 | \g@addto@macro\@author{% 639 | \addvspace{0.5\baselineskip}% 640 | {\Large\bfseries 641 | \if!#1!% 642 | \textcolor{red}{Author: Please enter author name}% 643 | \else 644 | #1% 645 | \if!#5!\else\footnote{#5}\fi 646 | \fi 647 | \par}\nobreak 648 | \if!#2!\textcolor{red}{Author: Please enter affiliation as second parameter of the author macro}\else#2\fi 649 | \if!#3!\else\\*\href{mailto:#3}{#3}\fi 650 | \if!#4!\else\\*\href{#4}{\lower2\p@\hbox{\includegraphics[height=10\p@]{orcid}}\;#4}\fi 651 | \par\nobreak}% 652 | \global\advance\c@author\@ne 653 | \protected@write\@auxout{}{\string\gdef\string\@authornum{\the\c@author}} 654 | \ifnum\c@author=\@ne 655 | \gdef\@authorsfortoc{#1}% 656 | \else 657 | \expandafter\g@addto@macro\expandafter\@authorsfortoc\expandafter{\expandafter\csname\the\c@author authand\endcsname#1}% 658 | \@namedef{\the\c@author authand}{,\space}% 659 | \AtBeginDocument{% 660 | \expandafter\ifnum\@authornum=2 661 | \@namedef{2authand}{\space and\space}% 662 | \else 663 | \@namedef{\@authornum authand}{,\space and\space}% 664 | \fi} 665 | \fi} 666 | \newcommand*\affil[2][]{% 667 | \ClassError{lipics} 668 | {Deprecated: Please enter affiliation as second parameter of the author macro} 669 | {Since 2017, \string\affil\space is obsolete in lipics.}} 670 | \newcommand*\Copyright[1]{% 671 | \def\@Copyright{% 672 | \setbox\@tempboxa\hbox{\includegraphics[height=14\p@,clip]{cc-by}}% 673 | \@rightskip\@flushglue \rightskip\@rightskip 674 | \hangindent\dimexpr\wd\@tempboxa+0.5em\relax 675 | \href{http://creativecommons.org/licenses/by/3.0/}% 676 | {\smash{\lower\baselineskip\hbox{\unhcopy\@tempboxa}}}\enskip 677 | \textcopyright\ % 678 | \ifx!#1!\textcolor{red}{Author: Please fill in the \string\Copyright\space macro}\else#1\fi 679 | ;\\% 680 | licensed under Creative Commons License CC-BY\ifx!#1!\\\null\fi\par}} 681 | \Copyright{\textcolor{red}{Author: Please provide a copyright holder}} 682 | \def\hideLIPIcs{\let\@hideLIPIcs\relax} 683 | \def\keywords#1{\def\@keywords{#1}} 684 | \let\@keywords\@empty 685 | \def\keywordsHeading{% 686 | \textcolor{darkgray}{\fontsize{9.5}{12.5}\sffamily\bfseries 687 | Keywords and phrases\enskip}} 688 | \def\subjclass#1{\gdef\@subjclass{#1}} 689 | \let\@subjclass\@empty 690 | \def\subjclassHeading{% 691 | \textcolor{darkgray}{\fontsize{9.5}{12.5}\sffamily\bfseries 692 | 2012 ACM Subject Classification\enskip}} 693 | \def\doiHeading{% 694 | \textcolor{darkgray}{\fontsize{9.5}{12.5}\sffamily\bfseries 695 | Digital Object Identifier\enskip}} 696 | \def\category#1{\def\@category{#1}} 697 | \let\@category\@empty 698 | \def\categoryHeading{% 699 | \textcolor{darkgray}{\fontsize{9.5}{12.5}\sffamily\bfseries 700 | Category\enskip}} 701 | \def\relatedversion#1{\def\@relatedversion{#1}} 702 | \let\@relatedversion\@empty 703 | \def\relatedversionHeading{% 704 | \textcolor{darkgray}{\fontsize{9.5}{12.5}\sffamily\bfseries 705 | Related Version\enskip}} 706 | \def\supplement#1{\def\@supplement{#1}} 707 | \let\@supplement\@empty 708 | \def\supplementHeading{% 709 | \textcolor{darkgray}{\fontsize{9.5}{12.5}\sffamily\bfseries 710 | Supplement Material\enskip}} 711 | \def\funding#1{\def\@funding{#1}} 712 | \let\@funding\@empty 713 | \def\fundingHeading{% 714 | \textcolor{darkgray}{\fontsize{9.5}{12.5}\sffamily\bfseries 715 | Funding\enskip}} 716 | \def\acknowledgements#1{\def\@acknowledgements{#1}} 717 | \let\@acknowledgements\@empty 718 | \def\acknowledgementsHeading{% 719 | \textcolor{darkgray}{\fontsize{9.5}{12.5}\sffamily\bfseries 720 | Acknowledgements\enskip}} 721 | \endinput 722 | %% 723 | %% End of file `lipics-v2018.cls'. 724 | -------------------------------------------------------------------------------- /latex/disc/orcid.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rystsov/caspaxos/d2c0767651bd5eee8792118d84e750a7648450c6/latex/disc/orcid.pdf -------------------------------------------------------------------------------- /performance/client/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:17.10 2 | LABEL maintainer="Denis Rystsov " 3 | RUN apt-get update -y 4 | RUN apt-get install -y iputils-ping vim tmux less curl 5 | RUN /bin/bash -c "curl -sL https://deb.nodesource.com/setup_8.x | bash -" 6 | RUN apt-get install -y nodejs 7 | RUN mkdir -p /client 8 | WORKDIR /client 9 | COPY test.sh /client/test.sh 10 | COPY app /client/app 11 | WORKDIR /client/app 12 | RUN npm install 13 | WORKDIR /client 14 | CMD /client/test.sh 15 | -------------------------------------------------------------------------------- /performance/client/app/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "perseus-etcd", 3 | "version": "1.0.0", 4 | "description": "Perseus is a set of scripts to test how Etcd behaves when a leader is separated from the peer but maintain connection to the clients", 5 | "main": "index.js", 6 | "dependencies": { 7 | "request": "2.74.0", 8 | "avkrash-queue": "0.3.0", 9 | "moment": "2.20.1" 10 | }, 11 | "scripts": { 12 | "test": "echo \"Error: no test specified\" && exit 1" 13 | }, 14 | "repository": { 15 | "type": "git", 16 | "url": "https://github.com/rystsov/perseus.git" 17 | }, 18 | "keywords": [ 19 | "etcd", 20 | "paxos" 21 | ], 22 | "author": "Denis Rystsov", 23 | "license": "MIT", 24 | "bugs": { 25 | "url": "https://github.com/rystsov/perseus/issues" 26 | }, 27 | "homepage": "https://github.com/rystsov/perseus" 28 | } 29 | -------------------------------------------------------------------------------- /performance/client/app/src/RemoteTesterClient.js: -------------------------------------------------------------------------------- 1 | const request = require("request"); 2 | 3 | class RemoteTesterClient { 4 | constructor(host, port) { 5 | this.url = `http://${host}:${port}`; 6 | this.id = host; 7 | } 8 | async start(key) { 9 | var url = this.url + "/init/" + key; 10 | return new Promise((resolve, reject) => { 11 | request( 12 | { 13 | method: 'get', 14 | url: url 15 | }, 16 | (err, res, body) => { 17 | if (err) { 18 | reject(new Error(`Error :-(: ${err} on ${url}`)); 19 | return; 20 | } 21 | if (res.statusCode == 200) { 22 | resolve(true); 23 | return; 24 | } 25 | reject(new Error(`Unexpected return code: ${res.statusCode} on ${url}`)); 26 | } 27 | ); 28 | }); 29 | } 30 | async stat() { 31 | var url = this.url + "/stat"; 32 | return new Promise((resolve, reject) => { 33 | request( 34 | { 35 | method: 'get', 36 | url: url 37 | }, 38 | (err, res, body) => { 39 | if (err) { 40 | reject(new Error(`Error :-(: ${err} on ${url}`)); 41 | return; 42 | } 43 | if (res.statusCode == 200) { 44 | resolve(JSON.parse(body)); 45 | return; 46 | } 47 | reject(new Error(`Unexpected return code: ${res.statusCode} on ${url}`)); 48 | } 49 | ); 50 | }); 51 | } 52 | } 53 | 54 | exports.RemoteTesterClient = RemoteTesterClient; -------------------------------------------------------------------------------- /performance/client/app/src/SlidingWindow.js: -------------------------------------------------------------------------------- 1 | const Queue = require('avkrash-queue'); 2 | 3 | class SlidingWindow { 4 | constructor() { 5 | this.queue = new Queue(); 6 | this.stat = new Map(); 7 | } 8 | enqueue(ts, mark) { 9 | if (!this.stat.has(mark)) { 10 | this.stat.set(mark, 0); 11 | } 12 | this.stat.set(mark, this.stat.get(mark) + 1); 13 | this.queue.enqueue({ ts, mark }); 14 | } 15 | forgetBefore(ts) { 16 | while (!this.queue.isEmpty() && this.queue.peek().ts < ts) { 17 | const record = this.queue.dequeue(); 18 | this.stat.set(record.mark, this.stat.get(record.mark) - 1); 19 | } 20 | } 21 | getStat(hostPorts) { 22 | let slice = []; 23 | for (const hostPort of hostPorts) { 24 | let count = 0; 25 | if (this.stat.has(hostPort)) { 26 | count = this.stat.get(hostPort); 27 | } 28 | slice.push(count); 29 | } 30 | return slice.join("\t"); 31 | } 32 | } 33 | 34 | exports.SlidingWindow = SlidingWindow; -------------------------------------------------------------------------------- /performance/client/app/src/TestAggregator.js: -------------------------------------------------------------------------------- 1 | const {SlidingWindow} = require('./SlidingWindow'); 2 | const moment = require("moment"); 3 | 4 | class TestAggregator { 5 | constructor(nodes, period) { 6 | this.nodes = nodes; 7 | this.cps = new SlidingWindow(); 8 | this.isActive = false; 9 | this.period = period; 10 | this.ids = nodes.map(node => node.id); 11 | } 12 | async run() { 13 | this.isActive = true; 14 | const threads = []; 15 | 16 | threads.push(this.agg()); 17 | for (let i=0;i `${x}:err`)); 28 | console.info("#legend: time|" + dims.join("|")); 29 | 30 | while (this.isActive) { 31 | await new Promise((resolve, reject) => { 32 | setTimeout(() => resolve(true), this.period); 33 | }); 34 | const time = time_us() 35 | this.cps.forgetBefore(time - this.period*1000) 36 | 37 | console.info( 38 | "" + Math.floor((time - started) / (this.period * 1000)) + "\t" + this.cps.getStat(dims) + 39 | "\t" + moment().format("YYYY/MM/DD hh:mm:ss") 40 | ); 41 | } 42 | } 43 | async startClientThread(node, key) { 44 | await node.start(key); 45 | while (this.isActive) { 46 | try { 47 | await new Promise((resolve, reject) => { 48 | setTimeout(() => resolve(true), this.period / 2); 49 | }); 50 | const stat = await node.stat(); 51 | const now = time_us(); 52 | 53 | for (let i =0; i { 13 | try { 14 | await test.run(); 15 | } catch(e) { 16 | console.info("WAT?!"); 17 | console.info(e); 18 | } 19 | })(); 20 | -------------------------------------------------------------------------------- /performance/client/build-client.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | docker build --no-cache -t="perseus_client" . -------------------------------------------------------------------------------- /performance/client/run-client1.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | docker rm client1 4 | mkdir -p $(pwd)/$1 5 | docker run -i -t --name=client1 --hostname=client1 --network=perseus -v $(pwd)/$1:/client/logs perseus_client -------------------------------------------------------------------------------- /performance/client/test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | date | tee /client/logs/client1.log 4 | nodejs app/src/test.js $@ 2>&1 | tee -a /client/logs/client1.log 5 | -------------------------------------------------------------------------------- /performance/cloud/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | docker run -i -t -v $(pwd)/scripts:/scripts -t ubuntu:17.10 /bin/bash -------------------------------------------------------------------------------- /performance/cloud/scripts/clean-supervisor.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | rm /etc/supervisor/conf.d/* -------------------------------------------------------------------------------- /performance/cloud/scripts/prepare-etcd.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | apt-get install -y software-properties-common 6 | add-apt-repository -y ppa:gophers/archive 7 | apt-get update -y 8 | apt-get install -y golang-1.9-go 9 | 10 | mkdir /mnt/etcd 11 | ln -s /mnt/etcd /etcd 12 | 13 | pushd /etcd 14 | 15 | mkdir mem 16 | 17 | wget https://github.com/coreos/etcd/releases/download/v3.2.13/etcd-v3.2.13-linux-amd64.tar.gz 18 | tar -xzvf etcd-v3.2.13-linux-amd64.tar.gz 19 | rm etcd-v3.2.13-linux-amd64.tar.gz 20 | cp -r /scripts/caspaxos/performance/etcd/db/remote-tester /etcd/remote-tester 21 | /etcd/remote-tester/build.sh 22 | cp /scripts/caspaxos/performance/etcd/db/run-etcd.sh /etcd/run-etcd.sh 23 | cp /scripts/caspaxos/performance/etcd/db/run-tester.sh /etcd/run-tester.sh 24 | cp /scripts/caspaxos/performance/etcd/db/isolate.sh /etcd/isolate.sh 25 | cp /scripts/caspaxos/performance/etcd/db/rejoin.sh /etcd/rejoin.sh 26 | cp /scripts/caspaxos/performance/etcd/db/etcd.conf /etc/supervisor/conf.d/etcd.conf 27 | 28 | popd 29 | -------------------------------------------------------------------------------- /performance/cloud/scripts/prepare-gryadka.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | apt-get install -y redis-server 6 | curl -sL https://deb.nodesource.com/setup_8.x | bash - 7 | apt-get install -y nodejs 8 | 9 | mkdir /mnt/gryadka 10 | ln -s /mnt/gryadka /gryadka 11 | 12 | pushd /gryadka 13 | 14 | mkdir mem 15 | 16 | cp -r /scripts/caspaxos/performance/gryadka/db/remote-tester /gryadka/remote-tester 17 | cp /scripts/caspaxos/performance/gryadka/db/run-redis.sh /gryadka/run-redis.sh 18 | cp /scripts/caspaxos/performance/gryadka/db/run-gryadka.sh /gryadka/run-gryadka.sh 19 | cp /scripts/caspaxos/performance/gryadka/db/redis.conf /gryadka/redis.conf 20 | cp /scripts/caspaxos/performance/gryadka/db/cluster.json /gryadka/cluster.json 21 | cp /scripts/caspaxos/performance/gryadka/db/isolate.sh /gryadka/isolate.sh 22 | cp /scripts/caspaxos/performance/gryadka/db/rejoin.sh /gryadka/rejoin.sh 23 | cp /scripts/caspaxos/performance/gryadka/db/gryadka.conf /etc/supervisor/conf.d/gryadka.conf 24 | 25 | pushd /gryadka/remote-tester 26 | npm install 27 | 28 | popd 29 | popd 30 | 31 | service redis stop -------------------------------------------------------------------------------- /performance/cloud/scripts/prepare-mongo.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | curl -sL https://deb.nodesource.com/setup_8.x | bash - 6 | apt-get install -y nodejs 7 | 8 | mkdir /mnt/mongo 9 | ln -s /mnt/mongo /mongo 10 | 11 | pushd /mongo 12 | 13 | mkdir mem 14 | 15 | wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.1.tgz 16 | tar -xzvf mongodb-linux-x86_64-3.6.1.tgz 17 | rm mongodb-linux-x86_64-3.6.1.tgz 18 | 19 | cp -r /scripts/caspaxos/performance/mongodb/db/remote-tester /mongo/remote-tester 20 | 21 | cp /scripts/caspaxos/performance/mongodb/db/run-mongo.sh /mongo/run-mongo.sh 22 | cp /scripts/caspaxos/performance/mongodb/db/run-tester.sh /mongo/run-tester.sh 23 | cp /scripts/caspaxos/performance/mongodb/db/topology /mongo/topology 24 | cp /scripts/caspaxos/performance/mongodb/db/isolate.sh /mongo/isolate.sh 25 | cp /scripts/caspaxos/performance/mongodb/db/rejoin.sh /mongo/rejoin.sh 26 | cp /scripts/caspaxos/performance/mongodb/db/mongo.conf /etc/supervisor/conf.d/mongo.conf 27 | 28 | pushd /mongo/remote-tester 29 | npm install 30 | 31 | popd 32 | popd -------------------------------------------------------------------------------- /performance/cloud/scripts/prepare-system.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | apt-get update -y 4 | apt-get install -y git wget supervisor iptables iputils-ping vim tmux less hping3 curl 5 | git clone https://github.com/rystsov/caspaxos.git 6 | -------------------------------------------------------------------------------- /performance/cloud/scripts/supervisor-etcd.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | cp /scripts/caspaxos/performance/etcd/db/etcd.conf /etc/supervisor/conf.d/etcd.conf -------------------------------------------------------------------------------- /performance/cloud/scripts/supervisor-gryadka.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | cp /scripts/caspaxos/performance/gryadka/db/gryadka.conf /etc/supervisor/conf.d/gryadka.conf -------------------------------------------------------------------------------- /performance/cloud/scripts/supervisor-mongo.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | cp /scripts/caspaxos/performance/mongodb/db/mongo.conf /etc/supervisor/conf.d/mongo.conf -------------------------------------------------------------------------------- /performance/data/etcd.log: -------------------------------------------------------------------------------- 1 | Tue Feb 27 08:05:09 UTC 2018 2 | #legend: time|node1|node2|node3|node1:err|node2:err|node3:err 3 | 1 0 0 0 0 0 0 2018/02/27 08:05:10 4 | 2 2 1 2 0 0 0 2018/02/27 08:05:11 5 | 3 2 2 3 0 0 0 2018/02/27 08:05:12 6 | 4 0 2 5 0 0 0 2018/02/27 08:05:13 7 | 5 2 1 2 0 0 0 2018/02/27 08:05:14 8 | 6 2 1 3 0 0 0 2018/02/27 08:05:15 9 | 7 1 1 2 0 0 0 2018/02/27 08:05:16 10 | 8 2 2 3 0 0 0 2018/02/27 08:05:18 11 | 9 1 2 3 0 0 0 2018/02/27 08:05:19 12 | 10 2 1 2 0 0 0 2018/02/27 08:05:20 13 | 11 1 1 5 0 0 0 2018/02/27 08:05:21 14 | 12 2 1 3 0 0 0 2018/02/27 08:05:22 15 | 13 1 2 3 0 0 0 2018/02/27 08:05:23 16 | 14 1 2 2 0 0 0 2018/02/27 08:05:24 17 | 15 2 1 3 0 0 0 2018/02/27 08:05:25 18 | 16 2 1 2 0 0 0 2018/02/27 08:05:26 19 | 17 1 1 3 0 0 0 2018/02/27 08:05:27 20 | 18 1 2 5 0 0 0 2018/02/27 08:05:28 21 | 19 2 2 3 0 0 0 2018/02/27 08:05:29 22 | 20 2 1 2 0 0 0 2018/02/27 08:05:30 23 | 21 1 1 3 0 0 0 2018/02/27 08:05:31 24 | 22 1 1 2 0 0 0 2018/02/27 08:05:32 25 | 23 2 2 3 0 0 0 2018/02/27 08:05:33 26 | 24 1 2 3 0 0 0 2018/02/27 08:05:34 27 | 25 2 0 2 0 0 0 2018/02/27 08:05:35 28 | 26 1 2 5 0 0 0 2018/02/27 08:05:36 29 | 27 0 1 3 0 0 0 2018/02/27 08:05:37 30 | 28 2 2 3 0 0 0 2018/02/27 08:05:38 31 | 29 2 2 2 0 0 0 2018/02/27 08:05:39 32 | 30 1 0 4 0 0 0 2018/02/27 08:05:40 33 | 31 1 2 2 0 0 0 2018/02/27 08:05:41 34 | 32 2 1 3 0 0 0 2018/02/27 08:05:42 35 | 33 1 2 2 0 0 0 2018/02/27 08:05:43 36 | 34 2 1 3 0 0 0 2018/02/27 08:05:44 37 | 35 2 1 3 0 0 0 2018/02/27 08:05:45 38 | 36 1 2 5 0 0 0 2018/02/27 08:05:46 39 | 37 1 1 2 0 0 0 2018/02/27 08:05:47 40 | 38 2 2 3 0 0 0 2018/02/27 08:05:48 41 | 39 1 1 3 0 0 0 2018/02/27 08:05:49 42 | 40 2 1 2 0 0 0 2018/02/27 08:05:50 43 | 41 1 2 3 0 0 0 2018/02/27 08:05:51 44 | 42 2 1 2 0 0 0 2018/02/27 08:05:52 45 | 43 1 2 3 0 0 0 2018/02/27 08:05:53 46 | 44 2 1 5 0 0 0 2018/02/27 08:05:54 47 | 45 1 1 3 0 0 0 2018/02/27 08:05:55 48 | 46 1 2 2 0 0 0 2018/02/27 08:05:56 49 | 47 2 1 3 0 0 0 2018/02/27 08:05:57 50 | 48 2 1 2 0 0 0 2018/02/27 08:05:58 51 | 49 1 2 3 0 0 0 2018/02/27 08:05:59 52 | 50 2 1 2 0 0 0 2018/02/27 08:06:00 53 | 51 1 2 3 0 0 0 2018/02/27 08:06:01 54 | 52 1 1 6 0 0 0 2018/02/27 08:06:02 55 | 53 2 1 2 0 0 0 2018/02/27 08:06:03 56 | 54 1 2 3 0 0 0 2018/02/27 08:06:04 57 | 55 2 1 2 0 0 0 2018/02/27 08:06:05 58 | 56 1 2 3 0 0 0 2018/02/27 08:06:06 59 | 57 2 1 3 0 0 0 2018/02/27 08:06:07 60 | 58 2 1 2 0 0 0 2018/02/27 08:06:08 61 | 59 0 2 3 0 0 0 2018/02/27 08:06:09 62 | 60 2 1 5 0 0 0 2018/02/27 08:06:10 63 | 61 2 2 3 0 0 0 2018/02/27 08:06:11 64 | 62 1 1 2 0 0 0 2018/02/27 08:06:12 65 | 63 1 1 3 0 0 0 2018/02/27 08:06:13 66 | 64 2 2 3 0 0 0 2018/02/27 08:06:14 67 | 65 2 1 2 0 0 0 2018/02/27 08:06:15 68 | 66 1 2 3 0 0 0 2018/02/27 08:06:16 69 | 67 1 1 2 0 0 0 2018/02/27 08:06:17 70 | 68 2 1 5 0 0 0 2018/02/27 08:06:18 71 | 69 1 2 3 0 0 0 2018/02/27 08:06:19 72 | 70 2 1 3 0 0 0 2018/02/27 08:06:20 73 | 71 1 2 2 0 0 0 2018/02/27 08:06:21 74 | 72 2 0 3 0 0 0 2018/02/27 08:06:22 75 | 73 1 2 2 0 0 0 2018/02/27 08:06:23 76 | 74 2 2 3 0 0 0 2018/02/27 08:06:24 77 | 75 1 1 5 0 0 0 2018/02/27 08:06:25 78 | 76 1 1 3 0 0 0 2018/02/27 08:06:26 79 | 77 2 2 2 0 0 0 2018/02/27 08:06:27 80 | 78 2 1 3 0 0 0 2018/02/27 08:06:28 81 | 79 1 2 2 0 0 0 2018/02/27 08:06:29 82 | 80 2 1 3 0 0 0 2018/02/27 08:06:30 83 | 81 1 1 3 0 0 0 2018/02/27 08:06:31 84 | 82 1 1 2 0 0 0 2018/02/27 08:06:32 85 | 83 2 2 5 0 0 0 2018/02/27 08:06:33 86 | 84 2 2 3 0 0 0 2018/02/27 08:06:34 87 | 85 1 1 3 0 0 0 2018/02/27 08:06:35 88 | 86 1 2 2 0 0 0 2018/02/27 08:06:36 89 | 87 2 0 3 0 0 0 2018/02/27 08:06:37 90 | 88 1 2 2 0 0 0 2018/02/27 08:06:38 91 | 89 2 2 3 0 0 0 2018/02/27 08:06:39 92 | 90 1 1 3 0 0 0 2018/02/27 08:06:40 93 | 91 2 2 2 0 0 0 2018/02/27 08:06:41 94 | 92 1 0 4 0 0 0 2018/02/27 08:06:42 95 | 93 2 2 5 0 0 0 2018/02/27 08:06:43 96 | 94 1 1 0 0 0 0 2018/02/27 08:06:44 97 | 95 1 2 3 0 0 0 2018/02/27 08:06:45 98 | 96 2 2 3 0 0 0 2018/02/27 08:06:46 99 | 97 2 0 3 0 0 0 2018/02/27 08:06:47 100 | 98 1 2 6 0 0 0 2018/02/27 08:06:48 101 | 99 1 1 2 0 0 0 2018/02/27 08:06:49 102 | 100 2 2 3 0 0 0 2018/02/27 08:06:50 103 | 101 2 2 2 0 0 0 2018/02/27 08:06:51 104 | 102 1 0 3 0 0 0 2018/02/27 08:06:52 105 | 103 1 2 2 0 0 0 2018/02/27 08:06:53 106 | 104 2 1 3 0 0 0 2018/02/27 08:06:54 107 | 105 1 2 3 0 0 0 2018/02/27 08:06:55 108 | 106 2 1 5 0 0 0 2018/02/27 08:06:56 109 | 107 2 1 0 0 0 0 2018/02/27 08:06:57 110 | 108 0 2 6 0 0 0 2018/02/27 08:06:58 111 | 109 2 1 2 0 0 0 2018/02/27 08:06:59 112 | 110 2 2 3 0 0 0 2018/02/27 08:07:00 113 | 111 1 1 3 0 0 0 2018/02/27 08:07:01 114 | 112 1 1 2 0 0 0 2018/02/27 08:07:02 115 | 113 2 2 3 0 0 0 2018/02/27 08:07:03 116 | 114 1 1 3 0 0 0 2018/02/27 08:07:04 117 | 115 2 2 2 0 0 0 2018/02/27 08:07:05 118 | 116 2 1 5 0 0 0 2018/02/27 08:07:06 119 | 117 1 1 3 0 0 0 2018/02/27 08:07:07 120 | 118 1 2 2 0 0 0 2018/02/27 08:07:08 121 | 119 2 2 3 0 0 0 2018/02/27 08:07:09 122 | 120 2 0 3 0 0 0 2018/02/27 08:07:10 123 | 121 0 2 2 0 0 0 2018/02/27 08:07:11 124 | 122 2 1 3 0 0 0 2018/02/27 08:07:12 125 | 123 2 2 2 0 0 0 2018/02/27 08:07:13 126 | 124 1 2 6 0 0 0 2018/02/27 08:07:14 127 | 125 1 0 2 0 0 0 2018/02/27 08:07:15 128 | 126 2 2 3 0 0 0 2018/02/27 08:07:16 129 | -------------------------------------------------------------------------------- /performance/data/gryadka.log: -------------------------------------------------------------------------------- 1 | Tue Feb 27 08:29:17 UTC 2018 2 | #legend: time|node1|node2|node3|node1:err|node2:err|node3:err 3 | 1 11 12 0 0 0 0 2018/02/27 08:29:19 4 | 2 24 14 1 0 0 0 2018/02/27 08:29:20 5 | 3 24 26 3 0 0 0 2018/02/27 08:29:21 6 | 4 24 27 5 0 0 0 2018/02/27 08:29:22 7 | 5 12 13 2 0 0 0 2018/02/27 08:29:23 8 | 6 23 27 3 0 0 0 2018/02/27 08:29:24 9 | 7 24 13 3 0 0 0 2018/02/27 08:29:25 10 | 8 23 26 2 0 0 0 2018/02/27 08:29:26 11 | 9 24 14 3 0 0 0 2018/02/27 08:29:27 12 | 10 12 29 3 0 0 0 2018/02/27 08:29:28 13 | 11 24 27 2 0 0 0 2018/02/27 08:29:29 14 | 12 24 13 3 0 0 0 2018/02/27 08:29:30 15 | 13 23 27 5 0 0 0 2018/02/27 08:29:31 16 | 14 12 13 2 0 0 0 2018/02/27 08:29:32 17 | 15 24 27 3 0 0 0 2018/02/27 08:29:33 18 | 16 24 27 3 0 0 0 2018/02/27 08:29:34 19 | 17 24 15 2 0 0 0 2018/02/27 08:29:35 20 | 18 25 26 3 0 0 0 2018/02/27 08:29:36 21 | 19 12 13 2 0 0 0 2018/02/27 08:29:37 22 | 20 23 27 3 0 0 0 2018/02/27 08:29:38 23 | 21 24 26 5 0 0 0 2018/02/27 08:29:39 24 | 22 25 14 2 0 0 0 2018/02/27 08:29:40 25 | 23 12 27 3 0 0 0 2018/02/27 08:29:41 26 | 24 24 13 2 0 0 0 2018/02/27 08:29:42 27 | 25 24 27 3 0 0 0 2018/02/27 08:29:43 28 | 26 24 27 3 0 0 0 2018/02/27 08:29:44 29 | 27 24 14 4 0 0 0 2018/02/27 08:29:45 30 | 28 12 27 2 0 0 0 2018/02/27 08:29:46 31 | 29 22 10 3 0 0 0 2018/02/27 08:29:47 32 | 30 25 27 2 0 0 0 2018/02/27 08:29:48 33 | 31 24 27 3 0 0 0 2018/02/27 08:29:49 34 | 32 23 13 2 0 0 0 2018/02/27 08:29:50 35 | 33 13 27 5 0 0 0 2018/02/27 08:29:51 36 | 34 20 10 3 0 0 0 2018/02/27 08:29:52 37 | 35 24 24 2 0 0 0 2018/02/27 08:29:53 38 | 36 24 27 3 0 0 0 2018/02/27 08:29:54 39 | 37 12 13 3 0 0 0 2018/02/27 08:29:55 40 | 38 24 27 3 0 0 0 2018/02/27 08:29:56 41 | 39 23 24 2 0 0 0 2018/02/27 08:29:57 42 | 40 24 13 3 0 0 0 2018/02/27 08:29:58 43 | 41 23 24 2 0 0 0 2018/02/27 08:29:59 44 | 42 12 13 3 0 0 0 2018/02/27 08:30:00 45 | 43 24 27 5 0 0 0 2018/02/27 08:30:01 46 | 44 24 27 2 0 0 0 2018/02/27 08:30:02 47 | 45 24 13 3 0 0 0 2018/02/27 08:30:03 48 | 46 12 28 2 0 0 0 2018/02/27 08:30:04 49 | 47 22 11 3 0 0 0 2018/02/27 08:30:05 50 | 48 24 27 2 0 0 0 2018/02/27 08:30:06 51 | 49 24 14 3 0 0 0 2018/02/27 08:30:07 52 | 50 25 26 3 0 0 0 2018/02/27 08:30:08 53 | 51 12 27 2 0 0 0 2018/02/27 08:30:09 54 | 52 24 13 5 0 0 0 2018/02/27 08:30:10 55 | 53 24 26 3 0 0 0 2018/02/27 08:30:11 56 | 54 24 27 2 0 0 0 2018/02/27 08:30:12 57 | 55 23 13 3 0 0 0 2018/02/27 08:30:13 58 | 56 13 27 3 0 0 0 2018/02/27 08:30:14 59 | 57 23 13 2 0 0 0 2018/02/27 08:30:15 60 | 58 24 28 3 0 0 0 2018/02/27 08:30:16 61 | 59 24 28 2 0 0 0 2018/02/27 08:30:17 62 | 60 23 13 3 0 0 0 2018/02/27 08:30:18 63 | 61 12 27 3 0 0 0 2018/02/27 08:30:19 64 | 62 24 13 5 0 0 0 2018/02/27 08:30:20 65 | 63 24 27 2 0 0 0 2018/02/27 08:30:21 66 | 64 24 27 3 0 0 0 2018/02/27 08:30:22 67 | 65 24 13 3 0 0 0 2018/02/27 08:30:23 68 | 66 12 27 2 0 0 0 2018/02/27 08:30:24 69 | 67 24 13 3 0 0 0 2018/02/27 08:30:25 70 | 68 24 28 2 0 0 0 2018/02/27 08:30:26 71 | 69 24 26 5 0 0 0 2018/02/27 08:30:27 72 | 70 13 13 3 0 0 0 2018/02/27 08:30:28 73 | 71 25 26 2 0 0 0 2018/02/27 08:30:29 74 | 72 24 14 3 0 0 0 2018/02/27 08:30:30 75 | 73 24 27 2 0 0 0 2018/02/27 08:30:31 76 | 74 25 27 3 0 0 0 2018/02/27 08:30:32 77 | 75 12 13 2 0 0 0 2018/02/27 08:30:33 78 | 76 23 27 5 0 0 0 2018/02/27 08:30:34 79 | 77 24 14 3 0 0 0 2018/02/27 08:30:35 80 | 78 24 26 2 0 0 0 2018/02/27 08:30:36 81 | 79 12 27 3 0 0 0 2018/02/27 08:30:37 82 | 80 12 13 2 0 0 0 2018/02/27 08:30:38 83 | 81 24 27 3 0 0 0 2018/02/27 08:30:39 84 | 82 24 14 3 0 0 0 2018/02/27 08:30:40 85 | 83 25 26 3 0 0 0 2018/02/27 08:30:41 86 | 84 11 27 2 0 0 0 2018/02/27 08:30:42 87 | 85 24 14 3 0 0 0 2018/02/27 08:30:43 88 | 86 24 26 3 0 0 0 2018/02/27 08:30:44 89 | 87 25 14 2 0 0 0 2018/02/27 08:30:45 90 | 88 24 26 3 0 0 0 2018/02/27 08:30:46 91 | 89 11 24 5 0 0 0 2018/02/27 08:30:47 92 | 90 24 13 3 0 0 0 2018/02/27 08:30:48 93 | 91 24 27 2 0 0 0 2018/02/27 08:30:49 94 | 92 24 27 3 0 0 0 2018/02/27 08:30:50 95 | 93 24 14 3 0 0 0 2018/02/27 08:30:51 96 | 94 10 24 3 0 0 0 2018/02/27 08:30:52 97 | 95 24 13 2 0 0 0 2018/02/27 08:30:53 98 | 96 25 27 3 0 0 0 2018/02/27 08:30:54 99 | 97 24 27 2 0 0 0 2018/02/27 08:30:55 100 | 98 12 13 3 0 0 0 2018/02/27 08:30:56 101 | 99 22 25 5 0 0 0 2018/02/27 08:30:57 102 | 100 24 13 3 0 0 0 2018/02/27 08:30:58 103 | 101 23 24 2 0 0 0 2018/02/27 08:30:59 104 | 102 24 26 3 0 0 0 2018/02/27 08:31:00 105 | 103 12 14 2 0 0 0 2018/02/27 08:31:01 106 | 104 24 27 3 0 0 0 2018/02/27 08:31:02 107 | 105 24 13 2 0 0 0 2018/02/27 08:31:03 108 | 106 24 26 5 0 0 0 2018/02/27 08:31:04 109 | 107 23 25 3 0 0 0 2018/02/27 08:31:05 110 | 108 12 14 2 0 0 0 2018/02/27 08:31:06 111 | 109 24 26 3 0 0 0 2018/02/27 08:31:07 112 | 110 23 13 2 0 0 0 2018/02/27 08:31:08 113 | 111 24 27 3 0 0 0 2018/02/27 08:31:09 114 | 112 24 26 2 0 0 0 2018/02/27 08:31:10 115 | 113 12 13 3 0 0 0 2018/02/27 08:31:11 116 | 114 24 27 5 0 0 0 2018/02/27 08:31:12 117 | 115 25 27 2 0 0 0 2018/02/27 08:31:13 118 | 116 24 13 3 0 0 0 2018/02/27 08:31:14 119 | 117 11 28 3 0 0 0 2018/02/27 08:31:15 120 | 118 24 13 2 0 0 0 2018/02/27 08:31:16 121 | 119 24 27 3 0 0 0 2018/02/27 08:31:17 122 | 120 24 26 2 0 0 0 2018/02/27 08:31:18 123 | 121 25 13 5 0 0 0 2018/02/27 08:31:19 124 | 122 12 28 3 0 0 0 2018/02/27 08:31:20 125 | 123 24 14 2 0 0 0 2018/02/27 08:31:21 126 | 124 23 27 3 0 0 0 2018/02/27 08:31:22 127 | 125 25 13 2 0 0 0 2018/02/27 08:31:23 128 | 126 24 27 3 0 0 0 2018/02/27 08:31:24 129 | 127 12 27 2 0 0 0 2018/02/27 08:31:25 130 | -------------------------------------------------------------------------------- /performance/data/mongo.log: -------------------------------------------------------------------------------- 1 | Tue Feb 27 08:16:22 UTC 2018 2 | #legend: time|node1|node2|node3|node1:err|node2:err|node3:err 3 | 1 0 0 0 0 0 0 2018/02/27 08:16:23 4 | 2 1 0 0 0 0 0 2018/02/27 08:16:24 5 | 3 1 1 2 0 0 0 2018/02/27 08:16:25 6 | 4 0 1 2 0 0 0 2018/02/27 08:16:26 7 | 5 2 1 1 0 0 0 2018/02/27 08:16:27 8 | 6 1 1 2 0 0 0 2018/02/27 08:16:28 9 | 7 1 0 1 0 0 0 2018/02/27 08:16:29 10 | 8 1 1 1 0 0 0 2018/02/27 08:16:30 11 | 9 0 2 2 0 0 0 2018/02/27 08:16:31 12 | 10 1 0 1 0 0 0 2018/02/27 08:16:32 13 | 11 1 1 1 0 0 0 2018/02/27 08:16:33 14 | 12 1 1 1 0 0 0 2018/02/27 08:16:34 15 | 13 1 1 2 0 0 0 2018/02/27 08:16:35 16 | 14 1 1 2 0 0 0 2018/02/27 08:16:36 17 | 15 1 1 2 0 0 0 2018/02/27 08:16:37 18 | 16 1 1 1 0 0 0 2018/02/27 08:16:38 19 | 17 0 0 1 0 0 0 2018/02/27 08:16:39 20 | 18 2 1 1 0 0 0 2018/02/27 08:16:40 21 | 19 1 1 1 0 0 0 2018/02/27 08:16:41 22 | 20 1 1 2 0 0 0 2018/02/27 08:16:42 23 | 21 0 0 1 0 0 0 2018/02/27 08:16:43 24 | 22 1 2 2 0 0 0 2018/02/27 08:16:44 25 | 23 1 0 1 0 0 0 2018/02/27 08:16:45 26 | 24 1 1 2 0 0 0 2018/02/27 08:16:46 27 | 25 1 1 1 0 0 0 2018/02/27 08:16:47 28 | 26 1 1 1 0 0 0 2018/02/27 08:16:48 29 | 27 1 1 1 0 0 0 2018/02/27 08:16:49 30 | 28 1 1 1 0 0 0 2018/02/27 08:16:50 31 | 29 1 1 2 0 0 0 2018/02/27 08:16:51 32 | 30 1 1 1 0 0 0 2018/02/27 08:16:52 33 | 31 1 0 2 0 0 0 2018/02/27 08:16:53 34 | 32 1 2 2 0 0 0 2018/02/27 08:16:54 35 | 33 1 1 1 0 0 0 2018/02/27 08:16:55 36 | 34 1 0 1 0 0 0 2018/02/27 08:16:56 37 | 35 1 1 1 0 0 0 2018/02/27 08:16:57 38 | 36 1 1 1 0 0 0 2018/02/27 08:16:58 39 | 37 1 1 2 0 0 0 2018/02/27 08:16:59 40 | 38 0 0 1 0 0 0 2018/02/27 08:17:00 41 | 39 1 1 1 0 0 0 2018/02/27 08:17:01 42 | 40 1 1 1 0 0 0 2018/02/27 08:17:02 43 | 41 1 1 2 0 0 0 2018/02/27 08:17:03 44 | 42 1 1 2 0 0 0 2018/02/27 08:17:04 45 | 43 1 1 1 0 0 0 2018/02/27 08:17:05 46 | 44 1 0 2 0 0 0 2018/02/27 08:17:06 47 | 45 1 2 1 0 0 0 2018/02/27 08:17:07 48 | 46 1 0 1 0 0 0 2018/02/27 08:17:08 49 | 47 0 1 1 0 0 0 2018/02/27 08:17:09 50 | 48 2 1 1 0 0 0 2018/02/27 08:17:10 51 | 49 1 1 2 0 0 0 2018/02/27 08:17:11 52 | 50 1 1 2 0 0 0 2018/02/27 08:17:12 53 | 51 1 0 1 0 0 0 2018/02/27 08:17:13 54 | 52 0 1 1 0 0 0 2018/02/27 08:17:14 55 | 53 1 2 2 0 0 0 2018/02/27 08:17:15 56 | 54 2 0 1 0 0 0 2018/02/27 08:17:16 57 | 55 0 1 1 0 0 0 2018/02/27 08:17:17 58 | 56 2 1 2 0 0 0 2018/02/27 08:17:18 59 | 57 0 1 1 0 0 0 2018/02/27 08:17:19 60 | 58 1 1 1 0 0 0 2018/02/27 08:17:20 61 | 59 1 1 2 0 0 0 2018/02/27 08:17:21 62 | 60 1 1 1 0 0 0 2018/02/27 08:17:22 63 | 61 1 0 2 0 0 0 2018/02/27 08:17:23 64 | 62 1 1 1 0 0 0 2018/02/27 08:17:24 65 | 63 1 1 2 0 0 0 2018/02/27 08:17:25 66 | 64 1 1 2 0 0 0 2018/02/27 08:17:26 67 | 65 1 1 1 0 0 0 2018/02/27 08:17:27 68 | 66 1 1 1 0 0 0 2018/02/27 08:17:28 69 | 67 1 1 2 0 0 0 2018/02/27 08:17:29 70 | 68 1 1 1 0 0 0 2018/02/27 08:17:30 71 | 69 1 0 1 0 0 0 2018/02/27 08:17:31 72 | 70 0 2 1 0 0 0 2018/02/27 08:17:32 73 | 71 2 0 3 0 0 0 2018/02/27 08:17:33 74 | 72 1 1 1 0 0 0 2018/02/27 08:17:34 75 | 73 0 1 1 0 0 0 2018/02/27 08:17:35 76 | 74 1 1 1 0 0 0 2018/02/27 08:17:36 77 | 75 1 1 2 0 0 0 2018/02/27 08:17:37 78 | 76 1 1 1 0 0 0 2018/02/27 08:17:38 79 | 77 1 1 1 0 0 0 2018/02/27 08:17:39 80 | 78 1 0 2 0 0 0 2018/02/27 08:17:40 81 | 79 1 1 1 0 0 0 2018/02/27 08:17:41 82 | 80 1 1 1 0 0 0 2018/02/27 08:17:42 83 | 81 1 1 2 0 0 0 2018/02/27 08:17:43 84 | 82 0 1 2 0 0 0 2018/02/27 08:17:44 85 | 83 1 1 1 0 0 0 2018/02/27 08:17:45 86 | 84 2 1 1 0 0 0 2018/02/27 08:17:47 87 | 85 1 1 2 0 0 0 2018/02/27 08:17:48 88 | 86 1 1 1 0 0 0 2018/02/27 08:17:49 89 | 87 0 0 1 0 0 0 2018/02/27 08:17:50 90 | 88 1 1 2 0 0 0 2018/02/27 08:17:51 91 | 89 1 1 1 0 0 0 2018/02/27 08:17:52 92 | 90 1 1 2 0 0 0 2018/02/27 08:17:53 93 | 91 1 1 1 0 0 0 2018/02/27 08:17:54 94 | 92 1 0 1 0 0 0 2018/02/27 08:17:55 95 | 93 1 2 1 0 0 0 2018/02/27 08:17:56 96 | 94 1 1 2 0 0 0 2018/02/27 08:17:57 97 | 95 1 0 1 0 0 0 2018/02/27 08:17:58 98 | 96 1 1 2 0 0 0 2018/02/27 08:17:59 99 | 97 1 1 1 0 0 0 2018/02/27 08:18:00 100 | 98 1 1 2 0 0 0 2018/02/27 08:18:01 101 | 100 0 0 0 0 0 0 2018/02/27 08:18:03 102 | 101 1 2 2 0 0 0 2018/02/27 08:18:04 103 | 102 1 1 1 0 0 0 2018/02/27 08:18:05 104 | 103 1 0 1 0 0 0 2018/02/27 08:18:06 105 | 104 1 1 2 0 0 0 2018/02/27 08:18:07 106 | 105 1 1 2 0 0 0 2018/02/27 08:18:08 107 | 106 1 1 1 0 0 0 2018/02/27 08:18:09 108 | 107 1 1 1 0 0 0 2018/02/27 08:18:10 109 | 108 1 0 1 0 0 0 2018/02/27 08:18:11 110 | 109 1 1 1 0 0 0 2018/02/27 08:18:12 111 | 110 1 1 1 0 0 0 2018/02/27 08:18:13 112 | 111 1 1 3 0 0 0 2018/02/27 08:18:14 113 | 112 0 1 1 0 0 0 2018/02/27 08:18:15 114 | 113 2 1 1 0 0 0 2018/02/27 08:18:16 115 | 114 0 1 1 0 0 0 2018/02/27 08:18:17 116 | 115 1 0 2 0 0 0 2018/02/27 08:18:18 117 | 116 1 1 1 0 0 0 2018/02/27 08:18:19 118 | 117 1 1 1 0 0 0 2018/02/27 08:18:20 119 | 118 1 1 1 0 0 0 2018/02/27 08:18:21 120 | 119 1 1 2 0 0 0 2018/02/27 08:18:22 121 | 120 1 1 2 0 0 0 2018/02/27 08:18:23 122 | 121 1 1 1 0 0 0 2018/02/27 08:18:24 123 | 122 1 0 1 0 0 0 2018/02/27 08:18:25 124 | 123 1 1 1 0 0 0 2018/02/27 08:18:26 125 | 124 1 2 2 0 0 0 2018/02/27 08:18:27 126 | 125 1 0 1 0 0 0 2018/02/27 08:18:28 127 | 126 1 1 1 0 0 0 2018/02/27 08:18:29 128 | -------------------------------------------------------------------------------- /performance/data/node1.node2.pings: -------------------------------------------------------------------------------- 1 | HPING node2 (eth0 52.161.162.215): S set, 40 headers + 0 data bytes 2 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=0 win=29200 rtt=27.8 ms 3 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=1 win=29200 rtt=27.7 ms 4 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=2 win=29200 rtt=27.6 ms 5 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=3 win=29200 rtt=27.5 ms 6 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=4 win=29200 rtt=23.3 ms 7 | len=46 ip=52.161.162.215 ttl=51 DF id=0 sport=22 flags=SA seq=5 win=29200 rtt=23.2 ms 8 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=6 win=29200 rtt=23.1 ms 9 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=7 win=29200 rtt=27.0 ms 10 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=8 win=29200 rtt=26.8 ms 11 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=9 win=29200 rtt=26.7 ms 12 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=10 win=29200 rtt=26.6 ms 13 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=11 win=29200 rtt=26.5 ms 14 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=12 win=29200 rtt=26.3 ms 15 | len=46 ip=52.161.162.215 ttl=51 DF id=0 sport=22 flags=SA seq=13 win=29200 rtt=26.2 ms 16 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=14 win=29200 rtt=22.1 ms 17 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=15 win=29200 rtt=21.9 ms 18 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=16 win=29200 rtt=21.8 ms 19 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=17 win=29200 rtt=21.8 ms 20 | len=46 ip=52.161.162.215 ttl=51 DF id=0 sport=22 flags=SA seq=18 win=29200 rtt=21.6 ms 21 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=19 win=29200 rtt=25.6 ms 22 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=20 win=29200 rtt=29.5 ms 23 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=21 win=29200 rtt=29.3 ms 24 | len=46 ip=52.161.162.215 ttl=51 DF id=0 sport=22 flags=SA seq=22 win=29200 rtt=25.2 ms 25 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=23 win=29200 rtt=29.0 ms 26 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=24 win=29200 rtt=28.9 ms 27 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=25 win=29200 rtt=28.8 ms 28 | len=46 ip=52.161.162.215 ttl=51 DF id=0 sport=22 flags=SA seq=26 win=29200 rtt=28.7 ms 29 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=27 win=29200 rtt=28.6 ms 30 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=28 win=29200 rtt=28.6 ms 31 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=29 win=29200 rtt=24.5 ms 32 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=30 win=29200 rtt=24.3 ms 33 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=31 win=29200 rtt=24.2 ms 34 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=32 win=29200 rtt=28.0 ms 35 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=33 win=29200 rtt=27.9 ms 36 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=34 win=29200 rtt=23.8 ms 37 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=35 win=29200 rtt=23.7 ms 38 | len=46 ip=52.161.162.215 ttl=51 DF id=0 sport=22 flags=SA seq=36 win=29200 rtt=23.5 ms 39 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=37 win=29200 rtt=23.4 ms 40 | len=46 ip=52.161.162.215 ttl=51 DF id=0 sport=22 flags=SA seq=38 win=29200 rtt=23.3 ms 41 | len=46 ip=52.161.162.215 ttl=51 DF id=0 sport=22 flags=SA seq=39 win=29200 rtt=27.1 ms 42 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=40 win=29200 rtt=27.0 ms 43 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=41 win=29200 rtt=26.9 ms 44 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=42 win=29200 rtt=26.8 ms 45 | len=46 ip=52.161.162.215 ttl=51 DF id=0 sport=22 flags=SA seq=43 win=29200 rtt=26.6 ms 46 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=44 win=29200 rtt=22.6 ms 47 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=45 win=29200 rtt=22.5 ms 48 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=46 win=29200 rtt=22.3 ms 49 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=47 win=29200 rtt=22.2 ms 50 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=48 win=29200 rtt=22.2 ms 51 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=49 win=29200 rtt=26.1 ms 52 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=50 win=29200 rtt=26.0 ms 53 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=51 win=29200 rtt=25.9 ms 54 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=52 win=29200 rtt=25.8 ms 55 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=53 win=29200 rtt=25.7 ms 56 | len=46 ip=52.161.162.215 ttl=51 DF id=0 sport=22 flags=SA seq=54 win=29200 rtt=29.5 ms 57 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=55 win=29200 rtt=29.4 ms 58 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=56 win=29200 rtt=25.3 ms 59 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=57 win=29200 rtt=25.2 ms 60 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=58 win=29200 rtt=25.1 ms 61 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=59 win=29200 rtt=28.9 ms 62 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=60 win=29200 rtt=28.8 ms 63 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=61 win=29200 rtt=28.8 ms 64 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=62 win=29200 rtt=28.6 ms 65 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=63 win=29200 rtt=28.5 ms 66 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=64 win=29200 rtt=24.4 ms 67 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=65 win=29200 rtt=24.3 ms 68 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=66 win=29200 rtt=24.2 ms 69 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=67 win=29200 rtt=24.1 ms 70 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=68 win=29200 rtt=24.0 ms 71 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=69 win=29200 rtt=23.9 ms 72 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=70 win=29200 rtt=27.8 ms 73 | len=46 ip=52.161.162.215 ttl=51 DF id=0 sport=22 flags=SA seq=71 win=29200 rtt=23.7 ms 74 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=72 win=29200 rtt=23.6 ms 75 | len=46 ip=52.161.162.215 ttl=51 DF id=0 sport=22 flags=SA seq=73 win=29200 rtt=23.5 ms 76 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=74 win=29200 rtt=23.4 ms 77 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=75 win=29200 rtt=27.2 ms 78 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=76 win=29200 rtt=23.1 ms 79 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=77 win=29200 rtt=23.1 ms 80 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=78 win=29200 rtt=22.9 ms 81 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=79 win=29200 rtt=26.8 ms 82 | len=46 ip=52.161.162.215 ttl=51 DF id=0 sport=22 flags=SA seq=80 win=29200 rtt=26.7 ms 83 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=81 win=29200 rtt=26.6 ms 84 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=82 win=29200 rtt=26.5 ms 85 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=83 win=29200 rtt=26.3 ms 86 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=84 win=29200 rtt=26.2 ms 87 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=85 win=29200 rtt=26.1 ms 88 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=86 win=29200 rtt=26.1 ms 89 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=87 win=29200 rtt=26.0 ms 90 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=88 win=29200 rtt=25.9 ms 91 | len=46 ip=52.161.162.215 ttl=51 DF id=0 sport=22 flags=SA seq=89 win=29200 rtt=25.8 ms 92 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=90 win=29200 rtt=25.7 ms 93 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=91 win=29200 rtt=25.6 ms 94 | len=46 ip=52.161.162.215 ttl=51 DF id=0 sport=22 flags=SA seq=92 win=29200 rtt=25.5 ms 95 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=93 win=29200 rtt=25.4 ms 96 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=94 win=29200 rtt=25.3 ms 97 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=95 win=29200 rtt=29.2 ms 98 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=96 win=29200 rtt=25.1 ms 99 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=97 win=29200 rtt=25.0 ms 100 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=98 win=29200 rtt=28.9 ms 101 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=99 win=29200 rtt=28.9 ms 102 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=100 win=29200 rtt=28.7 ms 103 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=101 win=29200 rtt=28.6 ms 104 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=102 win=29200 rtt=28.5 ms 105 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=103 win=29200 rtt=28.4 ms 106 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=104 win=29200 rtt=28.3 ms 107 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=105 win=29200 rtt=28.2 ms 108 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=106 win=29200 rtt=28.0 ms 109 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=107 win=29200 rtt=27.9 ms 110 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=108 win=29200 rtt=27.8 ms 111 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=109 win=29200 rtt=23.8 ms 112 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=110 win=29200 rtt=23.6 ms 113 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=111 win=29200 rtt=23.5 ms 114 | len=46 ip=52.161.162.215 ttl=51 DF id=0 sport=22 flags=SA seq=112 win=29200 rtt=23.5 ms 115 | len=46 ip=52.161.162.215 ttl=51 DF id=0 sport=22 flags=SA seq=113 win=29200 rtt=23.4 ms 116 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=114 win=29200 rtt=23.2 ms 117 | len=46 ip=52.161.162.215 ttl=51 DF id=0 sport=22 flags=SA seq=115 win=29200 rtt=23.1 ms 118 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=116 win=29200 rtt=23.0 ms 119 | len=46 ip=52.161.162.215 ttl=51 DF id=0 sport=22 flags=SA seq=117 win=29200 rtt=22.9 ms 120 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=118 win=29200 rtt=22.8 ms 121 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=119 win=29200 rtt=22.7 ms 122 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=120 win=29200 rtt=22.7 ms 123 | len=46 ip=52.161.162.215 ttl=51 DF id=0 sport=22 flags=SA seq=121 win=29200 rtt=22.6 ms 124 | len=46 ip=52.161.162.215 ttl=51 DF id=0 sport=22 flags=SA seq=122 win=29200 rtt=22.4 ms 125 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=123 win=29200 rtt=22.4 ms 126 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=124 win=29200 rtt=22.2 ms 127 | len=46 ip=52.161.162.215 ttl=52 DF id=0 sport=22 flags=SA seq=125 win=29200 rtt=22.1 ms 128 | -------------------------------------------------------------------------------- /performance/data/node1.node3.pings: -------------------------------------------------------------------------------- 1 | HPING node3 (eth0 52.163.100.160): S set, 40 headers + 0 data bytes 2 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=0 win=29200 rtt=172.0 ms 3 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=1 win=29200 rtt=171.9 ms 4 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=2 win=29200 rtt=171.7 ms 5 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=3 win=29200 rtt=171.6 ms 6 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=4 win=29200 rtt=171.6 ms 7 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=5 win=29200 rtt=171.4 ms 8 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=6 win=29200 rtt=171.3 ms 9 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=7 win=29200 rtt=175.3 ms 10 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=8 win=29200 rtt=175.1 ms 11 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=9 win=29200 rtt=175.0 ms 12 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=10 win=29200 rtt=174.9 ms 13 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=11 win=29200 rtt=174.8 ms 14 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=12 win=29200 rtt=174.7 ms 15 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=13 win=29200 rtt=174.7 ms 16 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=14 win=29200 rtt=174.6 ms 17 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=15 win=29200 rtt=174.6 ms 18 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=16 win=29200 rtt=174.4 ms 19 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=17 win=29200 rtt=174.4 ms 20 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=18 win=29200 rtt=174.2 ms 21 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=19 win=29200 rtt=174.1 ms 22 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=20 win=29200 rtt=174.0 ms 23 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=21 win=29200 rtt=173.9 ms 24 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=22 win=29200 rtt=173.9 ms 25 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=23 win=29200 rtt=173.8 ms 26 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=24 win=29200 rtt=173.6 ms 27 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=25 win=29200 rtt=173.5 ms 28 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=26 win=29200 rtt=173.4 ms 29 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=27 win=29200 rtt=173.3 ms 30 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=28 win=29200 rtt=173.2 ms 31 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=29 win=29200 rtt=173.1 ms 32 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=30 win=29200 rtt=173.1 ms 33 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=31 win=29200 rtt=173.0 ms 34 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=32 win=29200 rtt=172.9 ms 35 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=33 win=29200 rtt=172.9 ms 36 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=34 win=29200 rtt=172.7 ms 37 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=35 win=29200 rtt=172.6 ms 38 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=36 win=29200 rtt=172.2 ms 39 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=37 win=29200 rtt=175.8 ms 40 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=38 win=29200 rtt=175.8 ms 41 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=39 win=29200 rtt=175.6 ms 42 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=40 win=29200 rtt=175.5 ms 43 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=41 win=29200 rtt=175.5 ms 44 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=42 win=29200 rtt=171.3 ms 45 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=43 win=29200 rtt=171.2 ms 46 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=44 win=29200 rtt=171.0 ms 47 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=45 win=29200 rtt=171.0 ms 48 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=46 win=29200 rtt=170.7 ms 49 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=47 win=29200 rtt=170.4 ms 50 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=48 win=29200 rtt=178.2 ms 51 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=49 win=29200 rtt=169.9 ms 52 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=50 win=29200 rtt=169.8 ms 53 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=51 win=29200 rtt=169.6 ms 54 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=52 win=29200 rtt=169.6 ms 55 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=53 win=29200 rtt=173.4 ms 56 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=54 win=29200 rtt=173.4 ms 57 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=55 win=29200 rtt=173.2 ms 58 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=56 win=29200 rtt=173.1 ms 59 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=57 win=29200 rtt=172.9 ms 60 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=58 win=29200 rtt=176.9 ms 61 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=59 win=29200 rtt=168.7 ms 62 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=60 win=29200 rtt=176.6 ms 63 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=61 win=29200 rtt=176.5 ms 64 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=62 win=29200 rtt=176.4 ms 65 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=63 win=29200 rtt=172.3 ms 66 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=64 win=29200 rtt=172.2 ms 67 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=65 win=29200 rtt=172.1 ms 68 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=66 win=29200 rtt=172.0 ms 69 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=67 win=29200 rtt=171.8 ms 70 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=68 win=29200 rtt=175.7 ms 71 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=69 win=29200 rtt=175.6 ms 72 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=70 win=29200 rtt=175.6 ms 73 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=71 win=29200 rtt=175.5 ms 74 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=72 win=29200 rtt=175.4 ms 75 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=73 win=29200 rtt=171.3 ms 76 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=74 win=29200 rtt=171.3 ms 77 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=75 win=29200 rtt=171.2 ms 78 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=76 win=29200 rtt=171.1 ms 79 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=77 win=29200 rtt=171.1 ms 80 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=78 win=29200 rtt=170.9 ms 81 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=79 win=29200 rtt=170.8 ms 82 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=80 win=29200 rtt=170.7 ms 83 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=81 win=29200 rtt=170.6 ms 84 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=82 win=29200 rtt=170.4 ms 85 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=83 win=29200 rtt=174.3 ms 86 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=84 win=29200 rtt=174.2 ms 87 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=85 win=29200 rtt=174.2 ms 88 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=86 win=29200 rtt=174.1 ms 89 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=87 win=29200 rtt=173.9 ms 90 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=88 win=29200 rtt=173.9 ms 91 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=89 win=29200 rtt=173.8 ms 92 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=90 win=29200 rtt=173.7 ms 93 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=91 win=29200 rtt=173.6 ms 94 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=92 win=29200 rtt=173.5 ms 95 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=93 win=29200 rtt=173.4 ms 96 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=94 win=29200 rtt=173.3 ms 97 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=95 win=29200 rtt=173.2 ms 98 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=96 win=29200 rtt=177.1 ms 99 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=97 win=29200 rtt=177.0 ms 100 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=98 win=29200 rtt=172.9 ms 101 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=99 win=29200 rtt=172.8 ms 102 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=100 win=29200 rtt=172.7 ms 103 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=101 win=29200 rtt=172.5 ms 104 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=102 win=29200 rtt=172.1 ms 105 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=103 win=29200 rtt=172.0 ms 106 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=104 win=29200 rtt=172.0 ms 107 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=105 win=29200 rtt=171.9 ms 108 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=106 win=29200 rtt=171.6 ms 109 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=107 win=29200 rtt=171.4 ms 110 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=108 win=29200 rtt=175.3 ms 111 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=109 win=29200 rtt=174.9 ms 112 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=110 win=29200 rtt=174.7 ms 113 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=111 win=29200 rtt=174.6 ms 114 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=112 win=29200 rtt=174.5 ms 115 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=113 win=29200 rtt=174.4 ms 116 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=114 win=29200 rtt=174.0 ms 117 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=115 win=29200 rtt=173.7 ms 118 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=116 win=29200 rtt=173.6 ms 119 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=117 win=29200 rtt=173.5 ms 120 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=118 win=29200 rtt=169.4 ms 121 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=119 win=29200 rtt=169.2 ms 122 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=120 win=29200 rtt=169.1 ms 123 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=121 win=29200 rtt=177.0 ms 124 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=122 win=29200 rtt=176.9 ms 125 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=123 win=29200 rtt=176.8 ms 126 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=124 win=29200 rtt=172.8 ms 127 | len=46 ip=52.163.100.160 ttl=46 DF id=0 sport=22 flags=SA seq=125 win=29200 rtt=172.7 ms 128 | -------------------------------------------------------------------------------- /performance/data/node2.node1.pings: -------------------------------------------------------------------------------- 1 | HPING node1 (eth0 52.151.60.60): S set, 40 headers + 0 data bytes 2 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=0 win=29200 rtt=23.9 ms 3 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=1 win=29200 rtt=23.8 ms 4 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=2 win=29200 rtt=23.8 ms 5 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=3 win=29200 rtt=23.6 ms 6 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=4 win=29200 rtt=27.5 ms 7 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=5 win=29200 rtt=27.3 ms 8 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=6 win=29200 rtt=27.2 ms 9 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=7 win=29200 rtt=27.1 ms 10 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=8 win=29200 rtt=27.0 ms 11 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=9 win=29200 rtt=22.9 ms 12 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=10 win=29200 rtt=22.8 ms 13 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=11 win=29200 rtt=22.7 ms 14 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=12 win=29200 rtt=22.5 ms 15 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=13 win=29200 rtt=22.4 ms 16 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=14 win=29200 rtt=22.3 ms 17 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=15 win=29200 rtt=22.2 ms 18 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=16 win=29200 rtt=22.0 ms 19 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=17 win=29200 rtt=21.9 ms 20 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=18 win=29200 rtt=21.9 ms 21 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=19 win=29200 rtt=21.7 ms 22 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=20 win=29200 rtt=29.6 ms 23 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=21 win=29200 rtt=29.5 ms 24 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=22 win=29200 rtt=29.4 ms 25 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=23 win=29200 rtt=29.3 ms 26 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=24 win=29200 rtt=29.2 ms 27 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=25 win=29200 rtt=29.0 ms 28 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=26 win=29200 rtt=29.0 ms 29 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=27 win=29200 rtt=29.0 ms 30 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=28 win=29200 rtt=28.8 ms 31 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=29 win=29200 rtt=28.7 ms 32 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=30 win=29200 rtt=28.6 ms 33 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=31 win=29200 rtt=28.4 ms 34 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=32 win=29200 rtt=28.4 ms 35 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=33 win=29200 rtt=28.2 ms 36 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=34 win=29200 rtt=24.1 ms 37 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=35 win=29200 rtt=24.0 ms 38 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=36 win=29200 rtt=24.0 ms 39 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=37 win=29200 rtt=23.8 ms 40 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=38 win=29200 rtt=23.6 ms 41 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=39 win=29200 rtt=27.6 ms 42 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=40 win=29200 rtt=27.4 ms 43 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=41 win=29200 rtt=27.2 ms 44 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=42 win=29200 rtt=27.2 ms 45 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=43 win=29200 rtt=23.0 ms 46 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=44 win=29200 rtt=26.9 ms 47 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=45 win=29200 rtt=26.8 ms 48 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=46 win=29200 rtt=26.8 ms 49 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=47 win=29200 rtt=26.7 ms 50 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=48 win=29200 rtt=26.6 ms 51 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=49 win=29200 rtt=26.5 ms 52 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=50 win=29200 rtt=26.4 ms 53 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=51 win=29200 rtt=26.3 ms 54 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=52 win=29200 rtt=26.1 ms 55 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=53 win=29200 rtt=26.1 ms 56 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=54 win=29200 rtt=22.0 ms 57 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=55 win=29200 rtt=21.9 ms 58 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=56 win=29200 rtt=21.7 ms 59 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=57 win=29200 rtt=29.6 ms 60 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=58 win=29200 rtt=29.5 ms 61 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=59 win=29200 rtt=25.4 ms 62 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=60 win=29200 rtt=25.2 ms 63 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=61 win=29200 rtt=25.1 ms 64 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=62 win=29200 rtt=25.0 ms 65 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=63 win=29200 rtt=24.9 ms 66 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=64 win=29200 rtt=24.8 ms 67 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=65 win=29200 rtt=24.6 ms 68 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=66 win=29200 rtt=24.5 ms 69 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=67 win=29200 rtt=24.3 ms 70 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=68 win=29200 rtt=24.2 ms 71 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=69 win=29200 rtt=28.1 ms 72 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=70 win=29200 rtt=27.9 ms 73 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=71 win=29200 rtt=27.7 ms 74 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=72 win=29200 rtt=27.6 ms 75 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=73 win=29200 rtt=27.5 ms 76 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=74 win=29200 rtt=27.3 ms 77 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=75 win=29200 rtt=27.1 ms 78 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=76 win=29200 rtt=26.9 ms 79 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=77 win=29200 rtt=26.8 ms 80 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=78 win=29200 rtt=26.7 ms 81 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=79 win=29200 rtt=26.5 ms 82 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=80 win=29200 rtt=26.3 ms 83 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=81 win=29200 rtt=26.2 ms 84 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=82 win=29200 rtt=26.1 ms 85 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=83 win=29200 rtt=26.0 ms 86 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=84 win=29200 rtt=29.9 ms 87 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=85 win=29200 rtt=29.7 ms 88 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=86 win=29200 rtt=29.5 ms 89 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=87 win=29200 rtt=29.4 ms 90 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=88 win=29200 rtt=29.3 ms 91 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=89 win=29200 rtt=29.2 ms 92 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=90 win=29200 rtt=29.1 ms 93 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=91 win=29200 rtt=29.0 ms 94 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=92 win=29200 rtt=28.9 ms 95 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=93 win=29200 rtt=28.7 ms 96 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=94 win=29200 rtt=28.6 ms 97 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=95 win=29200 rtt=28.6 ms 98 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=96 win=29200 rtt=28.5 ms 99 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=97 win=29200 rtt=28.4 ms 100 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=98 win=29200 rtt=28.3 ms 101 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=99 win=29200 rtt=28.2 ms 102 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=100 win=29200 rtt=28.1 ms 103 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=101 win=29200 rtt=27.9 ms 104 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=102 win=29200 rtt=27.8 ms 105 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=103 win=29200 rtt=27.7 ms 106 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=104 win=29200 rtt=23.6 ms 107 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=105 win=29200 rtt=23.5 ms 108 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=106 win=29200 rtt=23.5 ms 109 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=107 win=29200 rtt=23.3 ms 110 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=108 win=29200 rtt=23.1 ms 111 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=109 win=29200 rtt=23.0 ms 112 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=110 win=29200 rtt=23.0 ms 113 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=111 win=29200 rtt=22.9 ms 114 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=112 win=29200 rtt=22.8 ms 115 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=113 win=29200 rtt=22.7 ms 116 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=114 win=29200 rtt=26.5 ms 117 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=115 win=29200 rtt=26.4 ms 118 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=116 win=29200 rtt=26.3 ms 119 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=117 win=29200 rtt=26.2 ms 120 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=118 win=29200 rtt=26.1 ms 121 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=119 win=29200 rtt=21.9 ms 122 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=120 win=29200 rtt=21.8 ms 123 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=121 win=29200 rtt=21.7 ms 124 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=122 win=29200 rtt=29.6 ms 125 | len=46 ip=52.151.60.60 ttl=49 DF id=0 sport=22 flags=SA seq=123 win=29200 rtt=29.5 ms 126 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=124 win=29200 rtt=29.5 ms 127 | len=46 ip=52.151.60.60 ttl=50 DF id=0 sport=22 flags=SA seq=125 win=29200 rtt=29.4 ms 128 | -------------------------------------------------------------------------------- /performance/data/node2.node3.pings: -------------------------------------------------------------------------------- 1 | HPING node3 (eth0 52.163.100.160): S set, 40 headers + 0 data bytes 2 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=0 win=29200 rtt=191.9 ms 3 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=1 win=29200 rtt=191.8 ms 4 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=2 win=29200 rtt=195.8 ms 5 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=3 win=29200 rtt=195.7 ms 6 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=4 win=29200 rtt=195.6 ms 7 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=5 win=29200 rtt=195.5 ms 8 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=6 win=29200 rtt=195.4 ms 9 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=7 win=29200 rtt=199.3 ms 10 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=8 win=29200 rtt=195.2 ms 11 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=9 win=29200 rtt=195.2 ms 12 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=10 win=29200 rtt=195.1 ms 13 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=11 win=29200 rtt=195.0 ms 14 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=12 win=29200 rtt=194.9 ms 15 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=13 win=29200 rtt=190.8 ms 16 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=14 win=29200 rtt=190.7 ms 17 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=15 win=29200 rtt=190.6 ms 18 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=16 win=29200 rtt=190.6 ms 19 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=17 win=29200 rtt=190.5 ms 20 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=18 win=29200 rtt=190.3 ms 21 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=19 win=29200 rtt=190.3 ms 22 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=20 win=29200 rtt=190.2 ms 23 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=21 win=29200 rtt=198.0 ms 24 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=22 win=29200 rtt=189.9 ms 25 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=23 win=29200 rtt=193.8 ms 26 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=24 win=29200 rtt=193.7 ms 27 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=25 win=29200 rtt=193.6 ms 28 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=26 win=29200 rtt=193.5 ms 29 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=27 win=29200 rtt=193.4 ms 30 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=28 win=29200 rtt=197.3 ms 31 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=29 win=29200 rtt=197.3 ms 32 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=30 win=29200 rtt=197.2 ms 33 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=31 win=29200 rtt=197.1 ms 34 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=32 win=29200 rtt=197.0 ms 35 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=33 win=29200 rtt=196.9 ms 36 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=34 win=29200 rtt=196.8 ms 37 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=35 win=29200 rtt=196.7 ms 38 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=36 win=29200 rtt=196.6 ms 39 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=37 win=29200 rtt=196.4 ms 40 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=38 win=29200 rtt=192.3 ms 41 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=39 win=29200 rtt=192.2 ms 42 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=40 win=29200 rtt=192.1 ms 43 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=41 win=29200 rtt=192.0 ms 44 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=42 win=29200 rtt=192.0 ms 45 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=43 win=29200 rtt=191.9 ms 46 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=44 win=29200 rtt=195.8 ms 47 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=45 win=29200 rtt=195.7 ms 48 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=46 win=29200 rtt=195.7 ms 49 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=47 win=29200 rtt=195.7 ms 50 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=48 win=29200 rtt=195.6 ms 51 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=49 win=29200 rtt=195.4 ms 52 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=50 win=29200 rtt=195.3 ms 53 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=51 win=29200 rtt=195.2 ms 54 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=52 win=29200 rtt=195.2 ms 55 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=53 win=29200 rtt=195.1 ms 56 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=54 win=29200 rtt=195.0 ms 57 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=55 win=29200 rtt=194.9 ms 58 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=56 win=29200 rtt=194.8 ms 59 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=57 win=29200 rtt=194.8 ms 60 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=58 win=29200 rtt=194.7 ms 61 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=59 win=29200 rtt=194.6 ms 62 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=60 win=29200 rtt=194.5 ms 63 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=61 win=29200 rtt=194.3 ms 64 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=62 win=29200 rtt=194.3 ms 65 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=63 win=29200 rtt=190.2 ms 66 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=64 win=29200 rtt=190.1 ms 67 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=65 win=29200 rtt=190.0 ms 68 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=66 win=29200 rtt=197.9 ms 69 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=67 win=29200 rtt=197.7 ms 70 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=68 win=29200 rtt=193.7 ms 71 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=69 win=29200 rtt=193.6 ms 72 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=70 win=29200 rtt=193.5 ms 73 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=71 win=29200 rtt=193.4 ms 74 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=72 win=29200 rtt=193.4 ms 75 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=73 win=29200 rtt=193.2 ms 76 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=74 win=29200 rtt=193.1 ms 77 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=75 win=29200 rtt=193.0 ms 78 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=76 win=29200 rtt=192.9 ms 79 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=77 win=29200 rtt=192.8 ms 80 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=78 win=29200 rtt=192.7 ms 81 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=79 win=29200 rtt=192.5 ms 82 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=80 win=29200 rtt=192.4 ms 83 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=81 win=29200 rtt=192.3 ms 84 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=82 win=29200 rtt=192.2 ms 85 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=83 win=29200 rtt=192.1 ms 86 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=84 win=29200 rtt=192.1 ms 87 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=85 win=29200 rtt=191.9 ms 88 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=86 win=29200 rtt=191.9 ms 89 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=87 win=29200 rtt=191.8 ms 90 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=88 win=29200 rtt=191.7 ms 91 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=89 win=29200 rtt=191.7 ms 92 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=90 win=29200 rtt=191.5 ms 93 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=91 win=29200 rtt=191.4 ms 94 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=92 win=29200 rtt=191.3 ms 95 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=93 win=29200 rtt=191.2 ms 96 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=94 win=29200 rtt=191.1 ms 97 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=95 win=29200 rtt=191.0 ms 98 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=96 win=29200 rtt=190.9 ms 99 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=97 win=29200 rtt=190.8 ms 100 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=98 win=29200 rtt=190.7 ms 101 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=99 win=29200 rtt=190.7 ms 102 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=100 win=29200 rtt=198.6 ms 103 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=101 win=29200 rtt=198.6 ms 104 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=102 win=29200 rtt=190.5 ms 105 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=103 win=29200 rtt=194.4 ms 106 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=104 win=29200 rtt=194.4 ms 107 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=105 win=29200 rtt=194.2 ms 108 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=106 win=29200 rtt=194.1 ms 109 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=107 win=29200 rtt=194.0 ms 110 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=108 win=29200 rtt=193.9 ms 111 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=109 win=29200 rtt=193.8 ms 112 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=110 win=29200 rtt=193.7 ms 113 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=111 win=29200 rtt=197.5 ms 114 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=112 win=29200 rtt=197.5 ms 115 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=113 win=29200 rtt=193.3 ms 116 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=114 win=29200 rtt=193.2 ms 117 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=115 win=29200 rtt=193.0 ms 118 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=116 win=29200 rtt=192.9 ms 119 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=117 win=29200 rtt=192.8 ms 120 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=118 win=29200 rtt=192.7 ms 121 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=119 win=29200 rtt=192.6 ms 122 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=120 win=29200 rtt=192.4 ms 123 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=121 win=29200 rtt=192.3 ms 124 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=122 win=29200 rtt=192.2 ms 125 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=123 win=29200 rtt=192.2 ms 126 | len=46 ip=52.163.100.160 ttl=45 DF id=0 sport=22 flags=SA seq=124 win=29200 rtt=192.0 ms 127 | len=46 ip=52.163.100.160 ttl=44 DF id=0 sport=22 flags=SA seq=125 win=29200 rtt=195.9 ms 128 | -------------------------------------------------------------------------------- /performance/data/node3.node1.pings: -------------------------------------------------------------------------------- 1 | HPING node1 (eth0 52.151.60.60): S set, 40 headers + 0 data bytes 2 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=0 win=29200 rtt=175.9 ms 3 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=1 win=29200 rtt=175.8 ms 4 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=2 win=29200 rtt=175.8 ms 5 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=3 win=29200 rtt=175.7 ms 6 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=4 win=29200 rtt=171.6 ms 7 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=5 win=29200 rtt=171.6 ms 8 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=6 win=29200 rtt=171.5 ms 9 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=7 win=29200 rtt=171.4 ms 10 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=8 win=29200 rtt=171.3 ms 11 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=9 win=29200 rtt=171.2 ms 12 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=10 win=29200 rtt=171.2 ms 13 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=11 win=29200 rtt=171.1 ms 14 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=12 win=29200 rtt=171.0 ms 15 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=13 win=29200 rtt=170.9 ms 16 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=14 win=29200 rtt=170.8 ms 17 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=15 win=29200 rtt=170.8 ms 18 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=16 win=29200 rtt=170.6 ms 19 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=17 win=29200 rtt=174.6 ms 20 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=18 win=29200 rtt=174.4 ms 21 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=19 win=29200 rtt=174.4 ms 22 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=20 win=29200 rtt=174.2 ms 23 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=21 win=29200 rtt=174.1 ms 24 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=22 win=29200 rtt=170.0 ms 25 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=23 win=29200 rtt=169.9 ms 26 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=24 win=29200 rtt=169.8 ms 27 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=25 win=29200 rtt=169.7 ms 28 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=26 win=29200 rtt=177.6 ms 29 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=27 win=29200 rtt=173.4 ms 30 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=28 win=29200 rtt=177.3 ms 31 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=29 win=29200 rtt=177.2 ms 32 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=30 win=29200 rtt=169.1 ms 33 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=31 win=29200 rtt=169.0 ms 34 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=32 win=29200 rtt=176.9 ms 35 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=33 win=29200 rtt=168.8 ms 36 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=34 win=29200 rtt=176.7 ms 37 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=35 win=29200 rtt=176.7 ms 38 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=36 win=29200 rtt=172.6 ms 39 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=37 win=29200 rtt=172.6 ms 40 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=38 win=29200 rtt=176.4 ms 41 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=39 win=29200 rtt=172.2 ms 42 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=40 win=29200 rtt=176.2 ms 43 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=41 win=29200 rtt=176.1 ms 44 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=42 win=29200 rtt=176.0 ms 45 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=43 win=29200 rtt=171.9 ms 46 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=44 win=29200 rtt=171.7 ms 47 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=45 win=29200 rtt=171.6 ms 48 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=46 win=29200 rtt=175.6 ms 49 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=47 win=29200 rtt=175.4 ms 50 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=48 win=29200 rtt=175.3 ms 51 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=49 win=29200 rtt=175.2 ms 52 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=50 win=29200 rtt=175.0 ms 53 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=51 win=29200 rtt=174.9 ms 54 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=52 win=29200 rtt=174.8 ms 55 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=53 win=29200 rtt=174.7 ms 56 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=54 win=29200 rtt=174.6 ms 57 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=55 win=29200 rtt=174.5 ms 58 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=56 win=29200 rtt=174.3 ms 59 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=57 win=29200 rtt=174.2 ms 60 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=58 win=29200 rtt=174.1 ms 61 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=59 win=29200 rtt=173.9 ms 62 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=60 win=29200 rtt=173.9 ms 63 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=61 win=29200 rtt=173.8 ms 64 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=62 win=29200 rtt=173.7 ms 65 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=63 win=29200 rtt=173.6 ms 66 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=64 win=29200 rtt=173.5 ms 67 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=65 win=29200 rtt=173.3 ms 68 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=66 win=29200 rtt=173.3 ms 69 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=67 win=29200 rtt=173.2 ms 70 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=68 win=29200 rtt=173.1 ms 71 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=69 win=29200 rtt=173.0 ms 72 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=70 win=29200 rtt=172.9 ms 73 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=71 win=29200 rtt=172.8 ms 74 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=72 win=29200 rtt=172.7 ms 75 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=73 win=29200 rtt=176.7 ms 76 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=74 win=29200 rtt=176.5 ms 77 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=75 win=29200 rtt=168.4 ms 78 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=76 win=29200 rtt=176.4 ms 79 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=77 win=29200 rtt=176.2 ms 80 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=78 win=29200 rtt=176.1 ms 81 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=79 win=29200 rtt=176.0 ms 82 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=80 win=29200 rtt=175.9 ms 83 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=81 win=29200 rtt=175.8 ms 84 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=82 win=29200 rtt=171.8 ms 85 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=83 win=29200 rtt=171.6 ms 86 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=84 win=29200 rtt=171.6 ms 87 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=85 win=29200 rtt=171.4 ms 88 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=86 win=29200 rtt=171.4 ms 89 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=87 win=29200 rtt=171.2 ms 90 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=88 win=29200 rtt=175.1 ms 91 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=89 win=29200 rtt=175.0 ms 92 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=90 win=29200 rtt=175.0 ms 93 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=91 win=29200 rtt=174.9 ms 94 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=92 win=29200 rtt=174.8 ms 95 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=93 win=29200 rtt=170.7 ms 96 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=94 win=29200 rtt=170.6 ms 97 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=95 win=29200 rtt=170.5 ms 98 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=96 win=29200 rtt=170.4 ms 99 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=97 win=29200 rtt=170.3 ms 100 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=98 win=29200 rtt=174.3 ms 101 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=99 win=29200 rtt=174.2 ms 102 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=100 win=29200 rtt=174.0 ms 103 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=101 win=29200 rtt=169.9 ms 104 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=102 win=29200 rtt=169.8 ms 105 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=103 win=29200 rtt=173.8 ms 106 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=104 win=29200 rtt=173.7 ms 107 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=105 win=29200 rtt=173.6 ms 108 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=106 win=29200 rtt=173.5 ms 109 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=107 win=29200 rtt=173.5 ms 110 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=108 win=29200 rtt=173.4 ms 111 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=109 win=29200 rtt=173.3 ms 112 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=110 win=29200 rtt=173.1 ms 113 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=111 win=29200 rtt=173.0 ms 114 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=112 win=29200 rtt=172.8 ms 115 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=113 win=29200 rtt=176.7 ms 116 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=114 win=29200 rtt=176.6 ms 117 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=115 win=29200 rtt=176.5 ms 118 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=116 win=29200 rtt=176.4 ms 119 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=117 win=29200 rtt=176.2 ms 120 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=118 win=29200 rtt=172.1 ms 121 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=119 win=29200 rtt=172.0 ms 122 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=120 win=29200 rtt=171.8 ms 123 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=121 win=29200 rtt=171.7 ms 124 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=122 win=29200 rtt=171.6 ms 125 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=123 win=29200 rtt=171.5 ms 126 | len=46 ip=52.151.60.60 ttl=43 DF id=0 sport=22 flags=SA seq=124 win=29200 rtt=171.4 ms 127 | len=46 ip=52.151.60.60 ttl=44 DF id=0 sport=22 flags=SA seq=125 win=29200 rtt=171.3 ms 128 | -------------------------------------------------------------------------------- /performance/data/node3.node2.pings: -------------------------------------------------------------------------------- 1 | HPING node2 (eth0 52.161.162.215): S set, 40 headers + 0 data bytes 2 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=0 win=29200 rtt=191.9 ms 3 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=1 win=29200 rtt=195.8 ms 4 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=2 win=29200 rtt=195.7 ms 5 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=3 win=29200 rtt=195.6 ms 6 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=4 win=29200 rtt=195.5 ms 7 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=5 win=29200 rtt=195.4 ms 8 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=6 win=29200 rtt=195.3 ms 9 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=7 win=29200 rtt=191.2 ms 10 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=8 win=29200 rtt=191.1 ms 11 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=9 win=29200 rtt=191.0 ms 12 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=10 win=29200 rtt=190.9 ms 13 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=11 win=29200 rtt=190.7 ms 14 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=12 win=29200 rtt=190.5 ms 15 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=13 win=29200 rtt=190.4 ms 16 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=14 win=29200 rtt=190.4 ms 17 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=15 win=29200 rtt=190.2 ms 18 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=16 win=29200 rtt=190.1 ms 19 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=17 win=29200 rtt=198.0 ms 20 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=18 win=29200 rtt=197.9 ms 21 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=19 win=29200 rtt=189.8 ms 22 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=20 win=29200 rtt=197.8 ms 23 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=21 win=29200 rtt=189.7 ms 24 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=22 win=29200 rtt=189.6 ms 25 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=23 win=29200 rtt=197.4 ms 26 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=24 win=29200 rtt=193.4 ms 27 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=25 win=29200 rtt=193.3 ms 28 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=26 win=29200 rtt=193.2 ms 29 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=27 win=29200 rtt=193.1 ms 30 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=28 win=29200 rtt=193.0 ms 31 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=29 win=29200 rtt=192.9 ms 32 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=30 win=29200 rtt=192.9 ms 33 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=31 win=29200 rtt=192.8 ms 34 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=32 win=29200 rtt=196.7 ms 35 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=33 win=29200 rtt=196.6 ms 36 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=34 win=29200 rtt=196.5 ms 37 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=35 win=29200 rtt=196.4 ms 38 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=36 win=29200 rtt=196.3 ms 39 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=37 win=29200 rtt=196.2 ms 40 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=38 win=29200 rtt=196.0 ms 41 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=39 win=29200 rtt=195.9 ms 42 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=40 win=29200 rtt=195.8 ms 43 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=41 win=29200 rtt=195.7 ms 44 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=42 win=29200 rtt=195.6 ms 45 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=43 win=29200 rtt=195.5 ms 46 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=44 win=29200 rtt=195.4 ms 47 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=45 win=29200 rtt=195.3 ms 48 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=46 win=29200 rtt=195.2 ms 49 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=47 win=29200 rtt=195.1 ms 50 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=48 win=29200 rtt=191.0 ms 51 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=49 win=29200 rtt=190.8 ms 52 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=50 win=29200 rtt=190.7 ms 53 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=51 win=29200 rtt=190.6 ms 54 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=52 win=29200 rtt=190.6 ms 55 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=53 win=29200 rtt=190.4 ms 56 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=54 win=29200 rtt=198.3 ms 57 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=55 win=29200 rtt=190.3 ms 58 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=56 win=29200 rtt=190.1 ms 59 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=57 win=29200 rtt=190.0 ms 60 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=58 win=29200 rtt=197.9 ms 61 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=59 win=29200 rtt=189.8 ms 62 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=60 win=29200 rtt=197.7 ms 63 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=61 win=29200 rtt=197.6 ms 64 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=62 win=29200 rtt=197.5 ms 65 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=63 win=29200 rtt=197.4 ms 66 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=64 win=29200 rtt=197.2 ms 67 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=65 win=29200 rtt=197.1 ms 68 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=66 win=29200 rtt=197.0 ms 69 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=67 win=29200 rtt=196.8 ms 70 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=68 win=29200 rtt=196.7 ms 71 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=69 win=29200 rtt=192.7 ms 72 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=70 win=29200 rtt=192.5 ms 73 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=71 win=29200 rtt=196.4 ms 74 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=72 win=29200 rtt=196.3 ms 75 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=73 win=29200 rtt=196.2 ms 76 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=74 win=29200 rtt=196.1 ms 77 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=75 win=29200 rtt=196.0 ms 78 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=76 win=29200 rtt=195.8 ms 79 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=77 win=29200 rtt=195.7 ms 80 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=78 win=29200 rtt=195.6 ms 81 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=79 win=29200 rtt=191.5 ms 82 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=80 win=29200 rtt=195.4 ms 83 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=81 win=29200 rtt=195.3 ms 84 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=82 win=29200 rtt=195.2 ms 85 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=83 win=29200 rtt=195.1 ms 86 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=84 win=29200 rtt=194.9 ms 87 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=85 win=29200 rtt=194.8 ms 88 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=86 win=29200 rtt=190.7 ms 89 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=87 win=29200 rtt=198.7 ms 90 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=88 win=29200 rtt=190.5 ms 91 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=89 win=29200 rtt=194.5 ms 92 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=90 win=29200 rtt=194.3 ms 93 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=91 win=29200 rtt=194.2 ms 94 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=92 win=29200 rtt=194.1 ms 95 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=93 win=29200 rtt=190.0 ms 96 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=94 win=29200 rtt=189.8 ms 97 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=95 win=29200 rtt=197.6 ms 98 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=96 win=29200 rtt=189.6 ms 99 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=97 win=29200 rtt=193.5 ms 100 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=98 win=29200 rtt=197.3 ms 101 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=99 win=29200 rtt=197.3 ms 102 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=100 win=29200 rtt=197.1 ms 103 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=101 win=29200 rtt=197.0 ms 104 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=102 win=29200 rtt=196.9 ms 105 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=103 win=29200 rtt=196.8 ms 106 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=104 win=29200 rtt=196.7 ms 107 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=105 win=29200 rtt=196.7 ms 108 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=106 win=29200 rtt=196.6 ms 109 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=107 win=29200 rtt=196.4 ms 110 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=108 win=29200 rtt=192.4 ms 111 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=109 win=29200 rtt=192.2 ms 112 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=110 win=29200 rtt=200.1 ms 113 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=111 win=29200 rtt=192.0 ms 114 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=112 win=29200 rtt=191.9 ms 115 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=113 win=29200 rtt=195.8 ms 116 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=114 win=29200 rtt=195.7 ms 117 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=115 win=29200 rtt=195.6 ms 118 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=116 win=29200 rtt=195.6 ms 119 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=117 win=29200 rtt=195.5 ms 120 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=118 win=29200 rtt=195.4 ms 121 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=119 win=29200 rtt=195.3 ms 122 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=120 win=29200 rtt=195.2 ms 123 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=121 win=29200 rtt=191.1 ms 124 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=122 win=29200 rtt=191.0 ms 125 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=123 win=29200 rtt=190.9 ms 126 | len=46 ip=52.161.162.215 ttl=45 DF id=0 sport=22 flags=SA seq=124 win=29200 rtt=190.8 ms 127 | len=46 ip=52.161.162.215 ttl=44 DF id=0 sport=22 flags=SA seq=125 win=29200 rtt=190.7 ms 128 | -------------------------------------------------------------------------------- /performance/etcd/db/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:17.10 2 | LABEL maintainer="Denis Rystsov " 3 | RUN apt-get update -y 4 | RUN apt-get install -y wget supervisor iptables 5 | RUN apt-get install -y iputils-ping vim tmux less 6 | RUN apt-get install -y software-properties-common 7 | RUN add-apt-repository -y ppa:gophers/archive 8 | RUN apt-get update -y 9 | RUN apt-get install -y golang-1.9-go git 10 | RUN mkdir -p /etcd 11 | WORKDIR /etcd 12 | RUN wget https://github.com/coreos/etcd/releases/download/v3.2.13/etcd-v3.2.13-linux-amd64.tar.gz 13 | RUN tar -xzvf etcd-v3.2.13-linux-amd64.tar.gz 14 | RUN rm etcd-v3.2.13-linux-amd64.tar.gz 15 | COPY remote-tester /etcd/remote-tester 16 | RUN /etcd/remote-tester/build.sh 17 | COPY run-etcd.sh /etcd/run-etcd.sh 18 | COPY run-tester.sh /etcd/run-tester.sh 19 | COPY isolate.sh /etcd/isolate.sh 20 | COPY rejoin.sh /etcd/rejoin.sh 21 | COPY etcd.conf /etc/supervisor/conf.d/etcd.conf 22 | CMD /usr/bin/supervisord -n 23 | -------------------------------------------------------------------------------- /performance/etcd/db/etcd.conf: -------------------------------------------------------------------------------- 1 | [program:etcd] 2 | command=/bin/bash /etcd/run-etcd.sh 3 | autorestart=true 4 | startretries=10 5 | 6 | [program:api] 7 | command=/bin/bash /etcd/run-tester.sh 8 | autorestart=true 9 | startretries=10 -------------------------------------------------------------------------------- /performance/etcd/db/isolate.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | node1=$(getent hosts node1 | awk '{ print $1 }') 6 | node2=$(getent hosts node2 | awk '{ print $1 }') 7 | node3=$(getent hosts node3 | awk '{ print $1 }') 8 | 9 | myip=$(getent hosts $(hostname) | awk '{ print $1 }') 10 | 11 | if [ -z "$node1" ] ; then exit 1 ; fi; 12 | if [ -z "$node2" ] ; then exit 1 ; fi; 13 | if [ -z "$node3" ] ; then exit 1 ; fi; 14 | 15 | python -c "for ip in (set(['$node1', '$node2', '$node3']) - set(['$myip'])): print ip" | xargs -I '{}' echo "Isolating: {}" 16 | 17 | python -c "for ip in (set(['$node1', '$node2', '$node3']) - set(['$myip'])): print ip" | xargs -I '{}' iptables -A INPUT -s '{}' -j DROP 18 | python -c "for ip in (set(['$node1', '$node2', '$node3']) - set(['$myip'])): print ip" | xargs -I '{}' iptables -A OUTPUT -d '{}' -j DROP 19 | 20 | echo "Isolated" -------------------------------------------------------------------------------- /performance/etcd/db/rejoin.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | node1=$(getent hosts node1 | awk '{ print $1 }') 6 | node2=$(getent hosts node2 | awk '{ print $1 }') 7 | node3=$(getent hosts node3 | awk '{ print $1 }') 8 | 9 | myip=$(getent hosts $(hostname) | awk '{ print $1 }') 10 | 11 | if [ -z "$node1" ] ; then exit 1 ; fi; 12 | if [ -z "$node2" ] ; then exit 1 ; fi; 13 | if [ -z "$node3" ] ; then exit 1 ; fi; 14 | 15 | python -c "for ip in (set(['$node1', '$node2', '$node3']) - set(['$myip'])): print ip" | xargs -I '{}' echo "Rejoining: {}" 16 | 17 | python -c "for ip in (set(['$node1', '$node2', '$node3']) - set(['$myip'])): print ip" | xargs -I '{}' iptables -D INPUT -s '{}' -j DROP 18 | python -c "for ip in (set(['$node1', '$node2', '$node3']) - set(['$myip'])): print ip" | xargs -I '{}' iptables -D OUTPUT -d '{}' -j DROP 19 | 20 | echo "Rejoined" -------------------------------------------------------------------------------- /performance/etcd/db/remote-tester/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | export PATH=$PATH:/usr/lib/go-1.9/bin 6 | export GOPATH=/etcd/remote-tester 7 | 8 | cd /etcd/remote-tester/src/remote 9 | go get 10 | go build 11 | go install 12 | -------------------------------------------------------------------------------- /performance/etcd/db/remote-tester/src/remote/EtcdKV.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "context" 5 | "github.com/coreos/etcd/clientv3" 6 | "time" 7 | "strings" 8 | ) 9 | 10 | var ( 11 | dialTimeout = 2 * time.Second 12 | requestTimeout = 10 * time.Second 13 | ) 14 | 15 | type EtcdKV struct { 16 | endpoint []string 17 | conn *clientv3.Client 18 | } 19 | 20 | func NewEtcdKV(endpoint string) *EtcdKV { 21 | return &EtcdKV{ endpoint: strings.Split(endpoint, ","), conn: nil }; 22 | } 23 | 24 | func (self *EtcdKV) Connect() (*clientv3.Client, error) { 25 | if self.conn != nil { 26 | return self.conn, nil 27 | } 28 | conn, err := clientv3.New(clientv3.Config{ 29 | DialTimeout: dialTimeout, 30 | Endpoints: self.endpoint, 31 | }) 32 | if (err != nil) { 33 | return nil, err 34 | } 35 | self.conn = conn 36 | return conn, nil 37 | } 38 | 39 | func (self *EtcdKV) Reset() { 40 | if self.conn == nil { 41 | return 42 | } 43 | self.conn.Close() 44 | self.conn = nil 45 | } 46 | 47 | func (self *EtcdKV) Get(key string) (*string, error) { 48 | conn, err := self.Connect() 49 | if err != nil { 50 | return nil, err 51 | } 52 | ctx, cancel := context.WithTimeout(context.Background(), requestTimeout) 53 | resp, err := conn.Get(ctx, key) 54 | cancel() 55 | if err != nil { 56 | self.Reset() 57 | return nil, err 58 | } 59 | if len(resp.Kvs) == 0 { 60 | return nil, nil 61 | } 62 | value := string(resp.Kvs[0].Value) 63 | return &value, nil 64 | } 65 | 66 | func (self *EtcdKV) Put(key string, value string) error { 67 | conn, err := self.Connect() 68 | if err != nil { 69 | return err 70 | } 71 | ctx, cancel := context.WithTimeout(context.Background(), requestTimeout) 72 | _, err = conn.Put(ctx, key, value) 73 | cancel() 74 | if err != nil { 75 | self.Reset() 76 | return err 77 | } 78 | return nil 79 | } -------------------------------------------------------------------------------- /performance/etcd/db/remote-tester/src/remote/main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "log" 5 | "os" 6 | "encoding/json" 7 | "net/http" 8 | "github.com/gorilla/mux" 9 | "strconv" 10 | "sync" 11 | ) 12 | 13 | type StatRecord struct { 14 | Success int `json:"success"` 15 | Failures int `json:"failures"` 16 | } 17 | 18 | var endpoints string 19 | 20 | var mutex = &sync.Mutex{} 21 | var info = &StatRecord{Success: 0, Failures: 0 } 22 | var active = false 23 | 24 | func main() { 25 | endpoints = os.Args[1] 26 | router := mux.NewRouter() 27 | router.HandleFunc("/stat", Stat).Methods("GET") 28 | router.HandleFunc("/init/{key}", Init).Methods("GET") 29 | log.Fatal(http.ListenAndServe(":8000", router)) 30 | } 31 | 32 | func Stat(w http.ResponseWriter, r *http.Request) { 33 | mutex.Lock() 34 | stat := StatRecord{Success: info.Success, Failures: info.Failures} 35 | info.Failures = 0 36 | info.Success = 0 37 | mutex.Unlock() 38 | 39 | json.NewEncoder(w).Encode(&stat) 40 | } 41 | 42 | func Init(w http.ResponseWriter, r *http.Request) { 43 | params := mux.Vars(r) 44 | key := params["key"] 45 | 46 | kv := NewEtcdKV(endpoints) 47 | 48 | go func() { 49 | mutex.Lock() 50 | if active { 51 | mutex.Unlock() 52 | return 53 | } else { 54 | active = true 55 | } 56 | mutex.Unlock() 57 | for { 58 | value, err := kv.Get(key) 59 | 60 | if err == nil { 61 | if value == nil { 62 | err = kv.Put(key, "0") 63 | } else { 64 | i, err := strconv.Atoi(*value) 65 | if err == nil { 66 | i += 1 67 | err = kv.Put(key, strconv.Itoa(i)) 68 | } 69 | } 70 | } 71 | 72 | mutex.Lock() 73 | if err != nil { 74 | info.Failures += 1 75 | } else { 76 | info.Success += 1 77 | } 78 | mutex.Unlock() 79 | } 80 | }() 81 | } -------------------------------------------------------------------------------- /performance/etcd/db/run-etcd.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | me=$(hostname) 4 | 5 | node1=$(getent hosts node1 | awk '{ print $1 }') 6 | node2=$(getent hosts node2 | awk '{ print $1 }') 7 | node3=$(getent hosts node3 | awk '{ print $1 }') 8 | 9 | if [ -z "$node1" ] ; then exit 1 ; fi; 10 | if [ -z "$node2" ] ; then exit 1 ; fi; 11 | if [ -z "$node3" ] ; then exit 1 ; fi; 12 | 13 | myip=$(getent hosts $me | awk '{ print $1 }') 14 | 15 | cluster="node1=http://$node1:2380,node2=http://$node2:2380,node3=http://$node3:2380" 16 | peer="http://$myip:2380" 17 | client="http://$myip:2379" 18 | 19 | /etcd/etcd-v3.2.13-linux-amd64/etcd \ 20 | --heartbeat-interval=200 \ 21 | --election-timeout=2000 \ 22 | --data-dir "/etcd/mem/$me" \ 23 | --name $me \ 24 | --initial-advertise-peer-urls $peer \ 25 | --listen-peer-urls "http://0.0.0.0:2380" \ 26 | --listen-client-urls "http://0.0.0.0:2379" \ 27 | --advertise-client-urls $client \ 28 | --initial-cluster-token etcd-cluster-1 \ 29 | --initial-cluster $cluster \ 30 | --initial-cluster-state new 2> /etcd/mem/$me.log 31 | -------------------------------------------------------------------------------- /performance/etcd/db/run-tester.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | me=$(hostname) 6 | 7 | node1=$(getent hosts node1 | awk '{ print $1 }') 8 | node2=$(getent hosts node2 | awk '{ print $1 }') 9 | node3=$(getent hosts node3 | awk '{ print $1 }') 10 | 11 | if [ -z "$node1" ] ; then exit 1 ; fi; 12 | if [ -z "$node2" ] ; then exit 1 ; fi; 13 | if [ -z "$node3" ] ; then exit 1 ; fi; 14 | 15 | /etcd/remote-tester/bin/remote "http://$me:2379" 16 | -------------------------------------------------------------------------------- /performance/etcd/docker-compose.yaml: -------------------------------------------------------------------------------- 1 | version: '3.5' 2 | services: 3 | etcd1: 4 | build: db 5 | privileged: true 6 | container_name: node1 7 | hostname: node1 8 | tmpfs: /etcd/mem 9 | networks: 10 | - perseus 11 | etcd2: 12 | build: db 13 | privileged: true 14 | container_name: node2 15 | hostname: node2 16 | tmpfs: /etcd/mem 17 | networks: 18 | - perseus 19 | etcd3: 20 | build: db 21 | privileged: true 22 | container_name: node3 23 | hostname: node3 24 | tmpfs: /etcd/mem 25 | networks: 26 | - perseus 27 | networks: 28 | perseus: 29 | driver: bridge 30 | name: perseus -------------------------------------------------------------------------------- /performance/etcd/isolate.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "# isolating $1" >> logs/client1.log 4 | docker exec $1 /etcd/isolate.sh 5 | echo "# isolated $1" >> logs/client1.log 6 | -------------------------------------------------------------------------------- /performance/etcd/rejoin.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "# rejoining $1" >> logs/client1.log 4 | docker exec $1 /etcd/rejoin.sh 5 | echo "# rejoined $1" >> logs/client1.log 6 | -------------------------------------------------------------------------------- /performance/gryadka/db/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:17.10 2 | LABEL maintainer="Denis Rystsov " 3 | RUN apt-get update -y 4 | RUN apt-get install -y wget supervisor iptables 5 | RUN apt-get install -y iputils-ping vim tmux less curl 6 | RUN apt-get install -y redis-server 7 | RUN /bin/bash -c "curl -sL https://deb.nodesource.com/setup_8.x | bash -" 8 | RUN apt-get install -y nodejs 9 | RUN mkdir -p /gryadka 10 | WORKDIR /gryadka 11 | COPY isolate.sh /gryadka/isolate.sh 12 | COPY rejoin.sh /gryadka/rejoin.sh 13 | COPY redis.conf /gryadka/redis.conf 14 | COPY run-redis.sh /gryadka/run-redis.sh 15 | COPY remote-tester /gryadka/remote-tester 16 | WORKDIR /gryadka/remote-tester 17 | RUN npm install 18 | WORKDIR /gryadka 19 | COPY cluster.json /gryadka/cluster.json 20 | COPY run-gryadka.sh /gryadka/run-gryadka.sh 21 | COPY gryadka.conf /etc/supervisor/conf.d/gryadka.conf 22 | CMD /usr/bin/supervisord -n 23 | -------------------------------------------------------------------------------- /performance/gryadka/db/cluster.json: -------------------------------------------------------------------------------- 1 | { 2 | "acceptors": { 3 | "a1": { 4 | "storage": { 5 | "host": "node1", 6 | "port": 6379 7 | }, 8 | "accept": "e043ab55a3cdac18d24b3d28e2b456bfc44471ac", 9 | "prepare": "c134f76217e439e3bd09e68b4a13984a5ece6d3d", 10 | "isTransient": false 11 | }, 12 | "a2": { 13 | "storage": { 14 | "host": "node2", 15 | "port": 6379 16 | }, 17 | "accept": "e043ab55a3cdac18d24b3d28e2b456bfc44471ac", 18 | "prepare": "c134f76217e439e3bd09e68b4a13984a5ece6d3d", 19 | "isTransient": false 20 | }, 21 | "a3": { 22 | "storage": { 23 | "host": "node3", 24 | "port": 6379 25 | }, 26 | "accept": "e043ab55a3cdac18d24b3d28e2b456bfc44471ac", 27 | "prepare": "c134f76217e439e3bd09e68b4a13984a5ece6d3d", 28 | "isTransient": false 29 | } 30 | }, 31 | "proposers": { 32 | "node1": { 33 | "id": 0, 34 | "port": 2379, 35 | "acceptors": ["a1", "a2", "a3"], 36 | "quorum": { "read": 2, "write": 2 } 37 | }, 38 | "node2": { 39 | "id": 1, 40 | "port": 2379, 41 | "acceptors": ["a1", "a2", "a3"], 42 | "quorum": { "read": 2, "write": 2 } 43 | }, 44 | "node3": { 45 | "id": 2, 46 | "port": 2379, 47 | "acceptors": ["a1", "a2", "a3"], 48 | "quorum": { "read": 2, "write": 2 } 49 | } 50 | } 51 | } -------------------------------------------------------------------------------- /performance/gryadka/db/gryadka.conf: -------------------------------------------------------------------------------- 1 | [program:redis] 2 | command=/bin/bash /gryadka/run-redis.sh 3 | autorestart=true 4 | startretries=10 5 | 6 | [program:gryadka] 7 | command=/bin/bash /gryadka/run-gryadka.sh 8 | autorestart=true 9 | startretries=10 -------------------------------------------------------------------------------- /performance/gryadka/db/isolate.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | node1=$(getent hosts node1 | awk '{ print $1 }') 6 | node2=$(getent hosts node2 | awk '{ print $1 }') 7 | node3=$(getent hosts node3 | awk '{ print $1 }') 8 | 9 | myip=$(getent hosts $(hostname) | awk '{ print $1 }') 10 | 11 | if [ -z "$node1" ] ; then exit 1 ; fi; 12 | if [ -z "$node2" ] ; then exit 1 ; fi; 13 | if [ -z "$node3" ] ; then exit 1 ; fi; 14 | 15 | python -c "for ip in (set(['$node1', '$node2', '$node3']) - set(['$myip'])): print ip" | xargs -I '{}' echo "Isolating: {}" 16 | 17 | python -c "for ip in (set(['$node1', '$node2', '$node3']) - set(['$myip'])): print ip" | xargs -I '{}' iptables -A INPUT -s '{}' -j DROP 18 | python -c "for ip in (set(['$node1', '$node2', '$node3']) - set(['$myip'])): print ip" | xargs -I '{}' iptables -A OUTPUT -d '{}' -j DROP 19 | 20 | echo "Isolated" -------------------------------------------------------------------------------- /performance/gryadka/db/rejoin.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | node1=$(getent hosts node1 | awk '{ print $1 }') 6 | node2=$(getent hosts node2 | awk '{ print $1 }') 7 | node3=$(getent hosts node3 | awk '{ print $1 }') 8 | 9 | myip=$(getent hosts $(hostname) | awk '{ print $1 }') 10 | 11 | if [ -z "$node1" ] ; then exit 1 ; fi; 12 | if [ -z "$node2" ] ; then exit 1 ; fi; 13 | if [ -z "$node3" ] ; then exit 1 ; fi; 14 | 15 | python -c "for ip in (set(['$node1', '$node2', '$node3']) - set(['$myip'])): print ip" | xargs -I '{}' echo "Rejoining: {}" 16 | 17 | python -c "for ip in (set(['$node1', '$node2', '$node3']) - set(['$myip'])): print ip" | xargs -I '{}' iptables -D INPUT -s '{}' -j DROP 18 | python -c "for ip in (set(['$node1', '$node2', '$node3']) - set(['$myip'])): print ip" | xargs -I '{}' iptables -D OUTPUT -d '{}' -j DROP 19 | 20 | echo "Rejoined" -------------------------------------------------------------------------------- /performance/gryadka/db/remote-tester/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "perseus-gryadka", 3 | "version": "1.0.0", 4 | "description": "Perseus is a set of scripts to test how Gryadka behaves when a leader is separated from the peer but maintain connection to the clients", 5 | "main": "index.js", 6 | "dependencies": { 7 | "express": "4.14.0", 8 | "body-parser": "1.15.2", 9 | "gryadka": "1.61.8", 10 | "moment": "2.20.1" 11 | }, 12 | "scripts": { 13 | "test": "echo \"Error: no test specified\" && exit 1" 14 | }, 15 | "repository": { 16 | "type": "git", 17 | "url": "https://github.com/rystsov/perseus.git" 18 | }, 19 | "keywords": [ 20 | "gryadka", 21 | "raft" 22 | ], 23 | "author": "Denis Rystsov", 24 | "license": "MIT", 25 | "bugs": { 26 | "url": "https://github.com/rystsov/perseus/issues" 27 | }, 28 | "homepage": "https://github.com/rystsov/perseus" 29 | } 30 | -------------------------------------------------------------------------------- /performance/gryadka/db/remote-tester/src/GryadkaKV.js: -------------------------------------------------------------------------------- 1 | const {Cache, AcceptorClient, Proposer} = require("gryadka"); 2 | 3 | class KeyAlreadyExistsError { 4 | constructor() { 5 | this.core = this; 6 | this.isKeyAlreadyExistsError = true; 7 | } 8 | append() { return this; } 9 | } 10 | 11 | function init(value) { 12 | return function(state) { 13 | if (state == null) { 14 | return [value, null]; 15 | } else { 16 | return [state, new KeyAlreadyExistsError()] 17 | } 18 | } 19 | } 20 | 21 | function overwrite(value) { 22 | return function(state) { 23 | return [value, null]; 24 | } 25 | } 26 | 27 | class GryadkaKV { 28 | constructor(settings) { 29 | this.cache = new Cache(settings.id); 30 | this.acceptors = settings.acceptors.map(x => new AcceptorClient(x)); 31 | this.proposer = new Proposer(this.cache, this.acceptors, settings.quorum); 32 | } 33 | 34 | async read(key) { 35 | const status = await this.proposer.changeQuery(key, x=>[x, null], x=>x, null); 36 | if (status.status == "OK") { 37 | const value = status.details; 38 | if (value == null) { 39 | return null; 40 | } else { 41 | return value 42 | } 43 | } else { 44 | throw new Error(status); 45 | } 46 | } 47 | 48 | async create(key, val) { 49 | const status = await this.proposer.changeQuery(key, init(val), x=>x, null); 50 | if (status.status == "OK") { 51 | return true; 52 | } else { 53 | throw new Error(status); 54 | } 55 | } 56 | 57 | async update(key, val) { 58 | const status = await this.proposer.changeQuery(key, overwrite(val), x=>x, null); 59 | if (status.status == "OK") { 60 | return true; 61 | } else { 62 | throw new Error(status); 63 | } 64 | } 65 | 66 | start() { 67 | this.acceptors.forEach(x => x.start()); 68 | } 69 | 70 | stop() { 71 | this.acceptors.forEach(x => x.close()); 72 | } 73 | } 74 | 75 | exports.GryadkaKV = GryadkaKV; -------------------------------------------------------------------------------- /performance/gryadka/db/remote-tester/src/RemoteTesterServer.js: -------------------------------------------------------------------------------- 1 | const express = require("express"); 2 | const bodyParser = require("body-parser"); 3 | const moment = require("moment"); 4 | 5 | class RemoteTesterServer { 6 | constructor(kv, port) { 7 | this.kv = kv; 8 | this.gen = 0; 9 | this.active = false; 10 | this.info = { 11 | success: 0, 12 | failures: 0 13 | }; 14 | this.port = port; 15 | this.app = express(); 16 | this.app.use(bodyParser.urlencoded({ extended: true })); 17 | const router = express.Router(); 18 | 19 | router.route("/init/:key").get((req, res) => { 20 | this.init(req, res); 21 | }); 22 | router.route("/stat").get((req, res) => { 23 | this.stat(req, res); 24 | }); 25 | 26 | this.app.use('/', router); 27 | } 28 | 29 | init(req, res) { 30 | if (this.active) { 31 | res.sendStatus(200); 32 | return; 33 | } 34 | this.active = true; 35 | const key = req.params.key; 36 | console.info("START: " + key); 37 | (async () => { 38 | res.sendStatus(200); 39 | while (true) { 40 | const id = this.gen++; 41 | try { 42 | let value = await this.kv.read(key); 43 | if (value==null) { 44 | await this.kv.create(key, "0"); 45 | } else { 46 | await this.kv.update(key, parseInt(value) + 1); 47 | } 48 | this.info.success++; 49 | } catch (e) { 50 | this.info.failures++; 51 | console.info(e); 52 | } 53 | } 54 | })(); 55 | } 56 | 57 | stat(req, res) { 58 | const info = this.info; 59 | this.info = { 60 | success: 0, 61 | failures: 0 62 | }; 63 | res.status(200).json(info); 64 | } 65 | 66 | start() { 67 | this.server = this.app.listen(this.port); 68 | } 69 | 70 | stop() { 71 | this.server.close(); 72 | } 73 | } 74 | 75 | exports.RemoteTesterServer = RemoteTesterServer; 76 | -------------------------------------------------------------------------------- /performance/gryadka/db/remote-tester/src/start.js: -------------------------------------------------------------------------------- 1 | const {GryadkaKV} = require("./GryadkaKV"); 2 | const {RemoteTesterServer} = require("./RemoteTesterServer"); 3 | 4 | const fs = require("fs"); 5 | 6 | const cluster = JSON.parse(fs.readFileSync(process.argv[2])); 7 | const proposerId = process.argv[3]; 8 | 9 | const proposer = cluster.proposers[proposerId]; 10 | const settings = { 11 | id: proposer.id, 12 | port: proposer.port, 13 | quorum: proposer.quorum, 14 | acceptors: proposer.acceptors.map(aid => { 15 | return cluster.acceptors[aid]; 16 | }) 17 | }; 18 | 19 | console.info(settings); 20 | 21 | const kv = new GryadkaKV(settings); 22 | kv.start(); 23 | 24 | const service = new RemoteTesterServer( 25 | kv, 26 | 8000 27 | ); 28 | service.start(); 29 | -------------------------------------------------------------------------------- /performance/gryadka/db/run-gryadka.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | redis-cli -h 127.0.0.1 -p 6379 SCRIPT LOAD "$(cat /gryadka/remote-tester/node_modules/gryadka/src/lua/accept.lua)" > /gryadka/accept.hash 6 | redis-cli -h 127.0.0.1 -p 6379 SCRIPT LOAD "$(cat /gryadka/remote-tester/node_modules/gryadka/src/lua/prepare.lua)" > /gryadka/prepare.hash 7 | 8 | me=$(hostname) 9 | 10 | nodejs /gryadka/remote-tester/src/start.js "/gryadka/cluster.json" $me > /gryadka/mem/$me.api.log 11 | -------------------------------------------------------------------------------- /performance/gryadka/db/run-redis.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | me=$(hostname) 4 | 5 | redis-server /gryadka/redis.conf > /gryadka/mem/$me.redis.log 6 | -------------------------------------------------------------------------------- /performance/gryadka/docker-compose.yaml: -------------------------------------------------------------------------------- 1 | version: '3.5' 2 | services: 3 | gryadka1: 4 | build: db 5 | privileged: true 6 | container_name: node1 7 | hostname: node1 8 | tmpfs: /gryadka/mem 9 | networks: 10 | - perseus 11 | gryadka2: 12 | build: db 13 | privileged: true 14 | container_name: node2 15 | hostname: node2 16 | tmpfs: /gryadka/mem 17 | networks: 18 | - perseus 19 | gryadka3: 20 | build: db 21 | privileged: true 22 | container_name: node3 23 | hostname: node3 24 | tmpfs: /gryadka/mem 25 | networks: 26 | - perseus 27 | networks: 28 | perseus: 29 | driver: bridge 30 | name: perseus -------------------------------------------------------------------------------- /performance/gryadka/isolate.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "# isolating $1" >> logs/client1.log 4 | docker exec $1 /gryadka/isolate.sh 5 | echo "# isolated $1" >> logs/client1.log 6 | -------------------------------------------------------------------------------- /performance/gryadka/rejoin.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "# rejoining $1" >> logs/client1.log 4 | docker exec $1 /gryadka/rejoin.sh 5 | echo "# rejoined $1" >> logs/client1.log 6 | -------------------------------------------------------------------------------- /performance/mongodb/db/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:17.10 2 | LABEL maintainer="Denis Rystsov " 3 | RUN apt-get update -y 4 | RUN apt-get install -y wget supervisor iptables gdb 5 | RUN apt-get install -y iputils-ping vim tmux less curl 6 | RUN /bin/bash -c "curl -sL https://deb.nodesource.com/setup_8.x | bash -" 7 | RUN apt-get install -y nodejs 8 | RUN mkdir -p /mongo 9 | WORKDIR /mongo 10 | RUN wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.1.tgz 11 | RUN tar -xzvf mongodb-linux-x86_64-3.6.1.tgz 12 | RUN rm mongodb-linux-x86_64-3.6.1.tgz 13 | COPY run-mongo.sh /mongo/run-mongo.sh 14 | COPY run-tester.sh /mongo/run-tester.sh 15 | COPY topology /mongo/topology 16 | COPY isolate.sh /mongo/isolate.sh 17 | COPY rejoin.sh /mongo/rejoin.sh 18 | COPY mongo.conf /etc/supervisor/conf.d/mongo.conf 19 | COPY remote-tester /mongo/remote-tester 20 | WORKDIR /mongo/remote-tester 21 | RUN npm install 22 | WORKDIR /mongo 23 | CMD /usr/bin/supervisord -n -------------------------------------------------------------------------------- /performance/mongodb/db/isolate.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | node1=$(getent hosts node1 | awk '{ print $1 }') 6 | node2=$(getent hosts node2 | awk '{ print $1 }') 7 | node3=$(getent hosts node3 | awk '{ print $1 }') 8 | 9 | myip=$(getent hosts $(hostname) | awk '{ print $1 }') 10 | 11 | if [ -z "$node1" ] ; then exit 1 ; fi; 12 | if [ -z "$node2" ] ; then exit 1 ; fi; 13 | if [ -z "$node3" ] ; then exit 1 ; fi; 14 | 15 | python -c "for ip in (set(['$node1', '$node2', '$node3']) - set(['$myip'])): print ip" | xargs -I '{}' echo "Isolating: {}" 16 | 17 | python -c "for ip in (set(['$node1', '$node2', '$node3']) - set(['$myip'])): print ip" | xargs -I '{}' iptables -A INPUT -s '{}' -j DROP 18 | python -c "for ip in (set(['$node1', '$node2', '$node3']) - set(['$myip'])): print ip" | xargs -I '{}' iptables -A OUTPUT -d '{}' -j DROP 19 | 20 | echo "Isolated" -------------------------------------------------------------------------------- /performance/mongodb/db/mongo.conf: -------------------------------------------------------------------------------- 1 | [program:mongodb] 2 | command=/bin/bash /mongo/run-mongo.sh 3 | autorestart=true 4 | startretries=10 5 | 6 | [program:api] 7 | command=/bin/bash /mongo/run-tester.sh 8 | autorestart=true 9 | startretries=10 -------------------------------------------------------------------------------- /performance/mongodb/db/rejoin.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | node1=$(getent hosts node1 | awk '{ print $1 }') 6 | node2=$(getent hosts node2 | awk '{ print $1 }') 7 | node3=$(getent hosts node3 | awk '{ print $1 }') 8 | 9 | myip=$(getent hosts $(hostname) | awk '{ print $1 }') 10 | 11 | if [ -z "$node1" ] ; then exit 1 ; fi; 12 | if [ -z "$node2" ] ; then exit 1 ; fi; 13 | if [ -z "$node3" ] ; then exit 1 ; fi; 14 | 15 | python -c "for ip in (set(['$node1', '$node2', '$node3']) - set(['$myip'])): print ip" | xargs -I '{}' echo "Rejoining: {}" 16 | 17 | python -c "for ip in (set(['$node1', '$node2', '$node3']) - set(['$myip'])): print ip" | xargs -I '{}' iptables -D INPUT -s '{}' -j DROP 18 | python -c "for ip in (set(['$node1', '$node2', '$node3']) - set(['$myip'])): print ip" | xargs -I '{}' iptables -D OUTPUT -d '{}' -j DROP 19 | 20 | echo "Rejoined" -------------------------------------------------------------------------------- /performance/mongodb/db/remote-tester/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "perseus-mongodb", 3 | "version": "1.0.0", 4 | "description": "Perseus is a set of scripts to test how Gryadka behaves when a leader is separated from the peer but maintain connection to the clients", 5 | "main": "index.js", 6 | "dependencies": { 7 | "express": "4.14.0", 8 | "body-parser": "1.15.2", 9 | "mongodb": "3.0.1", 10 | "moment": "2.20.1" 11 | }, 12 | "scripts": { 13 | "test": "echo \"Error: no test specified\" && exit 1" 14 | }, 15 | "repository": { 16 | "type": "git", 17 | "url": "https://github.com/rystsov/perseus.git" 18 | }, 19 | "keywords": [ 20 | "gryadka", 21 | "raft" 22 | ], 23 | "author": "Denis Rystsov", 24 | "license": "MIT", 25 | "bugs": { 26 | "url": "https://github.com/rystsov/perseus/issues" 27 | }, 28 | "homepage": "https://github.com/rystsov/perseus" 29 | } 30 | -------------------------------------------------------------------------------- /performance/mongodb/db/remote-tester/src/MongoKV.js: -------------------------------------------------------------------------------- 1 | const moment = require("moment"); 2 | const MongoClient = require('mongodb').MongoClient; 3 | 4 | class MongoKV { 5 | constructor(url) { 6 | this.url = url; 7 | this.client = null; 8 | } 9 | async read(key) { 10 | try { 11 | const client = await this.connect(); 12 | const db = client.db("lily"); 13 | const collection = db.collection("storage"); 14 | 15 | const data = await collection.find( 16 | {"key": key}, 17 | { readConcern: { level: "linearizable" } } 18 | ).toArray(); 19 | if (data.length==0) { 20 | return null; 21 | } else { 22 | return data[0].val; 23 | } 24 | } catch (e) { 25 | this.reset(); 26 | throw e; 27 | } 28 | } 29 | async create(key, val) { 30 | try { 31 | const client = await this.connect(); 32 | const db = client.db("lily"); 33 | const collection = db.collection("storage"); 34 | 35 | await collection.insertOne({ 36 | "key": key, 37 | "val": val 38 | }, { writeConcern: { w: "majority" } }); 39 | } catch (e) { 40 | this.reset(); 41 | throw e; 42 | } 43 | } 44 | async update(key, val) { 45 | try { 46 | const client = await this.connect(); 47 | const db = client.db("lily"); 48 | const collection = db.collection("storage"); 49 | 50 | await collection.updateOne( 51 | {"key": key}, {$set: {"val": val}}, 52 | { writeConcern: { w: "majority" } } 53 | ); 54 | } catch (e) { 55 | this.reset(); 56 | throw e; 57 | } 58 | } 59 | 60 | connect() { 61 | return new Promise((respond, reject) => { 62 | if (this.client != null) { 63 | respond(this.client); 64 | } else { 65 | MongoClient.connect(this.url, { 66 | db: { bufferMaxEntries: 0 } 67 | }, (err, client) => { 68 | if (err) { 69 | reject(err); 70 | } else { 71 | this.client = client; 72 | respond(this.client); 73 | } 74 | }); 75 | } 76 | }); 77 | } 78 | 79 | reset() { 80 | if (this.client != null) { 81 | try { this.client.close(); } catch(e) { } 82 | this.client = null; 83 | } 84 | } 85 | } 86 | 87 | exports.MongoKV = MongoKV; -------------------------------------------------------------------------------- /performance/mongodb/db/remote-tester/src/RemoteTesterServer.js: -------------------------------------------------------------------------------- 1 | const express = require("express"); 2 | const bodyParser = require("body-parser"); 3 | const moment = require("moment"); 4 | 5 | class RemoteTesterServer { 6 | constructor(kv, port) { 7 | this.kv = kv; 8 | this.gen = 0; 9 | this.active = false; 10 | this.info = { 11 | success: 0, 12 | failures: 0 13 | }; 14 | this.port = port; 15 | this.app = express(); 16 | this.app.use(bodyParser.urlencoded({ extended: true })); 17 | const router = express.Router(); 18 | 19 | router.route("/init/:key").get((req, res) => { 20 | this.init(req, res); 21 | }); 22 | router.route("/stat").get((req, res) => { 23 | this.stat(req, res); 24 | }); 25 | 26 | this.app.use('/', router); 27 | } 28 | 29 | init(req, res) { 30 | if (this.active) { 31 | res.sendStatus(200); 32 | return; 33 | } 34 | this.active = true; 35 | const key = req.params.key; 36 | (async () => { 37 | res.sendStatus(200); 38 | while (true) { 39 | const id = this.gen++; 40 | try { 41 | let value = await this.kv.read(key); 42 | if (value==null) { 43 | await this.kv.create(key, "0"); 44 | } else { 45 | await this.kv.update(key, parseInt(value) + 1); 46 | } 47 | this.info.success++; 48 | } catch (e) { 49 | console.info(e); 50 | this.info.failures++; 51 | } 52 | } 53 | })(); 54 | } 55 | 56 | stat(req, res) { 57 | const info = this.info; 58 | this.info = { 59 | success: 0, 60 | failures: 0 61 | }; 62 | res.status(200).json(info); 63 | } 64 | 65 | start() { 66 | this.server = this.app.listen(this.port); 67 | } 68 | 69 | close() { 70 | this.server.close(); 71 | } 72 | } 73 | 74 | exports.RemoteTesterServer = RemoteTesterServer; 75 | -------------------------------------------------------------------------------- /performance/mongodb/db/remote-tester/src/start.js: -------------------------------------------------------------------------------- 1 | const {MongoKV} = require("./MongoKV"); 2 | const {RemoteTesterServer} = require("./RemoteTesterServer"); 3 | 4 | const service = new RemoteTesterServer( 5 | new MongoKV("mongodb://node1,node2,node3/?replicaSet=rs0&autoReconnect=false&socketTimeoutMS=10000&connectTimeoutMS=10000"), 6 | 8000 7 | ); 8 | service.start(); 9 | -------------------------------------------------------------------------------- /performance/mongodb/db/run-mongo.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | me=$(hostname) 6 | 7 | node1=$(getent hosts node1 | awk '{ print $1 }') 8 | node2=$(getent hosts node2 | awk '{ print $1 }') 9 | node3=$(getent hosts node3 | awk '{ print $1 }') 10 | 11 | if [ -z "$node1" ] ; then exit 1 ; fi; 12 | if [ -z "$node2" ] ; then exit 1 ; fi; 13 | if [ -z "$node3" ] ; then exit 1 ; fi; 14 | 15 | /mongo/mongodb-linux-x86_64-3.6.1/bin/mongod --dbpath /mongo/mem --replSet rs0 --port 27017 --bind_ip 0.0.0.0 >> /mongo/mem/$me.log -------------------------------------------------------------------------------- /performance/mongodb/db/run-tester.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | me=$(hostname) 6 | 7 | node1=$(getent hosts node1 | awk '{ print $1 }') 8 | node2=$(getent hosts node2 | awk '{ print $1 }') 9 | node3=$(getent hosts node3 | awk '{ print $1 }') 10 | 11 | if [ -z "$node1" ] ; then exit 1 ; fi; 12 | if [ -z "$node2" ] ; then exit 1 ; fi; 13 | if [ -z "$node3" ] ; then exit 1 ; fi; 14 | 15 | /mongo/mongodb-linux-x86_64-3.6.1/bin/mongo --host node1 < /mongo/topology 16 | 17 | nodejs /mongo/remote-tester/src/start.js > /mongo/mem/$me.tester.log 18 | -------------------------------------------------------------------------------- /performance/mongodb/db/topology: -------------------------------------------------------------------------------- 1 | rs.initiate( { 2 | _id : "rs0", 3 | members: [ 4 | { _id: 0, host: "node1:27017" }, 5 | { _id: 1, host: "node2:27017" }, 6 | { _id: 2, host: "node3:27017" } 7 | ] 8 | }); -------------------------------------------------------------------------------- /performance/mongodb/docker-compose.yaml: -------------------------------------------------------------------------------- 1 | version: '3.5' 2 | services: 3 | mongo1: 4 | build: db 5 | privileged: true 6 | container_name: node1 7 | hostname: node1 8 | tmpfs: /mongo/mem 9 | networks: 10 | - perseus 11 | mongo2: 12 | build: db 13 | privileged: true 14 | container_name: node2 15 | hostname: node2 16 | tmpfs: /mongo/mem 17 | networks: 18 | - perseus 19 | mongo3: 20 | build: db 21 | privileged: true 22 | container_name: node3 23 | hostname: node3 24 | tmpfs: /mongo/mem 25 | networks: 26 | - perseus 27 | networks: 28 | perseus: 29 | driver: bridge 30 | name: perseus -------------------------------------------------------------------------------- /performance/mongodb/isolate.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "# isolating $1" >> logs/client1.log 4 | docker exec $1 /mongo/isolate.sh 5 | echo "# isolated $1" >> logs/client1.log 6 | -------------------------------------------------------------------------------- /performance/mongodb/rejoin.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "# rejoining $1" >> logs/client1.log 4 | docker exec $1 /mongo/rejoin.sh 5 | echo "# rejoined $1" >> logs/client1.log 6 | --------------------------------------------------------------------------------