Commit Graph

15 Commits

Author SHA1 Message Date
modal-d17
8e9ad5e7dd servo: Merge #20391 - Measure cache memory usage (from modal17:iss19251); r=jdm
<!-- Please describe your changes on the following line: -->
- [X] make the memory cache data structure derive MallocSizeOf
- [X] add a new IpcReceiver argument to ResourceChannelManager::start that is used for listening to messages from the memory profiler (it must correspond with this sender)
- [X] use run_with_memory_reporting in the network code to register a memory reporter for that thread
- [X] when a message from the memory profiler arrives, create a report that includes that size of the public and private http caches

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [x] These changes fix #19251 (github issue number if applicable).

<!-- Either: -->
- [ ] There are tests for these changes OR
- [ ] These changes do not require tests because _____

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->

Source-Repo: https://github.com/servo/servo
Source-Revision: 8f226f841bd5e1ab412ff2cd8417919b222f7555
2018-04-02 02:01:50 -04:00
Nicholas Nethercote
45f978e547 servo: Merge #18938 - Replace all uses of the heapsize crate with malloc_size_of (from nnethercote:bug-1409255); r=SimonSapin
Servo currently uses `heapsize`, but Stylo/Gecko use `malloc_size_of`.
`malloc_size_of` is better -- it handles various cases that `heapsize` does not
-- so this patch changes Servo to use `malloc_size_of`.

This patch makes the following changes to the `malloc_size_of` crate.

- Adds `MallocSizeOf` trait implementations for numerous types, some built-in
  (e.g. `VecDeque`), some external and Servo-only (e.g. `string_cache`).

- Makes `enclosing_size_of_op` optional, because vanilla jemalloc doesn't
  support that operation.

- For `HashSet`/`HashMap`, falls back to a computed estimate when
  `enclosing_size_of_op` isn't available.

- Adds an extern "C" `malloc_size_of` function that does the actual heap
  measurement; this is based on the same functions from the `heapsize` crate.

This patch makes the following changes elsewhere.

- Converts all the uses of `heapsize` to instead use `malloc_size_of`.

- Disables the "heapsize"/"heap_size" feature for the external crates that
  provide it.

- Removes the `HeapSizeOf` implementation from `hashglobe`.

- Adds `ignore` annotations to a few `Rc`/`Arc`, because `malloc_size_of`
  doesn't derive those types, unlike `heapsize`.

<!-- Please describe your changes on the following line: -->

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [ ] These changes fix https://bugzilla.mozilla.org/show_bug.cgi?id=1409255

<!-- Either: -->
- [ ] There are tests for these changes OR
- [ ] These changes do not require tests because testing is on the Gecko side.

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->

Source-Repo: https://github.com/servo/servo
Source-Revision: 4c538b642e4bdfbf42c522c5a59c258a6d14546e
2017-10-18 13:56:05 -05:00
Simon Sapin
ff18ff343e servo: Merge #18839 - Remove some usage of unstable features (from servo:stabler); r=nox
`Box::new(x)` seems to compile to exactly the same assembly as `box x` in release mode:
https://play.rust-lang.org/?gist=55ec5dd02c22fa799375d6e2e1a6e970&version=nightly

Source-Repo: https://github.com/servo/servo
Source-Revision: fc4de5adf5bff7fabe9f32b960c405f249b5d035
2017-10-12 05:18:00 -05:00
Josh Matthews
ab18437f6f servo: Merge #14165 - Supress panics for ProfilerChan sends (from servo:jdm-patch-1); r=nox
This should address #14161.

Source-Repo: https://github.com/servo/servo
Source-Revision: 65dd6d43409228e259153463fe24922c51172bc5
2016-11-14 16:12:34 -06:00
Josh Matthews
8280508a58 servo: Merge #14119 - Address common source of shutdown panics (from servo:jdm-patch-1); r=mbrubeck
Remove easy sources of intermittent failures during test shutdown. Might help #14118 and #14117.

Source-Repo: https://github.com/servo/servo
Source-Revision: 5173a655219d5eff64d4702718cfa63c2c44e1b3
2016-11-08 12:23:56 -06:00
faineance
13971a6ff8 servo: Merge #10222 - Use self.0 instead of destructuring single item tuple structs (from faineance:master); r=KiChjang
Closes #9698.

Source-Repo: https://github.com/servo/servo
Source-Revision: b97ffffb48080a0b4769f8609a27a68145042945
2016-03-28 03:42:31 +05:00
rohan.prinja
c098aafd20 servo: Merge #9201 - task -> thread (from ajnirp:8512-task-thread); r=jdm
for #8512

Source-Repo: https://github.com/servo/servo
Source-Revision: d3e2f94f2024f4735f836588ed11303a0abafdf8
2016-01-10 15:19:04 +05:00
Patrick Walton
d4e67f7fa7 servo: Merge #8599 - compositing: Split Servo up into multiple sandboxed processes (from jdm:e10s-redux); r=metajack
Multiprocess mode is enabled with the `-M` switch, and sandboxing is
enabled with the `-S` switch.

