Skip to content

Commit ce7759f

Browse files
ipmbclaude
andcommitted
Fix pixi cold install and re-enable pixi in benchmark
- Add `rm -rf ~/.cache/uv` to `pixi-clean-cache`: pixi uses uv as its PyPI backend, and `pixi clean cache` only clears the conda package cache (~/.pixi/pkgs), leaving the uv cache (~/.cache/uv) intact. This meant "cold" installs were hitting the warm uv cache, making cold and warm install times identical. - Uncomment pixi job in benchmark.yml and add pixi to gather's needs, now that the Python version and cold install issues are resolved. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent deee88e commit ce7759f

2 files changed

Lines changed: 87 additions & 87 deletions

File tree

.github/workflows/benchmark.yml

Lines changed: 86 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -528,96 +528,95 @@ jobs:
528528
path: uv/stats.csv
529529
retention-days: 10
530530

531-
# pixi:
532-
# runs-on: ubuntu-22.04
533-
# steps:
534-
# - name: Checkout
535-
# uses: actions/checkout@v4
536-
#
537-
# - name: Setup Python
538-
# uses: actions/setup-python@v5
539-
# with:
540-
# python-version: "3.11"
541-
#
542-
# - name: setup
543-
# run: ./bin/actions_prereqs.sh
544-
#
545-
# - name: tooling
546-
# run: |
547-
# /usr/bin/time --output=timings/tooling.txt --format="%e,%S,%U,%P,%M,%I,%O" \
548-
# make pixi-tooling
549-
#
550-
# - name: import
551-
# run: |
552-
# /usr/bin/time --output=timings/import.txt --format="%e,%S,%U,%P,%M,%I,%O" \
553-
# make pixi-import
554-
#
555-
# - name: lock cold
556-
# run: |
557-
# make pixi-clean-cache
558-
# make pixi-clean-venv
559-
# make pixi-clean-lock
560-
# /usr/bin/time --output=timings/lock-cold.txt --format="%e,%S,%U,%P,%M,%I,%O" \
561-
# make pixi-lock
562-
#
563-
# - name: lock warm
564-
# run: |
565-
# make pixi-clean-lock
566-
# /usr/bin/time --output=timings/lock-warm.txt --format="%e,%S,%U,%P,%M,%I,%O" \
567-
# make pixi-lock
568-
#
569-
# - name: install cold
570-
# run: |
571-
# make pixi-clean-cache
572-
# make pixi-clean-venv
573-
# /usr/bin/time --output=timings/install-cold.txt --format="%e,%S,%U,%P,%M,%I,%O" \
574-
# make pixi-install
575-
#
576-
# - name: install warm
577-
# run: |
578-
# make pixi-clean-venv
579-
# /usr/bin/time --output=timings/install-warm.txt --format="%e,%S,%U,%P,%M,%I,%O" \
580-
# make pixi-install
581-
#
582-
# - name: update cold
583-
# run: |
584-
# make pixi-clean-cache
585-
# /usr/bin/time --output=timings/update-cold.txt --format="%e,%S,%U,%P,%M,%I,%O" \
586-
# make pixi-update
587-
#
588-
# - name: update warm
589-
# run: |
590-
# /usr/bin/time --output=timings/update-warm.txt --format="%e,%S,%U,%P,%M,%I,%O" \
591-
# make pixi-update
592-
#
593-
# - name: add package
594-
# run: |
595-
# /usr/bin/time --output=timings/add-package.txt --format="%e,%S,%U,%P,%M,%I,%O" \
596-
# make pixi-add-package
597-
#
598-
# - name: stats
599-
# run: |
600-
# VERSION=$(make pixi-version)
601-
# CSV=pixi/stats.csv
602-
# TIMESTAMP=$(date +%s)
603-
# mkdir -p "pixi"
604-
# echo "tool,version,timestamp,stat,elapsed time,system,user,cpu percent,max rss,inputs,outputs" > "$CSV"
605-
# for stat in "tooling" "import" "lock-cold" "lock-warm" "install-cold" "install-warm" "update-cold" "update-warm" "add-package"; do
606-
# echo "pixi,$VERSION,$TIMESTAMP,$stat,$(cat timings/$stat.txt | tr -d '%')" >> "$CSV"
607-
# done
608-
# csv2md "$CSV" >> $GITHUB_STEP_SUMMARY
609-
#
610-
# - uses: actions/upload-artifact@v4
611-
# if: github.ref == 'refs/heads/main'
612-
# with:
613-
# name: pixi-stats
614-
# path: pixi/stats.csv
615-
# retention-days: 10
531+
pixi:
532+
runs-on: ubuntu-22.04
533+
steps:
534+
- name: Checkout
535+
uses: actions/checkout@v4
536+
537+
- name: Setup Python
538+
uses: actions/setup-python@v5
539+
with:
540+
python-version: "3.11"
541+
542+
- name: setup
543+
run: ./bin/actions_prereqs.sh
544+
545+
- name: tooling
546+
run: |
547+
/usr/bin/time --output=timings/tooling.txt --format="%e,%S,%U,%P,%M,%I,%O" \
548+
make pixi-tooling
549+
550+
- name: import
551+
run: |
552+
/usr/bin/time --output=timings/import.txt --format="%e,%S,%U,%P,%M,%I,%O" \
553+
make pixi-import
554+
555+
- name: lock cold
556+
run: |
557+
make pixi-clean-cache
558+
make pixi-clean-venv
559+
make pixi-clean-lock
560+
/usr/bin/time --output=timings/lock-cold.txt --format="%e,%S,%U,%P,%M,%I,%O" \
561+
make pixi-lock
562+
563+
- name: lock warm
564+
run: |
565+
make pixi-clean-lock
566+
/usr/bin/time --output=timings/lock-warm.txt --format="%e,%S,%U,%P,%M,%I,%O" \
567+
make pixi-lock
568+
569+
- name: install cold
570+
run: |
571+
make pixi-clean-cache
572+
make pixi-clean-venv
573+
/usr/bin/time --output=timings/install-cold.txt --format="%e,%S,%U,%P,%M,%I,%O" \
574+
make pixi-install
575+
576+
- name: install warm
577+
run: |
578+
make pixi-clean-venv
579+
/usr/bin/time --output=timings/install-warm.txt --format="%e,%S,%U,%P,%M,%I,%O" \
580+
make pixi-install
581+
582+
- name: update cold
583+
run: |
584+
make pixi-clean-cache
585+
/usr/bin/time --output=timings/update-cold.txt --format="%e,%S,%U,%P,%M,%I,%O" \
586+
make pixi-update
587+
588+
- name: update warm
589+
run: |
590+
/usr/bin/time --output=timings/update-warm.txt --format="%e,%S,%U,%P,%M,%I,%O" \
591+
make pixi-update
592+
593+
- name: add package
594+
run: |
595+
/usr/bin/time --output=timings/add-package.txt --format="%e,%S,%U,%P,%M,%I,%O" \
596+
make pixi-add-package
597+
598+
- name: stats
599+
run: |
600+
VERSION=$(make pixi-version)
601+
CSV=pixi/stats.csv
602+
TIMESTAMP=$(date +%s)
603+
mkdir -p "pixi"
604+
echo "tool,version,timestamp,stat,elapsed time,system,user,cpu percent,max rss,inputs,outputs" > "$CSV"
605+
for stat in "tooling" "import" "lock-cold" "lock-warm" "install-cold" "install-warm" "update-cold" "update-warm" "add-package"; do
606+
echo "pixi,$VERSION,$TIMESTAMP,$stat,$(cat timings/$stat.txt | tr -d '%')" >> "$CSV"
607+
done
608+
csv2md "$CSV" >> $GITHUB_STEP_SUMMARY
609+
610+
- uses: actions/upload-artifact@v4
611+
if: github.ref == 'refs/heads/main'
612+
with:
613+
name: pixi-stats
614+
path: pixi/stats.csv
615+
retention-days: 10
616616

617617
gather:
618618
runs-on: ubuntu-22.04
619-
# needs: [poetry, pdm, pdm-uv, pipenv, pip-tools, uv, pixi]
620-
needs: [poetry, pdm, pdm-uv, pip-tools, uv]
619+
needs: [poetry, pdm, pdm-uv, pip-tools, uv, pixi]
621620
if: github.ref == 'refs/heads/main'
622621
steps:
623622
- uses: actions/download-artifact@v4

Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@ pixi-import:
175175
cd pixi; $(PIXI_PATH) add --pypi $$(sed -e 's/#.*//' -e '/^$$/ d' < ../requirements.txt) --frozen
176176
pixi-clean-cache: pip-clean
177177
$(PIXI_PATH) clean cache --yes
178+
rm -rf ~/.cache/uv
178179
pixi-clean-venv:
179180
cd pixi; rm -rf .pixi/envs
180181
pixi-clean-lock:

0 commit comments

Comments
 (0)