Replies: 1 comment 1 reply
-
32-bit supportI basically haven't thought about 32-bit at all, but off the top of my head:
mmap() probably isn't involved in memory leaks, so disabling it seems like a reasonable short term approach. High memory overheadFil has fairly high memory overhead. I've done a bunch of work to optimize it, so it's not too bad for desktop computers, but for a machine with 1GB RAM, I can imagine it just using too much, yes. This is separate from 32-bit vs 64-bit. A lot of the overhead comes from use of Rust package That will help, but still, overhead scales with number of allocations. So another approach would be to use sampling, i.e. just track 1/100th of allocations. For a one-off debugging session, you can probably just hack this in, and given a leak is likely the same allocation repeated, this would probably do the trick. AlternativesHere are some things you might try:
Sticking with FilI am happy to accept patches to make Fil work on 32-bit, or perhaps I could do contract work to that end. But that still leaves memory overhead. I am working on a commercial version of Fil intended to run in production, which reduces overhead (both CPU and memory) by using sampling. So that might help, but 32-bit support is quite low on my list at the moment. Overall suggestionSince you have something working, I suggest hacking it some more to just track every Nth allocation instead of all of them, and this may suffice for a one-off memory leak debug session. |
Beta Was this translation helpful? Give feedback.
-
Hi,
We are trying to run fil-profiler on armv7l 32bit architecture.
We have seen that in the file setup.py only 64bit architectures. We would like to propose changes to support armv7l architecture specifically but any kind of 32bit architecture if possible.
At first it did not compile.
The compilation error was:
Here is the full compilation log:
compilation_logs_of_filprofiler_on_raspberryPi_3B.txt
From that we began to try some "not educated" trials: changing the call to SYS_mmap to SYS_mmap2 and dividing the offset by 4096, it compiled but at run we got a segfault.
Then we commented the following lines fichier filpreload/build.rs
//println!("cargo:rustc-cdylib-link-arg=-Wl,--defsym=mmap=fil_mmap_impl");
//println!("cargo:rustc-cdylib-link-arg=-Wl,--defsym=mmap64=fil_mmap_impl");
However when running it allocated too much memory. We began to dive in the code, and if you could point us to the part of the code that is specific to a 64-bit architecture, we would surely go faster to understand what needs to be changed.
Beta Was this translation helpful? Give feedback.
All reactions