aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2020-07-22 12:40:45 +0100
committerAleksey Kladov <[email protected]>2020-07-22 12:40:45 +0100
commitdeed44a472edaf11d35fa98c7e68a288f8dfe93f (patch)
treeff50a8ada66c03237c9a364be400107331547722
parent26932e0060b74525f74df5e31ae0c88997e5d667 (diff)
Remove support for jemalloc
We only used it for measuring memory usage, but now we can use glibc's allocator for that just fine
-rw-r--r--Cargo.lock65
-rw-r--r--crates/ra_prof/Cargo.toml6
-rw-r--r--crates/ra_prof/src/lib.rs6
-rw-r--r--crates/ra_prof/src/memory_usage.rs10
-rw-r--r--crates/rust-analyzer/Cargo.toml1
-rw-r--r--crates/rust-analyzer/src/bin/args.rs4
-rw-r--r--docs/dev/README.md8
-rw-r--r--xtask/src/dist.rs2
-rw-r--r--xtask/src/install.rs2
-rw-r--r--xtask/src/main.rs12
10 files changed, 7 insertions, 109 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 4a8271f09..62fd9bfb6 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -360,12 +360,6 @@ dependencies = [
360] 360]
361 361
362[[package]] 362[[package]]
363name = "fs_extra"
364version = "1.1.0"
365source = "registry+https://github.com/rust-lang/crates.io-index"
366checksum = "5f2a4a2034423744d2cc7ca2068453168dcdb82c438419e639a26bd87839c674"
367
368[[package]]
369name = "fsevent" 363name = "fsevent"
370version = "2.0.2" 364version = "2.0.2"
371source = "registry+https://github.com/rust-lang/crates.io-index" 365source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -542,38 +536,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
542checksum = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6" 536checksum = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6"
543 537
544[[package]] 538[[package]]
545name = "jemalloc-ctl"
546version = "0.3.3"
547source = "registry+https://github.com/rust-lang/crates.io-index"
548checksum = "c502a5ff9dd2924f1ed32ba96e3b65735d837b4bfd978d3161b1702e66aca4b7"
549dependencies = [
550 "jemalloc-sys",
551 "libc",
552 "paste",
553]
554
555[[package]]
556name = "jemalloc-sys"
557version = "0.3.2"
558source = "registry+https://github.com/rust-lang/crates.io-index"
559checksum = "0d3b9f3f5c9b31aa0f5ed3260385ac205db665baa41d49bb8338008ae94ede45"
560dependencies = [
561 "cc",
562 "fs_extra",
563 "libc",
564]
565
566[[package]]
567name = "jemallocator"
568version = "0.3.2"
569source = "registry+https://github.com/rust-lang/crates.io-index"
570checksum = "43ae63fcfc45e99ab3d1b29a46782ad679e98436c3169d15a167a1108a724b69"
571dependencies = [
572 "jemalloc-sys",
573 "libc",
574]
575
576[[package]]
577name = "jod-thread" 539name = "jod-thread"
578version = "0.1.2" 540version = "0.1.2"
579source = "registry+https://github.com/rust-lang/crates.io-index" 541source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -875,25 +837,6 @@ dependencies = [
875] 837]
876 838
877[[package]] 839[[package]]
878name = "paste"
879version = "0.1.18"
880source = "registry+https://github.com/rust-lang/crates.io-index"
881checksum = "45ca20c77d80be666aef2b45486da86238fabe33e38306bd3118fe4af33fa880"
882dependencies = [
883 "paste-impl",
884 "proc-macro-hack",
885]
886
887[[package]]
888name = "paste-impl"
889version = "0.1.18"
890source = "registry+https://github.com/rust-lang/crates.io-index"
891checksum = "d95a7db200b97ef370c8e6de0088252f7e0dfff7d047a28528e47456c0fc98b6"
892dependencies = [
893 "proc-macro-hack",
894]
895
896[[package]]
897name = "paths" 840name = "paths"
898version = "0.1.0" 841version = "0.1.0"
899 842
@@ -932,12 +875,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
932checksum = "237a5ed80e274dbc66f86bd59c1e25edc039660be53194b5fe0a482e0f2612ea" 875checksum = "237a5ed80e274dbc66f86bd59c1e25edc039660be53194b5fe0a482e0f2612ea"
933 876
934[[package]] 877[[package]]
935name = "proc-macro-hack"
936version = "0.5.16"
937source = "registry+https://github.com/rust-lang/crates.io-index"
938checksum = "7e0456befd48169b9f13ef0f0ad46d492cf9d2dbb918bcf38e01eed4ce3ec5e4"
939
940[[package]]
941name = "proc-macro2" 878name = "proc-macro2"
942version = "1.0.19" 879version = "1.0.19"
943source = "registry+https://github.com/rust-lang/crates.io-index" 880source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1199,8 +1136,6 @@ version = "0.1.0"
1199dependencies = [ 1136dependencies = [
1200 "backtrace", 1137 "backtrace",
1201 "cfg-if", 1138 "cfg-if",
1202 "jemalloc-ctl",
1203 "jemallocator",
1204 "libc", 1139 "libc",
1205 "mimalloc", 1140 "mimalloc",
1206 "once_cell", 1141 "once_cell",
diff --git a/crates/ra_prof/Cargo.toml b/crates/ra_prof/Cargo.toml
index 2e60858f1..84d895317 100644
--- a/crates/ra_prof/Cargo.toml
+++ b/crates/ra_prof/Cargo.toml
@@ -17,16 +17,10 @@ mimalloc = { version = "0.1.19", default-features = false, optional = true }
17cfg-if = "0.1.10" 17cfg-if = "0.1.10"
18libc = "0.2.73" 18libc = "0.2.73"
19 19
20[target.'cfg(not(target_env = "msvc"))'.dependencies]
21jemallocator = { version = "0.3.2", optional = true }
22jemalloc-ctl = { version = "0.3.3", optional = true }
23
24[features] 20[features]
25jemalloc = [ "jemallocator", "jemalloc-ctl" ]
26cpu_profiler = [] 21cpu_profiler = []
27 22
28# Uncomment to enable for the whole crate graph 23# Uncomment to enable for the whole crate graph
29# default = [ "backtrace" ] 24# default = [ "backtrace" ]
30# default = [ "jemalloc" ]
31# default = [ "mimalloc" ] 25# default = [ "mimalloc" ]
32# default = [ "cpu_profiler" ] 26# default = [ "cpu_profiler" ]
diff --git a/crates/ra_prof/src/lib.rs b/crates/ra_prof/src/lib.rs
index b54531b4e..a5b408a1d 100644
--- a/crates/ra_prof/src/lib.rs
+++ b/crates/ra_prof/src/lib.rs
@@ -13,12 +13,6 @@ pub use crate::{
13 memory_usage::{Bytes, MemoryUsage}, 13 memory_usage::{Bytes, MemoryUsage},
14}; 14};
15 15
16// We use jemalloc mainly to get heap usage statistics, actual performance
17// difference is not measures.
18#[cfg(all(feature = "jemalloc", not(target_env = "msvc")))]
19#[global_allocator]
20static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc;
21
22#[cfg(all(feature = "mimalloc"))] 16#[cfg(all(feature = "mimalloc"))]
23#[global_allocator] 17#[global_allocator]
24static ALLOC: mimalloc::MiMalloc = mimalloc::MiMalloc; 18static ALLOC: mimalloc::MiMalloc = mimalloc::MiMalloc;
diff --git a/crates/ra_prof/src/memory_usage.rs b/crates/ra_prof/src/memory_usage.rs
index b1858b06f..ee79ec3ee 100644
--- a/crates/ra_prof/src/memory_usage.rs
+++ b/crates/ra_prof/src/memory_usage.rs
@@ -1,7 +1,7 @@
1//! FIXME: write short doc here 1//! FIXME: write short doc here
2use std::fmt;
2 3
3use cfg_if::cfg_if; 4use cfg_if::cfg_if;
4use std::fmt;
5 5
6pub struct MemoryUsage { 6pub struct MemoryUsage {
7 pub allocated: Bytes, 7 pub allocated: Bytes,
@@ -11,13 +11,7 @@ pub struct MemoryUsage {
11impl MemoryUsage { 11impl MemoryUsage {
12 pub fn current() -> MemoryUsage { 12 pub fn current() -> MemoryUsage {
13 cfg_if! { 13 cfg_if! {
14 if #[cfg(all(feature = "jemalloc", not(target_env = "msvc")))] { 14 if #[cfg(target_os = "linux")] {
15 jemalloc_ctl::epoch::advance().unwrap();
16 MemoryUsage {
17 allocated: Bytes(jemalloc_ctl::stats::allocated::read().unwrap()),
18 resident: Bytes(jemalloc_ctl::stats::resident::read().unwrap()),
19 }
20 } else if #[cfg(target_os = "linux")] {
21 // Note: This is incredibly slow. 15 // Note: This is incredibly slow.
22 let alloc = unsafe { libc::mallinfo() }.uordblks as u32 as usize; 16 let alloc = unsafe { libc::mallinfo() }.uordblks as u32 as usize;
23 MemoryUsage { allocated: Bytes(alloc), resident: Bytes(0) } 17 MemoryUsage { allocated: Bytes(alloc), resident: Bytes(0) }
diff --git a/crates/rust-analyzer/Cargo.toml b/crates/rust-analyzer/Cargo.toml
index 5eb2d0bb7..215eeb2f6 100644
--- a/crates/rust-analyzer/Cargo.toml
+++ b/crates/rust-analyzer/Cargo.toml
@@ -64,5 +64,4 @@ mbe = { path = "../ra_mbe", package = "ra_mbe" }
64tt = { path = "../ra_tt", package = "ra_tt" } 64tt = { path = "../ra_tt", package = "ra_tt" }
65 65
66[features] 66[features]
67jemalloc = [ "ra_prof/jemalloc" ]
68mimalloc = [ "ra_prof/mimalloc" ] 67mimalloc = [ "ra_prof/mimalloc" ]
diff --git a/crates/rust-analyzer/src/bin/args.rs b/crates/rust-analyzer/src/bin/args.rs
index 3210416ee..741a2a951 100644
--- a/crates/rust-analyzer/src/bin/args.rs
+++ b/crates/rust-analyzer/src/bin/args.rs
@@ -166,7 +166,7 @@ USAGE:
166FLAGS: 166FLAGS:
167 -o, --only Only analyze items matching this path 167 -o, --only Only analyze items matching this path
168 -h, --help Prints help information 168 -h, --help Prints help information
169 --memory-usage Collect memory usage statistics (requires `--features jemalloc`) 169 --memory-usage Collect memory usage statistics
170 --randomize Randomize order in which crates, modules, and items are processed 170 --randomize Randomize order in which crates, modules, and items are processed
171 --parallel Run type inference in parallel 171 --parallel Run type inference in parallel
172 --load-output-dirs Load OUT_DIR values by running `cargo check` before analysis 172 --load-output-dirs Load OUT_DIR values by running `cargo check` before analysis
@@ -221,7 +221,7 @@ USAGE:
221 221
222FLAGS: 222FLAGS:
223 -h, --help Prints help information 223 -h, --help Prints help information
224 --memory-usage Collect memory usage statistics (requires `--features jemalloc`) 224 --memory-usage Collect memory usage statistics
225 --load-output-dirs Load OUT_DIR values by running `cargo check` before analysis 225 --load-output-dirs Load OUT_DIR values by running `cargo check` before analysis
226 --with-proc-macro Use ra-proc-macro-srv for proc-macro expanding 226 --with-proc-macro Use ra-proc-macro-srv for proc-macro expanding
227 -v, --verbose 227 -v, --verbose
diff --git a/docs/dev/README.md b/docs/dev/README.md
index 3af01cd6b..2bb2f75bd 100644
--- a/docs/dev/README.md
+++ b/docs/dev/README.md
@@ -397,13 +397,7 @@ To log all communication between the server and the client, there are two choice
397 397
398There are also two VS Code commands which might be of interest: 398There are also two VS Code commands which might be of interest:
399 399
400* `Rust Analyzer: Status` shows some memory-usage statistics. To take full 400* `Rust Analyzer: Status` shows some memory-usage statistics.
401 advantage of it, you need to compile rust-analyzer with jemalloc support:
402 ```
403 $ cargo install --path crates/rust-analyzer --force --features jemalloc
404 ```
405
406 There's an alias for this: `cargo xtask install --server --jemalloc`.
407 401
408* `Rust Analyzer: Syntax Tree` shows syntax tree of the current file/selection. 402* `Rust Analyzer: Syntax Tree` shows syntax tree of the current file/selection.
409 403
diff --git a/xtask/src/dist.rs b/xtask/src/dist.rs
index b8f68027c..c198c0907 100644
--- a/xtask/src/dist.rs
+++ b/xtask/src/dist.rs
@@ -57,8 +57,6 @@ fn dist_server() -> Result<()> {
57 env::set_var("CC", "clang"); 57 env::set_var("CC", "clang");
58 run!( 58 run!(
59 "cargo build --manifest-path ./crates/rust-analyzer/Cargo.toml --bin rust-analyzer --release" 59 "cargo build --manifest-path ./crates/rust-analyzer/Cargo.toml --bin rust-analyzer --release"
60 // We'd want to add, but that requires setting the right linker somehow
61 // --features=jemalloc
62 )?; 60 )?;
63 } else { 61 } else {
64 run!("cargo build --manifest-path ./crates/rust-analyzer/Cargo.toml --bin rust-analyzer --release")?; 62 run!("cargo build --manifest-path ./crates/rust-analyzer/Cargo.toml --bin rust-analyzer --release")?;
diff --git a/xtask/src/install.rs b/xtask/src/install.rs
index a0dc0c9c2..b25a6e301 100644
--- a/xtask/src/install.rs
+++ b/xtask/src/install.rs
@@ -24,7 +24,6 @@ pub struct ServerOpt {
24 24
25pub enum Malloc { 25pub enum Malloc {
26 System, 26 System,
27 Jemalloc,
28 Mimalloc, 27 Mimalloc,
29} 28}
30 29
@@ -138,7 +137,6 @@ fn install_server(opts: ServerOpt) -> Result<()> {
138 137
139 let malloc_feature = match opts.malloc { 138 let malloc_feature = match opts.malloc {
140 Malloc::System => "", 139 Malloc::System => "",
141 Malloc::Jemalloc => "--features jemalloc",
142 Malloc::Mimalloc => "--features mimalloc", 140 Malloc::Mimalloc => "--features mimalloc",
143 }; 141 };
144 let res = run!("cargo install --path crates/rust-analyzer --locked --force {}", malloc_feature); 142 let res = run!("cargo install --path crates/rust-analyzer --locked --force {}", malloc_feature);
diff --git a/xtask/src/main.rs b/xtask/src/main.rs
index 399ff7204..53d3ce3e7 100644
--- a/xtask/src/main.rs
+++ b/xtask/src/main.rs
@@ -45,7 +45,6 @@ USAGE:
45FLAGS: 45FLAGS:
46 --client-code Install only VS Code plugin 46 --client-code Install only VS Code plugin
47 --server Install only the language server 47 --server Install only the language server
48 --jemalloc Use jemalloc for server
49 --mimalloc Use mimalloc for server 48 --mimalloc Use mimalloc for server
50 -h, --help Prints help information 49 -h, --help Prints help information
51 " 50 "
@@ -62,15 +61,8 @@ FLAGS:
62 return Ok(()); 61 return Ok(());
63 } 62 }
64 63
65 let malloc = match (args.contains("--jemalloc"), args.contains("--mimalloc")) { 64 let malloc =
66 (false, false) => Malloc::System, 65 if args.contains("--mimalloc") { Malloc::Mimalloc } else { Malloc::System };
67 (true, false) => Malloc::Jemalloc,
68 (false, true) => Malloc::Mimalloc,
69 (true, true) => {
70 eprintln!("error: Cannot use both `--jemalloc` and `--mimalloc`");
71 return Ok(());
72 }
73 };
74 66
75 args.finish()?; 67 args.finish()?;
76 68