Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Actually use jemalloc #10269

Merged
merged 2 commits into from
Jan 2, 2025
Merged

Actually use jemalloc #10269

merged 2 commits into from
Jan 2, 2025

Conversation

konstin
Copy link
Member

@konstin konstin commented Jan 2, 2025

The uv-performance-memory-allocator is currently optimized out at least on musl due to the crate being otherwise unused (rust-lang/rust#64402), causing musl to not use jemalloc and being slow.

Command:

cargo build --target x86_64-unknown-linux-musl --profile profiling
hyperfine --warmup 1 --runs 10 --prepare "uv venv -p 3.12" "target/x86_64-unknown-linux-musl/profiling/uv pip compile scripts/requirements/airflow.in"

Before:

Time (mean ± σ):      1.149 s ±  0.013 s    [User: 1.498 s, System: 0.433 s]
Range (min … max):    1.131 s …  1.173 s    10 runs

After:

Time (mean ± σ):     552.6 ms ±   4.7 ms    [User: 771.7 ms, System: 197.5 ms]
Range (min … max):   546.4 ms … 561.6 ms    10 runs

The `cdylib` was used for the pyo3 bindings to uv-pep508, which don't exist anymore. It was now creating warnings on musl due to musl (statically linked) no supporting shared libraries.
The uv-performance-memory-allocator is currently optimized out at least on musl due to the crate being otherwise unused (rust-lang/rust#64402), causing musl to not use jemalloc and being slow.

Command:
```
cargo build --target x86_64-unknown-linux-musl --profile profiling
hyperfine --warmup 1 --runs 10 --prepare "uv venv -p 3.12" "target/x86_64-unknown-linux-musl/profiling/uv pip compile scripts/requirements/airflow.in"
```

Before:
```
Time (mean ± σ):      1.149 s ±  0.013 s    [User: 1.498 s, System: 0.433 s]
Range (min … max):    1.131 s …  1.173 s    10 runs
```

After:
```
Time (mean ± σ):     552.6 ms ±   4.7 ms    [User: 771.7 ms, System: 197.5 ms]
Range (min … max):   546.4 ms … 561.6 ms    10 runs
```
@konstin konstin added the performance Potential performance improvement label Jan 2, 2025
@konstin konstin changed the title Konsti/use jemalloc Actually use jemalloc Jan 2, 2025
Copy link
Member

@charliermarsh charliermarsh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need to do the same for the zip feature?

@charliermarsh
Copy link
Member

I'm running a dry-run release: https://github.com/astral-sh/uv/actions/runs/12584094167

@charliermarsh charliermarsh merged commit a3307d9 into main Jan 2, 2025
101 of 150 checks passed
@charliermarsh charliermarsh deleted the konsti/use-jemalloc branch January 2, 2025 15:03
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Jan 4, 2025
This MR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [astral-sh/uv](https://github.com/astral-sh/uv) | patch | `0.5.13` -> `0.5.14` |

MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot).

**Proposed changes to behavior should be submitted there as MRs.**

---

### Release Notes

<details>
<summary>astral-sh/uv (astral-sh/uv)</summary>

### [`v0.5.14`](https://github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0514)

[Compare Source](astral-sh/uv@0.5.13...0.5.14)

##### Enhancements

-   Add `--exact` flag to `uv run` ([#&#8203;10198](astral-sh/uv#10198))
-   Add `--outdated` support to `uv pip tree` ([#&#8203;10199](astral-sh/uv#10199))
-   Add a required version setting to uv ([#&#8203;10248](astral-sh/uv#10248))
-   Add loongarch64 to supported Python platform tags ([#&#8203;10223](astral-sh/uv#10223))
-   Add manylinux2014 aliases for `--python-platform` ([#&#8203;10217](astral-sh/uv#10217))
-   Add support for Python interpreters on ARMv5TE platforms ([#&#8203;10234](astral-sh/uv#10234))
-   Add support for optional `--description` in `uv init` ([#&#8203;10209](astral-sh/uv#10209))
-   Ignore empty or missing hrefs in Simple HTML ([#&#8203;10276](astral-sh/uv#10276))
-   Patch pkgconfig files after Python install ([#&#8203;10189](astral-sh/uv#10189))

##### Performance

-   Actually use jemalloc as alternative allocator ([#&#8203;10269](astral-sh/uv#10269))
-   Parse URLs lazily in resolver ([#&#8203;10259](astral-sh/uv#10259))
-   Use `BTreeMap::range` to avoid iterating over unnecessary versions ([#&#8203;10266](astral-sh/uv#10266))

##### Bug fixes

-   Accept directories with space names in `uv init` ([#&#8203;10246](astral-sh/uv#10246))
-   Avoid forking on version in non-universal resolutions ([#&#8203;10274](astral-sh/uv#10274))
-   Avoid stripping query parameters from URLs ([#&#8203;10253](astral-sh/uv#10253))
-   Consider workspace dependencies to be 'direct' ([#&#8203;10197](astral-sh/uv#10197))
-   Detect cyclic dependencies during builds ([#&#8203;10258](astral-sh/uv#10258))
-   Guard against self-deletion in `uv venv` and `uv tool` ([#&#8203;10206](astral-sh/uv#10206))
-   Respect static metadata for already-installed distributions ([#&#8203;10242](astral-sh/uv#10242))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS45MC4yIiwidXBkYXRlZEluVmVyIjoiMzkuOTAuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiUmVub3ZhdGUgQm90Il19-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
performance Potential performance improvement
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants