[Top][All Lists]

[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

Viua VM

reply via email to

[Prev in Thread] Current Thread [Next in Thread]