Rebase of #6884.

Source-Repo: https://github.com/servo/servo
Source-Revision: 8b39b9afed6ef8a3d7d3e6609fd301a37825d3e1
2015-11-20 03:29:48 +05:00
Brandon Fairchild
704178a0dd servo: Merge #7662 - Check for multiple import blocks separated by whitespace (from nerith:import); r=frewsxcv
Fixes #7381.

Source-Repo: https://github.com/servo/servo
Source-Revision: a0d3c9223f09757124b1520c4f17e94fa8bbe249
2015-09-19 13:34:51 -06:00
Johann Tuffe
25ce9ab4be servo: Merge #7265 - Add alphabetical order check for use statements (from tafia:tidy-use); r=Ms2ger
close #7112

Source-Repo: https://github.com/servo/servo
Source-Revision: a5fbb2f2a6fa79755f975feff2435abb6a5dd0e9
2015-08-20 07:43:56 -06:00
Manish Goregaokar
c75548bdb3 servo: Merge #7054 - Rollup of 3 pull requests (from Manishearth:rollup); r=Manishearth
- Successful merges: #7028, #7034, #7039
- Failed merges:

Source-Repo: https://github.com/servo/servo
Source-Revision: 76b4bae6ee45317f2ca0aefbc48b89169d2450c8
2015-08-06 17:43:09 -06:00
Nicholas Nethercote
2471f9031d servo: Merge #6802 - Add a kind field to memory reports (from nnethercote:report-kind); r=jdm
This is used for two memory reporting improvements.

- It's used to distinguish "explicit" memory reports from others. This
  mirrors the same categorization that is used in Firefox, and gives a single
  tree that's the best place to look. It replaces the "pages" tree which
  was always intended to be a temporary stand-in for "explicit".

- It's used to computed "heap-unclassified" values for both the jemalloc
  and system heaps, both of which are placed into the "explicit" tree.

Example output:
```
|  114.99 MiB -- explicit
|      52.34 MiB -- jemalloc-heap-unclassified
|      46.14 MiB -- system-heap-unclassified
|      14.95 MiB -- url(file:///home/njn/moz/servo2/../servo-static-suite/wikipe
dia/Guardians%20of%20the%20Galaxy%20(film)%20-%20Wikipedia,%20the%20free%20encyc
lopedia.html)
|          7.32 MiB -- js
|             3.07 MiB -- malloc-heap
|             3.00 MiB -- gc-heap
|                2.49 MiB -- used
|                0.34 MiB -- decommitted
|                0.09 MiB -- unused
|                0.09 MiB -- admin
|             1.25 MiB -- non-heap
|          1.36 MiB -- layout-worker-3-local-context
|          1.34 MiB -- layout-worker-0-local-context
|          1.24 MiB -- layout-worker-1-local-context
|          1.24 MiB -- layout-worker-4-local-context
|          1.16 MiB -- layout-worker-2-local-context
|          0.89 MiB -- layout-worker-5-local-context
|          0.38 MiB -- layout-task
|             0.31 MiB -- display-list
|             0.07 MiB -- local-context
|       1.56 MiB -- compositor-task
|          0.78 MiB -- surface-map
|          0.78 MiB -- layer-tree
```
The heap-unclassified values dominate the "explicit" tree because reporter
coverage is still quite poor.

Source-Repo: https://github.com/servo/servo
Source-Revision: bff5e325a89ab6621a049ac55c1da66e901c776c
2015-07-29 19:42:00 -06:00
Patrick Walton
9a5dbcbefe servo: Merge #6629 - profile: Make the time and memory profilers run over IPC (from pcwalton:profiler-ipc); r=jdm
Uses a couple of extra threads to work around the lack of cross-process
boxed trait objects.

r? @nnethercote

Source-Repo: https://github.com/servo/servo
Source-Revision: f778e0eecf7cd8a2b870d18c3c305ff10d6b1894
2015-07-24 18:55:05 -06:00
Ms2ger
c69a5158fc servo: Merge #6417 - Require documentation for the memory profiling module (from servo:profile-docs); r=SimonSapin
Source-Repo: https://github.com/servo/servo
Source-Revision: b8c7f49ce8a130a057eea4cfc912bd68c99687aa
2015-06-21 03:54:21 -06:00
Nicholas Nethercote
afeab10374 servo: Merge #5912 - Add a profile_traits crate to reduce compile times (from nnethercote:profile_traits); r=Manishearth
A rebuild after touching components/profile/mem.rs now takes 48 seconds (and
only rebuilds `profile` and `servo`) which is much lower than it used to be.
In comparison, a rebuild after touching components/profile_traits/mem.rs takes
294 seconds and rebuilds many more crates.

This change also removes some unnecessary crate dependencies in `net` and
`net_traits`.

Source-Repo: https://github.com/servo/servo
Source-Revision: 77f653da2c4120ea7ac1a946d97fc70059d513d4
2015-04-30 20:02:33 -05:00