Comments (4)
Under Ubuntu with a 4 core CPU I've also made the following Observations. The execution hangs at the matrix calculations stage and only uses one core of my Host CPU cores, but that is utilized to 100%. This only for compilation with the debug profile. Everything runs fine with the release profile, regardless of the number of CPUs With 4 qemu cores and release profile everything slows down to a crawl too. I'm sure the multiplication would eventually finish, but the execution is much slower (seen by inserted printlns)
num qemu cores | time to multiply a matrix | time for laplace |
---|---|---|
1 with 64MB RAM | 10.374278 s | 8.782785 s |
2 with 64MB RAM | 10.408395 s | 10.239706 s |
3 with 64MB RAM | 136.162215 s | 12.804455 s |
3 with 256MB RAM | terminated after 10 minutes | 13.389563 s |
from hermit-rs.
Compiling with libhermit-rs LevelFilter::Debug
( in libhermit-rs/src/logging.rs
) gives useful insight!
Attached are three logfiles. From the Logfiles it is apparent that something happens during the Laplace test when multiple cores are available that causes [1][DEBUG] Only Idle Task is available.
I included the relevant section (of the 2 Core situation) below. Things that may be related:
- Deallocation of some stack after creating task 9.
sys_notify: invalid address to condition variable
- The address of deallocated TLS is very near to previously created stack. Do they extend in different directions?
- Switching of FPU owner: Is there only one FPU (owner) even though we have two cores, or is this just an inaccurate log message?
[0][DEBUG] Creating new task 8
[0][DEBUG] Create stacks at 0x3971000 with a size of 1088 KB
[1][DEBUG] Received TLB Flush Interrupt
[1][DEBUG] Received TLB Flush Interrupt
[1][DEBUG] Received TLB Flush Interrupt
[1][DEBUG] Received TLB Flush Interrupt
[0][DEBUG] Set up TLS at 0x3a85120, tdata_size 0x0, tls_size 0x108
[0][DEBUG] Creating task 8 with priority 2 on core 1
[1][DEBUG] Received Wakeup Interrupt
[1][DEBUG] Task is available.
[1][DEBUG] Switching task from 1 to 8 (stack 0x383BD50 => 0x3982F60)
[0][DEBUG] Creating new task 9
[1][DEBUG] Switching FPU owner from task 6 to 8
[0][DEBUG] Create stacks at 0x3B9B000 with a size of 1088 KB
[1][DEBUG] Deallocating stacks at 0x3A86000 with a size of 1088 KB
[0][DEBUG] Received TLB Flush Interrupt
[1][DEBUG] Deallocate TLS at 0x3b9a000 (size 0x1000)
[0][DEBUG] Received TLB Flush Interrupt
[1][DEBUG] Received TLB Flush Interrupt
[1][DEBUG] sys_notify: invalid address to condition variable
[0][DEBUG] Set up TLS at 0x3a86120, tdata_size 0x0, tls_size 0x108
[0][DEBUG] Creating task 9 with priority 2 on core 0
[1][DEBUG] Received TLB Flush Interrupt
[1][DEBUG] Create condition variable queue
[1][DEBUG] Blocking task 8
[1][DEBUG] Only Idle Task is available.
[1][DEBUG] Switching task from 8 to 1 (stack 0x3982F60 => 0x383BD50)
debug_log_2C_64M.txt
debug_log_4C_128M.txt
debug_log_1C_64M.txt
Edit: Tested on windows with rusty-hermit at commit: 2bee7b3
from hermit-rs.
Can you check the current version in the branch devel
? I hope that I fix the issue.
from hermit-rs.
I tested locally on windows with 4 cores and this seems to have solved the problem.
The pipeline hermit-os/kernel#40 which tested the commit on ubuntu, windows and macos with 1 and 2 cores on qemu also completed without problems. Before the pipeline would get stuck when using SMP.
from hermit-rs.
Related Issues (20)
- Request for info: running hermit-based applications on top of Xen HOT 3
- Move cmath to hermit-builtins HOT 1
- rusty-demo fails to build on windows HOT 7
- failed to run rusty-hermit on QEMU qemu-system-aarch64 HOT 1
- Where do we mention that RustyHermit supports `aarch64`?
- Hermit doesn't work on aarch64: rusty-loader can't find DTB for aarch64 HOT 1
- Include `tcp` in the default features of `hermit-sys`
- hermit-abi 0.3.2 git tag and yanking explanation HOT 4
- Add platform support document to Rust docs HOT 1
- Enable generate-link-to-definition
- Support automatic rebuilds for path dependencies of kernel HOT 1
- Can't build with khronos-egl as dependency HOT 3
- Become a Tier 2 Rust target
- Newer kernel submodule required for RISC-V support HOT 4
- Compilation with Hermit dependency as part of a workspace fails HOT 1
- Networking config file HOT 4
- Benchmarking HOT 8
- Hermit randomness API
- Unable to read directory entries
- perf: rework laplace demo with ndarray
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from hermit-rs.