From 53aeec8c67e953f64b07fe14231a58bea4024b6a Mon Sep 17 00:00:00 2001 From: rubberhead Date: Sun, 10 Mar 2024 18:57:39 +0000 Subject: [PATCH] Sync + Added gnuplot for redis --- src/redis/data.dat | 5 +++++ src/redis/plot.pdf | Bin 0 -> 11476 bytes src/redis/plot.png | Bin 0 -> 37966 bytes src/redis/redis-setget.plt | 31 +++++++++++++++++++++++++++++++ tex/misc/background_draft.tex | 2 ++ 5 files changed, 38 insertions(+) create mode 100644 src/redis/data.dat create mode 100644 src/redis/plot.pdf create mode 100644 src/redis/plot.png create mode 100644 src/redis/redis-setget.plt diff --git a/src/redis/data.dat b/src/redis/data.dat new file mode 100644 index 0000000..2063d47 --- /dev/null +++ b/src/redis/data.dat @@ -0,0 +1,5 @@ +# Averages of redis-bench vs. uprobe latencies probed via bcc tools. Unit: microseconds. +# 2 3 4 5 6 7 8 +# Total latency connSocketEventHandler processCommand [sg]etCommand beforeSleep _writeToClient afterSleep +SET 571 10 8 6 28 13 6 +GET 508 10 8 6 23 15 7 diff --git a/src/redis/plot.pdf b/src/redis/plot.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3396138478b760c8023db282cc2721276f121bd6 GIT binary patch literal 11476 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 literal 0 HcmV?d00001 diff --git a/src/redis/plot.png b/src/redis/plot.png new file mode 100644 index 0000000000000000000000000000000000000000..dda66f057d67f1e7139002d81aaf1f968ea7b825 GIT binary patch literal 37966 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 DmV<%_ literal 0 HcmV?d00001 diff --git a/src/redis/redis-setget.plt b/src/redis/redis-setget.plt new file mode 100644 index 0000000..4afc39a --- /dev/null +++ b/src/redis/redis-setget.plt @@ -0,0 +1,31 @@ +# Too tired to write any script, +# just gonna do a gnuplot instead. +set terminal pdfcairo size 4in, 6in +set output "plot.pdf" + +set style data histograms +set style histogram rowstacked +set style fill solid 0.2 border -1 +set key above noenhanced +set boxwidth 0.66 + +set autoscale # Scale axes automatically + +set xtics auto +set yrange [0:100] +set xlabel "Commands" +set ylabel "Percentage of Average Latency (%)" + +set title \ + "Redis: -O2; SET|GET; 2x KVM; virtio NIC; Preemptive" \ + noenhanced + +plot "data.dat" \ + using ($8 / $2 * 100):xtic(1) title 'afterSleep', \ + "" using (($6 - $7) / $2 * 100) title 'beforeSleep', \ + "" using ($7 / $2 * 100) title '_writeToClient', \ + "" using (($2 - $3 - $6 - $8) / $2 * 100) \ + title '' lc rgb "#8F8F8F", \ + "" using (($3 - $4) / $2 * 100) title 'connSocketEventHandler', \ + "" using (($4 - $5) / $2 * 100) title 'processCommand', \ + "" using ($5 / $2 * 100) title '[sg]etCommand' diff --git a/tex/misc/background_draft.tex b/tex/misc/background_draft.tex index 73e1204..4a86dba 100644 --- a/tex/misc/background_draft.tex +++ b/tex/misc/background_draft.tex @@ -533,6 +533,8 @@ to its performance benefits (e.g., in terms of coherence costs consistency models, sometimes due to improved productivity offered to programmers \cite{Kim_etal.DeX-upon-Linux.2020}. +% Probably include a table here? + We especially note the role of balancing productivity and performance in terms of selecting the ideal consistency model for a system. It is common knowledge that weaker consistency models are harder to program with, at the benefit of