Re: smrproxy v2

Liste des GroupesRevenir à cl c++ 
Sujet : Re: smrproxy v2
De : chris.m.thomasson.1 (at) *nospam* gmail.com (Chris M. Thomasson)
Groupes : comp.lang.c++
Date : 18. Oct 2024, 01:24:08
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <ves9r9$2v6q6$1@dont-email.me>
References : 1 2 3 4 5
User-Agent : Mozilla Thunderbird
On 10/17/2024 5:16 PM, Chris M. Thomasson wrote:
On 10/17/2024 4:40 PM, Chris M. Thomasson wrote:
On 10/17/2024 2:08 PM, jseigh wrote:
On 10/17/24 16:10, Chris M. Thomasson wrote:
On 10/17/2024 5:10 AM, jseigh wrote:
I replaced the hazard pointer logic in smrproxy.  It's now wait-free
instead of mostly wait-free.  The reader lock logic after loading
the address of the reader lock object into a register is now 2
instructions a load followed by a store.  The unlock is same
as before, just a store.
>
It's way faster now.
>
It's on the feature/003 branch as a POC.   I'm working on porting
it to c++ and don't want to waste any more time on c version.
>
No idea of it's a new algorithm.  I suspect that since I use
the term epoch that it will be claimed that it's ebr, epoch
based reclamation, and that all ebr algorithms are equivalent.
Though I suppose you could argue it's qsbr if I point out what
the quiescent states are.
>
I have to take a look at it! Been really busy lately. Shit happens.
>
>
There's a quick and dirty explanation at
http://threadnought.wordpress.com/
>
repo at https://github.com/jseigh/smrproxy
>
I'll need to create some memory access diagrams that
visualize how it works at some point.
>
Anyway if it's new, another algorithm to use without
attribution.
>
Interesting. From a quick view, it kind of reminds me of a distributed seqlock for some reason. Are you using an asymmetric membar in here? in smr_poll ?
 I remember a long time ago I was messing around where each thread had two version counters:
 pseudo code:
 per_thread
{
     word m_version[2];
       word acquire()
     {
         word ver = load(global_version);
         m_version[ver % 2] = ver ;
         return ver ;
     }
       void release(word ver)
     {
         m_version[ver % 2] = 0;
     }
}
  The global_version would only be incremented by the polling thread. This was WAY back. I think I might of posted about it on cpt.
 So, when a node was made unreachable, it would be included in the polling logic. The polling could increment the version counter then wait for all the threads prior m_versions to be zero. Collect the current generation of objects in a defer list. Then on the next cycle it would increment the version counter, wait until all threads prior versions were zero, then delete the defer count, and transfer the current gen to the defer.
 It went something like that.
 
Iirc, I was using FlushProcessWriteBuffers back then for an asymmetric barrier for my experiment. The polling thread would execute one after it increased the global version. Actualy, I can't remember where I placed it exactly, after or before. The defer list made things work.

