Warning: mysqli::__construct(): (HY000/1203): User howardkn already has more than 'max_user_connections' active connections in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\includes\artfuncs.php on line 21
Failed to connect to MySQL: (1203) User howardkn already has more than 'max_user_connections' active connections
Warning: mysqli::query(): Couldn't fetch mysqli in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\index.php on line 66
Article <86h6flunqa.fsf@linuxsc.com>
Deutsch   English   Français   Italiano  
<86h6flunqa.fsf@linuxsc.com>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!news.mixmin.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Tim Rentsch <tr.17687@z991.linuxsc.com>
Newsgroups: comp.arch
Subject: Re: Tonight's tradeoff
Date: Sun, 28 Apr 2024 15:27:41 -0700
Organization: A noiseless patient Spider
Lines: 163
Message-ID: <86h6flunqa.fsf@linuxsc.com>
References: <us9ffo$argb$1@dont-email.me> <us9vc5$ffl5$1@dont-email.me> <usaciv$ibv9$1@dont-email.me> <e7e6d152876f385e78404b06eef87121@www.novabbs.org> <usbngu$tq9s$1@dont-email.me> <uscf92$12ifq$1@dont-email.me> <4072ddfc6031310c0f2a3237e6cb455e@www.novabbs.org> <usda1n$18gea$1@dont-email.me> <cmgmuilsa9bco9oboe9c46igr6dogb2ikc@4ax.com> <usgdrh$2033i$1@dont-email.me> <thlruit3i6t2jq9dt90nfvbfaljs0beg4a@4ax.com> <86zfv4rat6.fsf@linuxsc.com> <id52vid449tib9q6gu1i07n2k7g3i1o3ts@4ax.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Injection-Date: Mon, 29 Apr 2024 00:27:44 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="c36476fd6bd91582cb5d0726d3f1692e";
	logging-data="1371881"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX19JAkzKicxjony0a0BXM9iR//1CpTb/CIc="
User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux)
Cancel-Lock: sha1:GhnNG3vjCUaCDdVTRlMlHEeyLFc=
	sha1:3mcnumRPxN829lop1ukh1MwmyEI=
Bytes: 7769

George Neuner <gneuner2@comcast.net> writes:

> On Mon, 11 Mar 2024 09:29:57 -0700, Tim Rentsch
> <tr.17687@z991.linuxsc.com> wrote:
>
>> George Neuner <gneuner2@comcast.net> writes:
>>
>>> On Fri, 8 Mar 2024 20:26:08 -0500, Robert Finch <robfi680@gmail.com>
>>> wrote:
>>>
>>>> I plan on having garbage collection as part of the OS.  There
>>>> is a shared hardware-card table involved.
>>>
>>> What kind?
>>> [Actually "kind" is the wrong word because any non-toy, real
>>> world GC will need to employ a combination of techniques.  So
>>> the question really should be "in what major class is your GC"?]
>>>
>>> Problem is - whatever you choose - it will be wrong and have bad
>>> performance for some important class of GC'd applications.
>>
>> I'm curious to know what you consider to be the different kinds,
>> or classes, of GC, and the same question for applications.
>>
>> Certainly, for any given GC implementation, one can construct an
>> application that does poorly with respect to that GC, but that
>> doesn't make the constructed application a "class".  For the
>> statement to have meaningful content there needs to be some kind
>> of identification of what are the classes of GCs, and what are
>> the classes of applications.
>
> Feeling mathematical are we?

If you're trying to say I make an effort to be accurate and
precise in my writing, I plead guilty as charged.

> Every application contains delineated portions of its overall
> allocation profile which correspond closely to portions of the
> profiles of other applications.
>
> If a given profile performs poorly under a given GC, it is
> reasonable to infer that other applications having corresponding
> profiles also will perform poorly while those profiles are in
> force.

An empty, circular observation.  Very disappointing.

