diff --git a/Dockerfile b/Dockerfile index d82d211..389ae96 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,6 +7,9 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ texlive-latex-base \ texlive-latex-recommended \ texlive-fonts-recommended \ + texlive-pictures \ + texlive-latex-extra \ + lmodern \ && rm -rf /var/lib/apt/lists/* ENV RENV_CONFIG_REPOS_OVERRIDE=https://packagemanager.posit.co/cran/__linux__/jammy/latest \ @@ -16,12 +19,14 @@ COPY figures/renv.lock /tmp/figures/renv.lock RUN R -e 'install.packages("renv"); setwd("/tmp/figures"); renv::restore(prompt = FALSE)' && rm -rf /tmp/figures ADD https://astral.sh/uv/install.sh /uv-installer.sh -RUN sh /uv-installer.sh && rm /uv-installer.sh +RUN UV_INSTALL_DIR=/usr/local/bin sh /uv-installer.sh && rm /uv-installer.sh ENV UV_PROJECT_ENVIRONMENT=/opt/venv \ - PATH=/opt/venv/bin:/root/.local/bin:$PATH + UV_PYTHON_INSTALL_DIR=/opt/uv-python \ + PATH=/opt/venv/bin:$PATH COPY analysis/pyproject.toml analysis/uv.lock /tmp/analysis/ -RUN cd /tmp/analysis && uv sync --frozen --no-install-project && rm -rf /tmp/analysis +RUN cd /tmp/analysis && uv sync --frozen --no-install-project && rm -rf /tmp/analysis \ + && chmod -R o+rX /opt/venv /opt/uv-python WORKDIR /work/eval diff --git a/Makefile b/Makefile index fced13b..2e5a299 100644 --- a/Makefile +++ b/Makefile @@ -9,7 +9,7 @@ export RAW_DATA_ROOT .PHONY: all figures tikz values derive sanity clean -all: figures values +all: figures tikz values figures: $(MAKE) -C figures figures diff --git a/compose.yml b/compose.yml index 84fb20a..56c7e10 100644 --- a/compose.yml +++ b/compose.yml @@ -12,7 +12,7 @@ services: user: "${UID:-1000}:${GID:-1000}" volumes: - .:/work/eval - - ${RAW_DATA_ROOT:-../raw_data}:/raw_data:ro + - ${RAW_DATA_ROOT:-./raw_data}:/raw_data:ro environment: RAW_DATA_ROOT: /raw_data HOME: /tmp diff --git a/figures/Makefile b/figures/Makefile index 44143be..7a6fc53 100644 --- a/figures/Makefile +++ b/figures/Makefile @@ -13,16 +13,19 @@ FIG_HEIGHT ?= 2.0 FIG_FONTSIZE ?= 9 export FIG_WIDTH FIG_HEIGHT FIG_FONTSIZE -THROUGHPUT_SIZE_ARGS ?= -RTT_SIZE_ARGS ?= -THROUGHPUT_ARGS ?= -RTT_ARGS ?= -THROUGHPUT_ZOOM_ARGS ?= --ymin 3.5 --ymax 4.0 --ystep 0.1 -RTT_ZOOM_ARGS ?= --ymin 4 --ymax 14 --ystep 2 -SENDER_CPU_ARGS ?= -RECEIVER_CPU_ARGS ?= -TIMESERIES_ARGS ?= -IDT_CDF_ARGS ?= +THROUGHPUT_SIZE_ARGS ?= +RTT_SIZE_ARGS ?= +SENDER_CPU_SIZE_ARGS ?= +RECEIVER_CPU_SIZE_ARGS ?= +SLOWSTART_SIZE_ARGS ?= --width 2.7 --height 1.5 +THROUGHPUT_ARGS ?= +RTT_ARGS ?= +THROUGHPUT_ZOOM_ARGS ?= --ymin 3.5 --ymax 4.0 --ystep 0.1 +RTT_ZOOM_ARGS ?= --ymin 4 --ymax 14 --ystep 2 +SENDER_CPU_ARGS ?= +RECEIVER_CPU_ARGS ?= +TIMESERIES_ARGS ?= +IDT_CDF_ARGS ?= ROOT := .. RAW_DATA_ROOT ?= $(ROOT)/../raw_data @@ -38,7 +41,7 @@ CSVS := $(addprefix $(DERIVED)/, runs.csv rtts.csv idts.csv firstflow_bin PDFS := $(addprefix $(OUT)/, $(addsuffix .pdf, $(FIG_STEMS))) TEXS := $(addprefix $(OUT)/, $(addsuffix .tex, $(FIG_STEMS))) -.PHONY: all derive figures tikz sanity values pdfs tex clean datacenter-fq datacenter-fq-tikz direct-link direct-link-tikz all-experiments all-experiments-tikz +.PHONY: all derive figures tikz sanity values pdfs tex clean datacenter-fq datacenter-fq-tikz direct-link direct-link-tikz slowstart slowstart-tikz all-experiments all-experiments-tikz .DELETE_ON_ERROR: all: all-experiments @@ -80,11 +83,11 @@ $(OUT)/rtt_zoom.pdf $(OUT)/rtt_zoom.tex: fig_rtt.R common.R $(CSVS) Makefile $(OUT)/sender_cpu.pdf $(OUT)/sender_cpu.tex: fig_sender_cpu.R common.R $(CSVS) Makefile @mkdir -p $(OUT) - Rscript $< --data $(DERIVED) $(FMT_FLAG) $@ $(SENDER_CPU_ARGS) + Rscript $< --data $(DERIVED) $(FMT_FLAG) $@ $(SENDER_CPU_SIZE_ARGS) $(SENDER_CPU_ARGS) $(OUT)/receiver_cpu.pdf $(OUT)/receiver_cpu.tex: fig_receiver_cpu.R common.R $(CSVS) Makefile @mkdir -p $(OUT) - Rscript $< --data $(DERIVED) $(FMT_FLAG) $@ $(RECEIVER_CPU_ARGS) + Rscript $< --data $(DERIVED) $(FMT_FLAG) $@ $(RECEIVER_CPU_SIZE_ARGS) $(RECEIVER_CPU_ARGS) $(OUT)/timeseries.pdf $(OUT)/timeseries.tex: fig_timeseries.R common.R $(CSVS) Makefile @mkdir -p $(OUT) @@ -140,6 +143,10 @@ DATACENTER_FQ_ARGS = EXP=datacenter-fq SETUP=datacenter_fq \ FIG_STEMS="throughput throughput_zoom rtt rtt_zoom sender_cpu receiver_cpu timeseries idt_cdf idt_cdf_zoom" \ THROUGHPUT_SIZE_ARGS="$(QUARTER_SIZE)" \ RTT_SIZE_ARGS="$(QUARTER_SIZE)" \ + SENDER_CPU_SIZE_ARGS="$(QUARTER_SIZE)" \ + RECEIVER_CPU_SIZE_ARGS="$(QUARTER_SIZE)" \ + TIMESERIES_ARGS="--height 1.6" \ + IDT_CDF_ARGS="--height 1.6" \ THROUGHPUT_ZOOM_ARGS="--ymin 3.5 --ymax 4.0 --ystep 0.1" \ RTT_ZOOM_ARGS="--ymin 4 --ymax 14 --ystep 2" @@ -148,10 +155,12 @@ DIRECT_LINK_ARGS = EXP=direct-link SETUP=direct-link_fq \ FIG_STEMS="throughput throughput_zoom rtt rtt_zoom sender_cpu receiver_cpu" \ THROUGHPUT_SIZE_ARGS="$(QUARTER_SIZE)" \ RTT_SIZE_ARGS="$(QUARTER_SIZE)" \ + SENDER_CPU_SIZE_ARGS="$(QUARTER_SIZE)" \ + RECEIVER_CPU_SIZE_ARGS="$(QUARTER_SIZE)" \ THROUGHPUT_ARGS="--ymax 10 --ystep 2" \ THROUGHPUT_ZOOM_ARGS="--ymin 9.0 --ymax 10.0 --ystep 0.2" \ RTT_ZOOM_ARGS="--ymin 1.75 --ymax 4 --ystep 1" \ - SENDER_CPU_ARGS="--ystep 1" \ + SENDER_CPU_ARGS="--ymax 20 --ystep 5" \ RECEIVER_CPU_ARGS="--ystep 5" datacenter-fq: @@ -166,5 +175,16 @@ direct-link: direct-link-tikz: $(MAKE) tex $(DIRECT_LINK_ARGS) -all-experiments: datacenter-fq direct-link -all-experiments-tikz: datacenter-fq-tikz direct-link-tikz +all-experiments: datacenter-fq direct-link slowstart +all-experiments-tikz: datacenter-fq-tikz direct-link-tikz slowstart-tikz + +# Slowstart: standalone, reads raw text files directly (no aggregator). +SLOWSTART_OUT := ../out/slowstart +SLOWSTART_RAW := $(RAW_DATA_ROOT)/slowstart + +slowstart: $(SLOWSTART_OUT)/slowstart.pdf +slowstart-tikz: $(SLOWSTART_OUT)/slowstart.tex + +$(SLOWSTART_OUT)/slowstart.pdf $(SLOWSTART_OUT)/slowstart.tex: fig_slowstart.R common.R $(SLOWSTART_RAW)/tso.txt $(SLOWSTART_RAW)/tso_pacing.txt Makefile + @mkdir -p $(SLOWSTART_OUT) + Rscript $< --data $(SLOWSTART_RAW) $(FMT_FLAG) $@ $(SLOWSTART_SIZE_ARGS)