Hi Chris --

I don't mean to be disagreeable about the default, but true seems like the setting for smoother multitasking and more in the spirit of Squeak's liveness.  What is the rationale for false?

"false" is more robust for forked user Morphic scripts and UI priority. Thus, "false" means more liveness and less debuggers. "true" means less control and potentially more debuggers. :-)

High-priority, blocking processes cannot be fixed with such "scheduling trick". They must be treated on their own. Let's favor modularity, single-responsibility, and local knowledge to maintain this rather large system. :-)

Best,
Marcel

Am 26.03.2024 00:30:18 schrieb Chris Muller <asqueaker@gmail.com>:

Hi Marcel,

true means Processes running at the same priority are given fair time, round-robin style, as higher-priority processes return or go back to sleep.  This code forcing it to false appears to have been the root cause of the recent issues with source.squeak.org's responsiveness.  Clients were timing out because one big request would cause a backlog of 10 small requests to queue up behind it and, often, timeout.  Simply setting this true in a startup patch script seems to have fixed it.

There are no good explanations in the code for false.  The only one I can remember from this mailing list I think was that you can get away easier not protecting your code with Semaphores, and instead depend on the known process switching behavior of the VM.  Perhaps for ultra high-performance applications?  It feels application-specific to me.  According to the comment, it also diverges from the Blue Book specification.

I don't mean to be disagreeable about the default, but true seems like the setting for smoother multitasking and more in the spirit of Squeak's liveness.  What is the rationale for false?

Best,
  Chris


On Mon, Mar 25, 2024 at 12:00 PM Taeumel, Marcel via Squeak-dev <squeak-dev@lists.squeakfoundation.org> wrote:
Ah, this was "we have a new VM feature" migration code. We no longer need it, I suppose.

Can we make sure that the ReleaseBuilder sets this to "false" by default? :-)

Best,
Marcel

Am 25.03.2024 00:28:07 schrieb commits@source.squeak.org <commits@source.squeak.org>:

Chris Muller uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-cmm.1562.mcz

==================== Summary ====================

Name: Kernel-cmm.1562
Author: cmm
Time: 24 March 2024, 6:27:34.572036 pm
UUID: 886bf6b9-a56b-4131-accf-3867a3836658
Ancestors: Kernel-ct.1561

Allow processPreemptionYields: to persist across image saves, as purported by its comment.

=============== Diff against Kernel-ct.1561 ===============

Item was changed:
----- Method: ProcessorScheduler class>>startUp: (in category 'background process') -----
startUp: resuming

- Smalltalk processPreemptionYields ifTrue: [
- Smalltalk processPreemptionYields: false].
-
resuming ifTrue: [
Smalltalk installLowSpaceWatcher.
self installIdleProcess].!