[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Viuavm-commits] [SCM] Viua VM branch issue-81f1ebeb-fix-virtual-process
From: |
git |
Subject: |
[Viuavm-commits] [SCM] Viua VM branch issue-81f1ebeb-fix-virtual-process-scheduler updated. v0.9.0-2484-g93305ad |
Date: |
Sat, 22 Jun 2019 13:58:33 +0200 (CEST) |
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Viua VM".
The branch, issue-81f1ebeb-fix-virtual-process-scheduler has been updated
via 93305ade60951f45ba21598ddb67f8025db93ba9 (commit)
via 6828c141e783053ab0af31edfc4f059743cd47fc (commit)
via 5e38b5ab1e41b11a836a9b2a1e4bc024a5a814a5 (commit)
via 5ffdfbb10c766b94a9ddd71fa294b0608e8444d5 (commit)
via 0fa210b941afa29c7e0d85236ae06af760f99bfd (commit)
via 5f83b2108fec9590c267ccd7028ee78875709faf (commit)
via 0649a808835fcfc45c935a7aee25ce1e9342b66e (commit)
via cb9670bd1fb97ea3cc832fad3d902648c25c4afe (commit)
via fd73b62062ebc9a4741dc7936a073d09f69c2309 (commit)
via c19a06575cdba1d82326cbae0c1196eb4cf3c055 (commit)
via 56ad820094cfbdae9c5d94cef9ec9c2a4cb3c7df (commit)
via 00f3eb0fbeb0ce4aa6660d3c2a17b1fff6349c4d (commit)
via ae9ed09a4b14b6d764a6eeeef7d3f58a77a6f902 (commit)
via a378d7cd813f309926e866a14623a45a8a09383f (commit)
via 14591b43bdce048354fdbaab9197b62ea6b5712a (commit)
via a8ee2067e01087156fced13b815118f1c2a8a1f5 (commit)
via 4659bf22c59c6320619e5eda203125a7d8e03381 (commit)
via 387edca725ec364a7c6d96f0977d4d91232902b2 (commit)
via 000239b7e741c701e7ef10c4e98058925c7ce4d5 (commit)
via 1086f5b47fb204afb404fe87f9aeb914377362c6 (commit)
via f8469626a544da079a7db324c73ef28c1b13fda4 (commit)
via 7738a255445bbe9b15569ec117fd8679392e262d (commit)
via f9dc8b88f7b765e004138a4b87064e4c3e3d32a9 (commit)
via 8a0c7048ad28e49a622f6774a8c3003396c9e7ad (commit)
via 39227e87a1086fa3560284f322f2c024238de63d (commit)
via 922121320b891e87bd7d67a1fe87b6aff3ae5870 (commit)
via 6fde9b3b712ac136ea027710c8a7215358cdfd92 (commit)
via aa43e3c110dde2c6b9838bd019de641149dc9152 (commit)
via 53f2ad428e42e51393958da1012c124fba3caa3b (commit)
via 229083354b1951812f16634cb7afa8bbe51124ff (commit)
via db7225d705914d0952c651dda794eb56d7e81f33 (commit)
via 426dc470bf5ca3e43bf83d81c6ee3d8d5591c347 (commit)
via b71fc7e5fad5ed7f22b7f3df9a31c4d5c3b24096 (commit)
via b43063fafaa14f983f31523b8995dfd33c955301 (commit)
via ea80e10366fa1f50da5bf4c3e3a59c2575c0b591 (commit)
via 1a8c6329d72d19c9854bab468c12a9316f2ce682 (commit)
via aab6742ff214d91c3defd35fce75a7ac4c8e7b70 (commit)
via 8425d100701ead4012d339877aa8261b49f5e582 (commit)
via 6e31fc74b44e2aa44846591d9a87ddb4ea8ebe03 (commit)
via 03c05be2ff4503b3d0cfbb32a80e003a1e32706c (commit)
via b84c4c56624655912ed021f72d6ff478f150b43b (commit)
via 3ad0cadc95ffcacd70ef76b27075b6342cb3f3e3 (commit)
from 2393d19478c87fd906f4856e96de7ff4696a6353 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 93305ade60951f45ba21598ddb67f8025db93ba9
Author: Marek Marecki <address@hidden>
Date: Sat Jun 22 13:54:37 2019 +0200
Fix: do not ever use shared data structure without locking it
That is a receipe for disaster, even if it may look safe at first.
commit 6828c141e783053ab0af31edfc4f059743cd47fc
Author: Marek Marecki <address@hidden>
Date: Sat Jun 22 13:53:23 2019 +0200
Fix: cache the size for logging
It could change between the first and the second call which would
produce weird, confusing results.
commit 5e38b5ab1e41b11a836a9b2a1e4bc024a5a814a5
Author: Marek Marecki <address@hidden>
Date: Sat Jun 22 13:52:05 2019 +0200
Use type aliases to avoid writing type names more than once
This way we can change them easily in the future and have them all in
one place for reference.
commit 5ffdfbb10c766b94a9ddd71fa294b0608e8444d5
Author: Marek Marecki <address@hidden>
Date: Sat Jun 22 13:41:11 2019 +0200
Log how many processes would be given up by a scheduler
commit 0fa210b941afa29c7e0d85236ae06af760f99bfd
Author: Marek Marecki <address@hidden>
Date: Sat Jun 22 13:24:47 2019 +0200
Use scheduler ID instead of this-pointer to identify schedulers in logs
commit 5f83b2108fec9590c267ccd7028ee78875709faf
Author: Marek Marecki <address@hidden>
Date: Sat Jun 22 13:23:48 2019 +0200
Assign IDs to process schedulers
This will make scheduler ID deterministic and make it easier to
recognise them in logs.
commit 0649a808835fcfc45c935a7aee25ce1e9342b66e
Author: Marek Marecki <address@hidden>
Date: Sat Jun 22 12:11:42 2019 +0200
Add more logging during kernel startup
commit cb9670bd1fb97ea3cc832fad3d902648c25c4afe
Author: Marek Marecki <address@hidden>
Date: Sat Jun 22 00:52:18 2019 +0200
Add the basic work-stealing logic
For now, the give_up_processes() will never return anything but that's
OK. The real implementation will come later.
commit fd73b62062ebc9a4741dc7936a073d09f69c2309
Author: Marek Marecki <address@hidden>
Date: Fri Jun 21 22:52:53 2019 +0200
Set the stage for stealing processes
commit c19a06575cdba1d82326cbae0c1196eb4cf3c055
Author: Marek Marecki <address@hidden>
Date: Fri Jun 21 22:47:40 2019 +0200
Make logs "atomic"
Maybe "atomic" is not the best way to describe them, but at least they
won't be mangled by racing to std::cerr.
commit 56ad820094cfbdae9c5d94cef9ec9c2a4cb3c7df
Author: Marek Marecki <address@hidden>
Date: Fri Jun 21 22:45:14 2019 +0200
Add comments explaining the kernel launch process
It is useful to have some notes *why* something was done the way it was
done in case we forget that why (which is often the case after
revisiting the code after a long time).
commit 00f3eb0fbeb0ce4aa6660d3c2a17b1fff6349c4d
Author: Marek Marecki <address@hidden>
Date: Fri Jun 21 22:28:51 2019 +0200
Revert "Fix: bootstrap the main scheduler after every other one was spawned"
This reverts commit 14591b43bdce048354fdbaab9197b62ea6b5712a.
Actually, that wasn't the best idea when combined with the condition
that a scheduler should shut down when there are no processes running.
It created a race condition:
- all schedulers start running
- they notice that there are no processes and immediately shut down
- the main scheduler is bootstrapped, but it is already shut down
- the VM exists because it has nothing to do
That was not the result I wanted to achieve.
commit ae9ed09a4b14b6d764a6eeeef7d3f58a77a6f902
Author: Marek Marecki <address@hidden>
Date: Fri Jun 21 22:27:21 2019 +0200
Fix: shut down only if there are no processes running
If there is at least one processes schedulers should wait because that
one process might spawn new processes.
commit a378d7cd813f309926e866a14623a45a8a09383f
Author: Marek Marecki <address@hidden>
Date: Fri Jun 21 22:24:13 2019 +0200
Fix: remove mailboxes of processes that are finished
If the mailboxes wouldn't be collected two things would happen (both of
them pretty bad):
- they would be leaked; although they wouldn't appear as leaked in
Valgrind they also wouldn't be freed at all and would linger until the
whole VM shut down
- they might leak their messages to a different process if a PID was
ever resued (that would be BAD!)
commit 14591b43bdce048354fdbaab9197b62ea6b5712a
Author: Marek Marecki <address@hidden>
Date: Fri Jun 21 21:47:47 2019 +0200
Fix: bootstrap the main scheduler after every other one was spawned
It is in good taste to finish the preparations before actually starting
work. So, yeah, let's just do that.
commit a8ee2067e01087156fced13b815118f1c2a8a1f5
Author: Marek Marecki <address@hidden>
Date: Fri Jun 21 21:31:07 2019 +0200
Fix: actually spawn the other schedulers
The broken condition only ever spawned one scheduler.
commit 4659bf22c59c6320619e5eda203125a7d8e03381
Author: Marek Marecki <address@hidden>
Date: Fri Jun 21 21:06:49 2019 +0200
Notify the kernel about process spawns and deaths
We need this to keep accurate process counts (now), and to let idle
schedulers know when there are newly spawned processes to grab (later).
commit 387edca725ec364a7c6d96f0977d4d91232902b2
Author: Marek Marecki <address@hidden>
Date: Fri Jun 21 20:57:58 2019 +0200
Report the size of the scheduler's process queue
This will be needed when I will be implementing load balancing and
process stealing algorithms.
commit 000239b7e741c701e7ef10c4e98058925c7ce4d5
Author: Marek Marecki <address@hidden>
Date: Fri Jun 21 19:36:34 2019 +0200
Use std:: more
commit 1086f5b47fb204afb404fe87f9aeb914377362c6
Author: Marek Marecki <address@hidden>
Date: Fri Jun 21 19:20:18 2019 +0200
Explain why is this counter needed
It just makes life easier for me.
commit f8469626a544da079a7db324c73ef28c1b13fda4
Author: Marek Marecki <address@hidden>
Date: Wed Jun 12 22:18:43 2019 +0200
Launch additional schedulers
commit 7738a255445bbe9b15569ec117fd8679392e262d
Author: Marek Marecki <address@hidden>
Date: Wed Jun 12 22:18:10 2019 +0200
A little bit more logging
commit f9dc8b88f7b765e004138a4b87064e4c3e3d32a9
Author: Marek Marecki <address@hidden>
Date: Wed Jun 12 21:29:36 2019 +0200
Add synchronisation around the process queue
We need the synchronisation to avoid corrupting the state when the
communication between schedulers gets added back.
commit 8a0c7048ad28e49a622f6774a8c3003396c9e7ad
Author: Marek Marecki <address@hidden>
Date: Tue Jun 11 22:09:32 2019 +0200
OK, new scheduler kinda-sorta works
But this commit is a mess. Also - we used to be able to run unlimited
number of schedulers and now we have only one (and a woefully
inefficient one).
commit 39227e87a1086fa3560284f322f2c024238de63d
Author: Marek Marecki <address@hidden>
Date: Wed May 22 22:15:40 2019 +0200
Work in progress
commit 922121320b891e87bd7d67a1fe87b6aff3ae5870
Author: Marek Marecki <address@hidden>
Date: Thu May 2 00:50:35 2019 +0200
Compile with new scheduler
The kernel now accepts program to run and shuts down immediately.
commit 6fde9b3b712ac136ea027710c8a7215358cdfd92
Author: Marek Marecki <address@hidden>
Date: Thu May 2 00:50:24 2019 +0200
Fix for FFI call request
commit aa43e3c110dde2c6b9838bd019de641149dc9152
Author: Marek Marecki <address@hidden>
Date: Wed May 1 22:30:15 2019 +0200
Fill missing definitions of Process_scheduler member functions
commit 53f2ad428e42e51393958da1012c124fba3caa3b
Author: Marek Marecki <address@hidden>
Date: Wed May 1 22:29:52 2019 +0200
Remove the need for naked pointrs when registering a foreign call
commit 229083354b1951812f16634cb7afa8bbe51124ff
Author: Marek Marecki <address@hidden>
Date: Wed May 1 21:26:04 2019 +0200
Replace pointers in Foreign_function_call with references
commit db7225d705914d0952c651dda794eb56d7e81f33
Author: Marek Marecki <address@hidden>
Date: Wed May 1 13:52:36 2019 +0200
Update new scheduler's interface
Add declarations for all functions needed by the code. Now their
definitions are needed.
commit 426dc470bf5ca3e43bf83d81c6ee3d8d5591c347
Author: Marek Marecki <address@hidden>
Date: Wed May 1 13:51:48 2019 +0200
Update all references to the scheduler
Also, update copyright notices.
commit b71fc7e5fad5ed7f22b7f3df9a31c4d5c3b24096
Author: Marek Marecki <address@hidden>
Date: Wed May 1 13:51:14 2019 +0200
Fix Makefile
commit b43063fafaa14f983f31523b8995dfd33c955301
Author: Marek Marecki <address@hidden>
Date: Tue Apr 30 23:06:50 2019 +0200
Port some of the code to use new scheduler type
The declarations now have to get matching definitions.
commit ea80e10366fa1f50da5bf4c3e3a59c2575c0b591
Author: Marek Marecki <address@hidden>
Date: Mon Apr 29 12:49:24 2019 +0200
Move to new scheduler
commit 1a8c6329d72d19c9854bab468c12a9316f2ce682
Author: Marek Marecki <address@hidden>
Date: Mon Apr 29 12:48:53 2019 +0200
Lead function declarations with auto
Be consistent with the rest of the code.
commit aab6742ff214d91c3defd35fce75a7ac4c8e7b70
Author: Marek Marecki <address@hidden>
Date: Mon Apr 29 12:47:58 2019 +0200
Comment the source code of Stack and Process
To add a little bit of documentation why certain member variables are
there, and what are they used for.
commit 8425d100701ead4012d339877aa8261b49f5e582
Author: Marek Marecki <address@hidden>
Date: Mon Apr 29 12:18:17 2019 +0200
Another migrating commit
Bootstrap the new process scheduler.
commit 6e31fc74b44e2aa44846591d9a87ddb4ea8ebe03
Author: Marek Marecki <address@hidden>
Date: Mon Apr 29 12:16:38 2019 +0200
Rename the begin() member function of Process to start()
The begin() member function was overloaded on const-ness of the object
it was called on but the overload was only accidental. One was an
iterator, the other was used to "start" the process. As this could lead
to confusion easily, the "starting" function was renamed.
commit 03c05be2ff4503b3d0cfbb32a80e003a1e32706c
Author: Marek Marecki <address@hidden>
Date: Mon Apr 29 12:15:08 2019 +0200
Cleanup the machine header a bit
Use constexpr and enum to avoid the requirement for a separate
"implementation" file.
commit b84c4c56624655912ed021f72d6ff478f150b43b
Author: Marek Marecki <address@hidden>
Date: Thu Apr 25 15:01:56 2019 +0200
Update the default number of schedulers
Overallocate by default.
commit 3ad0cadc95ffcacd70ef76b27075b6342cb3f3e3
Author: Marek Marecki <address@hidden>
Date: Wed Apr 24 21:18:57 2019 +0200
Update Clang flags to Clang 8
-----------------------------------------------------------------------
Summary of changes:
Makefile | 9 +-
concurrent.asm | 8 +-
include/viua/kernel/kernel.h | 24 +-
include/viua/loader.h | 2 +-
include/viua/machine.h | 12 +-
include/viua/process.h | 124 ++++---
include/viua/scheduler/ffi.h | 10 +-
include/viua/scheduler/process.h | 101 +++++-
src/front/asm/generate.cpp | 4 +-
src/kernel/kernel.cpp | 153 +++++++--
src/loader.cpp | 2 +-
src/machine.cpp | 26 --
src/process.cpp | 24 +-
src/process/dispatch.cpp | 8 +-
src/process/instr/bits.cpp | 4 +-
src/process/instr/calls.cpp | 16 +-
src/process/instr/cast.cpp | 2 +-
src/process/instr/closure.cpp | 4 +-
src/process/instr/concurrency.cpp | 28 +-
src/process/instr/linking.cpp | 6 +-
src/process/instr/tcmechanism.cpp | 8 +-
src/process/stack.cpp | 46 +--
src/scheduler/ffi/request.cpp | 18 +-
src/scheduler/process.cpp | 661 +++++++++++++++++++++++++++++++++++++-
src/scheduler/vps.cpp | 2 +-
25 files changed, 1086 insertions(+), 216 deletions(-)
delete mode 100644 src/machine.cpp
hooks/post-receive
--
Viua VM
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Viuavm-commits] [SCM] Viua VM branch issue-81f1ebeb-fix-virtual-process-scheduler updated. v0.9.0-2484-g93305ad,
git <=