> That said ...
>
>
>
> GC systems - including their associated allocator(s) - are categorized
> (better word?) by their behavior.  Unfortunately, behavior is
> described by a complex set of implementation choices.
>
> Understand that real world GC typically implement more than one
> algorithm, and often the algorithms are hybridized - derived from and
> relatable to published algorithms, but having unique mix of function
> that won't be found "as is" in any search of literature.  [In truth,
> GC literature tends to leave a lot as exercise for the reader.]
>
> GC behavior often is adaptive, reacting to run time conditions:  e.g.,
> based on memory fragmentation it could shift between non-moving
> mark/sweep and moving mark/compact.  It may also employ differing
> algorithms simultaneously in different spaces, such as being
> conservative in stacks while being precise in dynamic heaps, or being
> stop-world in thread private heaps while being concurrent or parallel
> in shared heaps.  Etc.
>
>
> Concurrent GC (aka incremental) runs as a co-routine with the mutator.
> These systems are distinguished by how they are triggered to run, and
> what bounds may be placed on their execution time.  There are
> concurrent systems having completely deterministic operation [their
> actual execution time, of course, may depend on factors beyond the
> GC's control, such as multitasking, caching or paging.]
>
> Parallel GC may be both prioritized and scheduled.  These systems may
> offer some guarantees about the percentage of (application) time given
> to collector vs mutator(s).
>
>
> Major choices:
>
>  -  precise or conservative?
>  -  moving or non-moving?
>  -  tracing (marking)?
>  -  copying / compacting?
>  -  stop-world, concurrent, or parallel?
>
>  -  single or multiple spaces?
>  -  semispaces?
>  -  generational?
>
> Minor choices:
>
>  -  software-only or hardware (MMU) assisted?
>  -  snapshot at beginning?
>
>  -  bump or block allocation?
>  -  allocation color?
>
>  -  free blocks coalesced? {if not compacting}
>
>  -  multiple mutators?
>  -  mutation color?
>  -  writable shared objects?
>  -  FROM-space mutation?
>  -  finalization?
>
>
> Note that all of these represent free dimensions in design.  As
> mentioned above, any particular system may implement multiple
> collection algorithms each embodying a different set of choices.

I'm familiar with many or perhaps most of the variations
and techniques used in garbage collection.  That isn't
what I was asking about.

> You may wonder why I didn't mention "sweeping" ... essentially it is
> because sequential scan is more an implementation detail than a
> technique.  Although "mark/sweep" is a well established technique, it
> is the marking (tracing) that really defines it.  Then too, modern
> collectors often are neither mark/sweep nor copying as presented in
> textbooks:  e.g., there are systems that mark and copy, systems that
> sweep and copy (without marking), and "copying" systems in which
> copies are logical and nothing actually changes address.
>
> Aside: all GC can be considered to use [logical] semispaces because
> all have the notion of segregated FROM-space and TO-space during
> collection.  True semispaces are a set of (address) contiguous spaces
> - not necessarily equally sized - which are rotated as targets for new
> allocation.  True semispaces do imply physical copying [but see the
> Treadmill for an example of "non-moving copy" using logical
> semispaces].
>
>
>
> So what do I consider to be the "kind" of a GC?
>
> The choices above pretty much define the extent of the design space
> [but note I did intentionally leave out reference counting].  However,
> the first 8 choices are structural, whereas the rest specify important
> characteristics but don't affect structure.
>
> A particular "kind" might be, e.g.,
>   "precise, generational, multispace, non-moving, concurrent
>    tracer".
> and so on.

In effect what you are saying is that if we list all the possible
attributes that a GC implementation might have, we can charactrize
what kind of GC it is by giving its value for each attribute.  Not
really a helpful statement.

> I'm guessing this probably didn't really answer your question,

Your comments didn't address either of my questions, nor as best
I can tell even make an effort to do so.

> but it was fun to write. ;-)

I see.  Next time I'll know better.