Date Sujet#  Auteur
17 Oct 24 * smrproxy v266jseigh
17 Oct 24 +* Re: smrproxy v241Chris M. Thomasson
17 Oct 24 i`* Re: smrproxy v240jseigh
18 Oct 24 i `* Re: smrproxy v239Chris M. Thomasson
18 Oct 24 i  +* Re: smrproxy v22Chris M. Thomasson
18 Oct 24 i  i`- Re: smrproxy v21Chris M. Thomasson
18 Oct 24 i  `* Re: smrproxy v236jseigh
26 Oct 24 i   `* Re: smrproxy v235Chris M. Thomasson
26 Oct 24 i    `* Re: smrproxy v234jseigh
27 Oct 24 i     `* Re: smrproxy v233Chris M. Thomasson
28 Oct 24 i      `* Re: smrproxy v232jseigh
28 Oct 24 i       +* Re: smrproxy v228Chris M. Thomasson
28 Oct 24 i       i`* Re: smrproxy v227jseigh
28 Oct 24 i       i `* Re: smrproxy v226Chris M. Thomasson
28 Oct 24 i       i  `* Re: smrproxy v225jseigh
28 Oct 24 i       i   `* Re: smrproxy v224Chris M. Thomasson
29 Oct 24 i       i    +- Re: smrproxy v21Chris M. Thomasson
29 Oct 24 i       i    `* Re: smrproxy v222jseigh
29 Oct 24 i       i     +* Re: smrproxy v23Chris M. Thomasson
29 Oct 24 i       i     i`* Re: smrproxy v22jseigh
29 Oct 24 i       i     i `- Re: smrproxy v21Chris M. Thomasson
29 Oct 24 i       i     +* Re: smrproxy v25Chris M. Thomasson
29 Oct 24 i       i     i`* Re: smrproxy v24jseigh
29 Oct 24 i       i     i `* Re: smrproxy v23Chris M. Thomasson
30 Oct 24 i       i     i  `* Re: smrproxy v22jseigh
1 Nov 24 i       i     i   `- Re: smrproxy v21Chris M. Thomasson
29 Oct 24 i       i     `* Re: smrproxy v213Chris M. Thomasson
30 Oct 24 i       i      `* Re: smrproxy v212Chris M. Thomasson
30 Oct 24 i       i       `* Re: smrproxy v211jseigh
4 Nov 24 i       i        `* Re: smrproxy v210Chris M. Thomasson
4 Nov 24 i       i         `* Re: smrproxy v29jseigh
4 Nov 24 i       i          +* Re: smrproxy v23Muttley
4 Nov 24 i       i          i`* Re: smrproxy v22Chris M. Thomasson
9 Nov 24 i       i          i `- Re: smrproxy v21Chris M. Thomasson
12 Dec 24 i       i          `* Re: smrproxy v25Chris M. Thomasson
12 Dec 24 i       i           `* Re: smrproxy v24jseigh
12 Dec 24 i       i            `* Re: smrproxy v23Chris M. Thomasson
13 Dec 24 i       i             `* Re: smrproxy v22jseigh
26 Dec 24 i       i              `- Re: smrproxy v21Chris M. Thomasson
28 Oct 24 i       `* Re: smrproxy v23Chris M. Thomasson
28 Oct 24 i        +- Re: smrproxy v21Chris M. Thomasson
28 Oct 24 i        `- Re: smrproxy v21Chris M. Thomasson
29 Oct 24 +* Re: smrproxy v24Chris M. Thomasson
30 Oct 24 i+- Re: smrproxy v21Chris M. Thomasson
30 Oct 24 i`* Re: smrproxy v22Chris M. Thomasson
30 Oct 24 i `- Re: smrproxy v21Chris M. Thomasson
30 Oct 24 +* Re: smrproxy v22Chris M. Thomasson
30 Oct 24 i`- Re: smrproxy v21jseigh
2 Nov 24 +- Re: smrproxy v21Chris M. Thomasson
21 Nov 24 `* Re: smrproxy v217jseigh
23 Nov 24  `* Re: smrproxy v216jseigh
23 Nov 24   +* Re: smrproxy v23Chris M. Thomasson
24 Nov 24   i`* Re: smrproxy v22jseigh
24 Nov 24   i `- Re: smrproxy v21Chris M. Thomasson
24 Nov 24   `* Re: smrproxy v212jseigh
25 Nov 24    +* Re: smrproxy v27Chris M. Thomasson
25 Nov 24    i`* Re: smrproxy v26jseigh
25 Nov 24    i +* Re: smrproxy v22Chris M. Thomasson
25 Nov 24    i i`- Re: smrproxy v21Chris M. Thomasson
25 Nov 24    i `* Re: smrproxy v23Chris M. Thomasson
25 Nov 24    i  `* Re: smrproxy v22jseigh
26 Nov 24    i   `- Re: smrproxy v21Chris M. Thomasson
27 Nov 24    `* Re: smrproxy v24jseigh
9 Dec 24     `* Re: smrproxy v23jseigh
11 Dec 24      `* Re: smrproxy v22jseigh
12 Dec 24       `- Re: smrproxy v21Chris M. Thomasson

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal