SRW lock implementation - url broken

By: Travis Downs (travis.downs.delete@this.gmail.com), January 14, 2020 11:06 am
Room: Moderated Discussions
Michael S (already5chosen.delete@this.yahoo.com) on January 14, 2020 2:07 am wrote:
> Nksingh (None.delete@this.none.non) on January 9, 2020 1:17 pm wrote:
> > Michael S (already5chosen.delete@this.yahoo.com) on January 7, 2020 1:35 am wrote:
> > > Can you point me to explanation of how SRW locks are implemented under the hood?
> > > "No additional memory" is intriguing and right now (still sort of morning here, not
> > > the time of day when I am able to think) I can't figure out how they did it.
> > > Or, may be, you could give us a short explanation right here?
> > >
> >
> > It is helpful to understand mcs locks (aka queued spinlocks). https://lwn.net/Articles/590243/
> >
> > The key is that only the list of waiting threads needs to be tracked, which can be done as a list of
> > linked "wait block" elements on the waiting threads' stacks. When the lock is held and there are waiters,
> > the lock points at the last element added to the linked list. This list can be maintained using compare
> > and swap operations with guaranteed forward progress for adding elements to the list.
> >
> > The mcs lock is described as a spinning lock, but instead of the waiter spinning, the waiter can
> > block and the lock releaser can wake up the waiter based on information stored in the wait block.
> > Recent versions of NT use a wake threads by ID kernel primitive to wake up a thread. In practice
> > on NT, we spin for a while before blocking, so it's really like an mcs lock with blocking added.
>
>
> Thank you.
>
> I finally found a time to read it.
> There are still a few questions:
> 1. The article describes a MCS lock as a record that consists from pointer + integer. How
> does Microsoft's implementation compress it into into single pointer-sized word? By requiring
> alignment (needed anyway for atomicity) and using LS bit for 'Locked' flag?
> On WIn64 there are several more bits available in the MS part of the pointer value, but SRW locks exist
> on Win32 as well, so I'd guess that implementation does not rely on availability of MS bits.

I think the article describes it wrong. I think "lock" itself (the shared structure) is only a single pointer, that's why mcs_spin_lock takes `struct mcs_spinlock **lock` and it updates that pointer. So the pointer is null when the lock is available.

So all the diagrams should not show any second 0/1 field in that "MCS lock" thing on the left.

That's consistent with the MCS paper I linked which only uses a pointer for the lock itself, but all the per-waiter nodes have both a next pointer and locked indicator.

I can't actually confirm this because it seems like MCS lock has ~zero actual uses in the kernel, unless I'm searching wrong.

>
> 2. As you said, infinite spinning described in the article is appropriate for kernel locking, but for user-mode
> locking one wants to spin 1 time (or, may be a few times, say 20) and then switch to blocking/waiting/sleeping.
> As you say, in this situation there is no problem of space, since all housekeeping is done on waiter's stack.
> But I suppose that you don't want to use heavy operations like CreateEvent() during each and every wait. So there
> should be some sort of predefined synchronization object, probably one per thread, that is placed in known location
> (somewhere in TLS?) and shared by all SRW locks of given process. Is it a correct description?

I don't know how Windows does it for SRW lock, but that's one approach. IIRC Windows CRITICAL_SECTION creates the waiter object lazily when there is contention.

Windows is a bit different than Linux in that you explicitly create the objects to wait on, e.g., via CreateEvent and you get a kernel handle. Futex is different in that you don't really need to create/register the futex: it just comes into existence when some futex call is made and (presumably) ceases to exist from the kernel's PoV when no one is waiting on it. Also, futex has coupling between the userspace control word (i.e., the kernel knows about it), but that's not the case on Windows with Event objects: the control word(s) you use in userspace are just used in userspace.

It is possible that SRW locks use a futex-like approach and don't use the Event mechanism. It would be pretty easy to check by looking at the user-mode assembly.

>
> 3. When releaser found out that there are waiter(s), how does it know if the first waiter in line
> is still spinning (and thus doesn't need to be awoken) or already blocked==waiting==sleeping?

Presumably the waiters can communicate that information via the control word in their node. E.g., they initially set the node to a spinning state, spin on it, and if that fails, they set it to a blocked state and sleep on their event (or whatever sleep mechanism they use).

Yes, these userspace state changes followed by system calls are racy, but that has to handled somehow anyways. On Windows, that often works because the events have memory: i.e., the waiter writes their control word, then blocks, and if the waker races in between those two events (sees the "waiting flag" set, and then calls wake on the event before the waiter actually slept), it still works because the event maintains the triggered state so the subsequent wait call is a no-op.

Other strategies are possible (e.g., a futex-like approach where the race is closed by letting the kernel also know about the control word).

>
> >
> > Compared to a critical section, an srw lock exclusive uncontended acquire
> > should be about the same. The release should also be about the same.
> >
>
> If uncontended case is as fast as critical section then it could be said that SRW
> obsoletes critical sections for all users except those few who need nested enter/leave
> or use advanced features like manual control of spin count or TryEnter.
> Or am I missing something?

It seems like it. If we go by the Linux kernel example, acquire and release are just a CAS each, plus a really small amount of work to set up the stack-local node.

Note that some locks "just" have a plain store for unlock on x86, since that is enough to provide the release semantics - but this only works with very simple locks where waiters never modify the control word, so no info is lost by an unconditional write (or perhaps some type of lock where losing info can be tolerated [1]). Those locks might have roughly half the uncontended cost. I don't think it applies to CRITICAL_SECTION in Windows though.




[1] One could imagine a lock that uses the control word to indicate the usual stuff like "some waiters", and then the unlocker does first a check to see if the lock is in the uncontended state (i.e., just the "locked" bit set, no waiters indicated), and if so does a plain store, but if not falls back to the slower full handling path using CAS. Now there is a race between that check and the store, but maybe you "fix" that by having the waiters periodically wake up and check to see what's going on, or a separate thread that does that (e.g., checks for locks that are unlocked but have waiters), and newly arriving lockers can make that check too. Since this race may often be rare, maybe it doesn't happen often. Frankly this sounds terrible, but if you *really* want to cut out of one of the CAS operations you could try it.

< Previous Post in ThreadNext Post in Thread >
TopicPosted ByDate
Nuances related to Spinlock implementation and the Linux SchedulerBeastian2020/01/03 12:46 PM
  Nuances related to Spinlock implementation and the Linux SchedulerMontaray Jack2020/01/03 01:14 PM
    Nuances related to Spinlock implementation and the Linux SchedulerMontaray Jack2020/01/03 01:49 PM
  No nuances, just buggy code (was: related to Spinlock implementation and the Linux Scheduler)Linus Torvalds2020/01/03 07:05 PM
    No nuances, just buggy code (was: related to Spinlock implementation and the Linux Scheduler)Beastian2020/01/04 12:03 PM
    No nuances, just buggy code (was: related to Spinlock implementation and the Linux Scheduler)Malte Skarupke2020/01/04 12:22 PM
      No nuances, just buggy code (was: related to Spinlock implementation and the Linux Scheduler)Linus Torvalds2020/01/04 01:31 PM
        No nuances, just buggy code (was: related to Spinlock implementation and the Linux Scheduler)dmcq2020/01/05 07:33 AM
        No nuances, just buggy code (was: related to Spinlock implementation and the Linux Scheduler)smeuletz2020/01/06 02:05 AM
          Do not blame others for your unfinished jobsmeuletz2020/01/06 02:08 AM
            Where did all the experts come from? Did Linus get linked? (NT)anon2020/01/06 04:27 AM
              PhoronixGabriele Svelto2020/01/06 05:04 AM
                PhoronixSalvatore De Dominicis2020/01/06 07:59 AM
            Do not blame anyone. Please give polite, constructive criticismChester2020/01/06 09:17 AM
              Do not blame anyone. Please give polite, constructive criticismsmeuletz2020/01/06 10:11 AM
                Do not blame anyone. Please give polite, constructive criticismChester2020/01/06 10:54 AM
                  Do not blame anyone. Please give polite, constructive criticismsmeuletz2020/01/06 11:33 AM
                    Do not blame anyone. Please give polite, constructive criticismLinus Torvalds2020/01/06 12:58 PM
                      Do not blame anyone. Please give polite, constructive criticismGionatan Danti2020/01/06 01:13 PM
                        Do not blame anyone. Please give polite, constructive criticismLinus Torvalds2020/01/06 01:28 PM
                          Do not blame anyone. Please give polite, constructive criticismGionatan Danti2020/01/06 01:52 PM
                          Do not blame anyone. Please give polite, constructive criticismJohn Scott2020/01/10 08:48 AM
                          Do not blame anyone. Please give polite, constructive criticismsupernovas2020/01/10 10:01 AM
                            Do not blame anyone. Please give polite, constructive criticismLinus Torvalds2020/01/10 12:45 PM
                          Do not blame anyone. Please give polite, constructive criticismGDan2020/04/06 03:10 AM
                            OracleAnon32020/04/07 06:42 AM
                      Do not blame anyone. Please give polite, constructive criticismsmeuletz2020/01/07 04:07 AM
                        Do not blame anyone. Please give polite, constructive criticismSimon Farnsworth2020/01/07 01:40 PM
                        Do not blame anyone. Please give polite, constructive criticismEtienne2020/01/08 02:08 AM
                          Do not blame anyone. Please give polite, constructive criticismsmeuletz2020/01/08 02:18 AM
                            Do not blame anyone. Please give polite, constructive criticismMichael S2020/01/08 02:56 AM
                      Not deprecating irrelevant API: sched_yield() on quantum computers?smeuletz2020/01/07 04:34 AM
                      Do not blame anyone. Please give polite, constructive criticismmagicalgoat2020/01/09 05:58 PM
                        Do not blame anyone. Please give polite, constructive criticismLinus Torvalds2020/01/09 10:37 PM
                          Do not blame anyone. Please give polite, constructive criticismAnon32020/01/10 04:40 PM
                  Do not blame anyone. Please give polite, constructive criticismrwessel2020/01/06 10:04 PM
                Do not blame anyone. Please give polite, constructive criticismLinus Torvalds2020/01/06 12:11 PM
                  Do not blame anyone. Please give polite, constructive criticismGabriele Svelto2020/01/06 02:36 PM
        No nuances, just buggy code (was: related to Spinlock implementation and the Linux Scheduler)Howard Chu2020/01/09 11:39 PM
          No nuances, just buggy code (was: related to Spinlock implementation and the Linux Scheduler)Linus Torvalds2020/01/10 12:30 PM
      No nuances, just buggy code (was: related to Spinlock implementation and the Linux Scheduler)president ltd2020/01/04 02:44 PM
    No nuances, just buggy code (was: related to Spinlock implementation and the Linux Scheduler)Jörn Engel2020/01/04 12:34 PM
      No nuances, just buggy code (was: related to Spinlock implementation and the Linux Scheduler)Emil Briggs2020/01/04 01:13 PM
        No nuances, just buggy code (was: related to Spinlock implementation and the Linux Scheduler)Jörn Engel2020/01/04 01:46 PM
      No nuances, just buggy code (was: related to Spinlock implementation and the Linux Scheduler)Linus Torvalds2020/01/04 02:24 PM
        No nuances, just buggy code (was: related to Spinlock implementation and the Linux Scheduler)Linus Torvalds2020/01/04 03:54 PM
          No nuances, just buggy code (was: related to Spinlock implementation and the Linux Scheduler)Jörn Engel2020/01/05 10:21 AM
            No nuances, just buggy code (was: related to Spinlock implementation and the Linux Scheduler)Linus Torvalds2020/01/05 12:42 PM
              FUTEX_LOCK_PI performanceJörn Engel2020/01/05 02:45 PM
                FUTEX_LOCK_PI performanceLinus Torvalds2020/01/05 04:30 PM
                  FUTEX_LOCK_PI performanceJörn Engel2020/01/05 07:03 PM
                    FUTEX_LOCK_PI performanceRichardC2020/01/06 07:11 AM
                      FUTEX_LOCK_PI performanceLinus Torvalds2020/01/06 01:11 PM
                  FUTEX_LOCK_PI performanceGabriele Svelto2020/01/06 03:20 AM
                    FUTEX_LOCK_PI performancexilun2020/01/06 05:19 PM
                    FUTEX_LOCK_PI performanceKonrad Schwarz2020/01/13 04:36 AM
                      FUTEX_LOCK_PI performanceGabriele Svelto2020/01/13 04:53 AM
                      FUTEX_LOCK_PI performanceSimon Farnsworth2020/01/13 05:36 AM
                      FUTEX_LOCK_PI performancerwessel2020/01/13 06:22 AM
    No nuances, just buggy code (was: related to Spinlock implementation and the Linux Scheduler)rainstar2020/01/04 10:58 PM
      No nuances, just buggy code (was: related to Spinlock implementation and the Linux Scheduler)Charles Ellis2020/01/05 04:00 AM
        No nuances, just buggy code (was: related to Spinlock implementation and the Linux Scheduler)Richard2020/01/05 09:58 AM
          It's hard to separateMichael S2020/01/05 11:17 AM
            It's hard to separaterainstared2020/01/06 01:52 AM
              It's hard to separateDavid Kanter2020/01/08 09:27 AM
                It's hard to separateAnon2020/01/08 09:37 PM
                  It's hard to separatenone2020/01/08 11:50 PM
                    It's hard to separateAnon2020/01/09 01:41 AM
                      It's hard to separatenone2020/01/09 03:54 AM
                        It's hard to separategallier22020/01/09 04:19 AM
                          It's hard to separateAnon2020/01/09 05:12 AM
                            It's hard to separateAdrian2020/01/09 05:24 AM
                              It's hard to separategallier22020/01/09 05:58 AM
                                It's hard to separateAdrian2020/01/09 07:09 AM
                            It's hard to separategallier22020/01/09 05:42 AM
                        It's hard to separateAdrian2020/01/09 04:41 AM
                        It's hard to separateAnon2020/01/09 05:24 AM
                          It's hard to separategallier22020/01/09 06:07 AM
                          It's hard to separateDavid Hess2020/01/09 09:27 AM
                            It's hard to separateAdrian2020/01/09 10:15 AM
                              It's hard to separateDavid Hess2020/01/09 10:45 AM
                                It's hard to separateAnon2020/01/09 11:15 AM
                                  It's hard to separateAdrian2020/01/09 11:51 AM
                                    It's hard to separateBrett2020/01/09 01:49 PM
                                      Zilog Z8000Brett2020/01/10 10:53 PM
                                        Zilog Z8000David Hess2020/01/11 07:06 AM
                                          Zilog Z8000Adrian2020/01/11 07:29 AM
                                            Zilog Z8000David Hess2020/01/11 08:45 AM
                                              Zilog Z8000Ricardo B2020/01/11 08:04 PM
                                                Zilog Z8000Ronald Maas2020/01/12 10:47 AM
                                                  Zilog Z8000Ricardo B2020/01/12 12:15 PM
                                                    Zilog Z8000Anon2020/01/12 11:34 PM
                                                      Zilog Z8000Jose2020/01/13 01:23 AM
                                                        Zilog Z8000gallier22020/01/13 01:42 AM
                                                          Zilog Z8000Jose2020/01/13 10:04 PM
                                                            Zilog Z8000rwessel2020/01/13 10:40 PM
                                                              Zilog Z8000David Hess2020/01/13 11:35 PM
                                                                Zilog Z8000Simon Farnsworth2020/01/14 03:56 AM
                                                                  Zilog Z8000Michael S2020/01/14 04:09 AM
                                                                    Zilog Z8000Simon Farnsworth2020/01/14 05:06 AM
                                                                      Zilog Z8000David Hess2020/01/14 10:22 AM
                                                                  Zilog Z8000David Hess2020/01/14 10:15 AM
                                                                Zilog Z8000rwessel2020/01/14 04:12 PM
                                                                  286 16 bit I/OTim McCaffrey2020/01/15 11:25 AM
                                                                    286 16 bit I/ODavid Hess2020/01/15 09:17 PM
                                                      Zilog Z8000Ricardo B2020/01/13 11:52 AM
                                                        Zilog Z8000Anon2020/01/13 12:25 PM
                                                          Zilog Z8000David Hess2020/01/13 06:38 PM
                                                            Zilog Z8000rwessel2020/01/13 07:16 PM
                                                              Zilog Z8000David Hess2020/01/13 07:47 PM
                                                          Zilog Z8000someone2020/01/14 07:54 AM
                                                            Zilog Z8000Anon2020/01/14 08:31 AM
                                                          Zilog Z8000Ricardo B2020/01/14 06:29 PM
                                                  Zilog Z8000Simon Farnsworth2020/01/15 03:26 AM
                                                    Zilog Z8000Tim McCaffrey2020/01/15 11:27 AM
                                                      Zilog Z8000Simon Farnsworth2020/01/15 02:32 PM
                                                    Zilog Z8000Ricardo B2020/01/15 03:47 PM
                                                      Zilog Z8000Anon2020/01/15 04:08 PM
                                                        Zilog Z8000Ricardo B2020/01/15 05:16 PM
                                                          Zilog Z8000Anon2020/01/15 05:31 PM
                                                            Zilog Z8000Ricardo B2020/01/15 06:46 PM
                                                              Zilog Z8000Anon2020/01/15 07:04 PM
                                                                Zilog Z8000David Hess2020/01/15 09:53 PM
                                                                Zilog Z8000Ricardo B2020/01/16 07:27 PM
                                                                  Zilog Z8000Anon2020/01/16 08:33 PM
                                                                    Zilog Z8000Ronald Maas2020/01/17 12:05 AM
                                                                      Zilog Z8000Anon2020/01/17 08:15 AM
                                                                    Zilog Z8000Ricardo B2020/01/17 02:59 PM
                                                                      Zilog Z8000Anon2020/01/17 07:40 PM
                                                                        Zilog Z8000Ricardo B2020/01/18 08:42 AM
                                                                          Zilog Z8000gallier22020/01/19 08:02 AM
                                                                    Zilog Z8000David Hess2020/01/18 07:12 AM
                                                            Zilog Z8000David Hess2020/01/15 09:49 PM
                                                          Zilog Z8000gallier22020/01/16 12:57 AM
                                                      Zilog Z8000Simon Farnsworth2020/01/16 02:30 AM
                                                        IBM PC successEtienne2020/01/16 06:42 AM
                                                        Zilog Z8000Ricardo B2020/01/16 07:32 PM
                                                          Zilog Z8000Brett2020/01/17 01:38 AM
                                                            Zilog Z8000David Hess2020/01/18 07:28 AM
                                                          Zilog Z8000David Hess2020/01/18 07:22 AM
                                                    Zilog Z8000David Hess2020/01/15 09:30 PM
                                            Zilog Z8000Maxwell2020/01/11 09:07 AM
                                              Zilog Z8000David Hess2020/01/11 09:40 AM
                                                Zilog Z8000Maxwell2020/01/11 10:08 AM
                                                  Zilog Z8000Ricardo B2020/01/11 08:42 PM
                                                    8086 does NOT have those addressing modesDevin2020/01/12 02:13 PM
                                                      8086 does NOT have those addressing modesRicardo B2020/01/12 06:46 PM
                                                        8086 does NOT have those addressing modesAnon2020/01/13 05:10 AM
                                                          8086 does NOT have those addressing modesgallier22020/01/13 06:07 AM
                                                            8086 does NOT have those addressing modesAnon2020/01/13 07:09 AM
                                                              8086 does NOT have those addressing modesRicardo B2020/01/13 11:48 AM
                                                          8086 does NOT have those addressing modesMichael S2020/01/13 07:40 AM
                                                            Zilog Z8000Ronald Maas2020/01/13 09:44 AM
                                                              Zilog Z8000Anon2020/01/13 04:32 PM
                                                          8086 does NOT have those addressing modesRicardo B2020/01/13 11:24 AM
                                                            8086 does NOT have those addressing modesrwessel2020/01/13 03:59 PM
                                                              8086 does NOT have those addressing modesDavid Hess2020/01/13 07:12 PM
                                                                8086 does NOT have those addressing modesrwessel2020/01/13 07:28 PM
                                                                  8086 does NOT have those addressing modesDavid Hess2020/01/13 07:51 PM
                                                          8086 does NOT have those addressing modesDavid Hess2020/01/13 06:55 PM
                                            Zilog Z8000rwessel2020/01/11 01:26 PM
                                              Zilog Z8000Brett2020/01/11 03:16 PM
                                                Zilog Z8000rwessel2020/01/11 08:20 PM
                                                  Zilog Z8000Brett2020/01/12 01:02 PM
                                                    Zilog Z8000rwessel2020/01/12 10:06 PM
                                                      Zilog Z8000Brett2020/01/12 11:02 PM
                                                    Zilog Z8000James2020/01/13 06:12 AM
                                              Zilog Z8000Adrian2020/01/12 12:38 AM
                                                PDP-11Michael S2020/01/12 02:33 AM
                                                Zilog Z8000rwessel2020/01/12 07:01 AM
                                              Zilog Z8000Ronald Maas2020/01/12 11:03 AM
                                            Zilog Z8000Konrad Schwarz2020/01/13 04:49 AM
                                              Zilog Z8000Adrian2020/01/14 12:38 AM
                                                Zilog Z8000konrad.schwarz2020/01/15 05:50 AM
                                                  Zilog Z8000Adrian2020/01/15 11:24 PM
                                    It's hard to separateDavid Hess2020/01/11 07:08 AM
                                  It's hard to separateDavid Hess2020/01/11 07:11 AM
                                It's hard to separateAdrian2020/01/09 12:16 PM
                                  It's hard to separateDavid Hess2020/01/11 07:17 AM
                                It's hard to separategallier22020/01/10 01:11 AM
                                  It's hard to separatenone2020/01/10 02:58 AM
                        It's hard to separaterwessel2020/01/09 08:00 AM
                        It's hard to separateDavid Hess2020/01/09 09:10 AM
                          It's hard to separaterwessel2020/01/09 09:51 AM
                  It's hard to separateAdrian2020/01/08 11:58 PM
                    It's hard to separaterwessel2020/01/09 07:31 AM
                      It's hard to separateAdrian2020/01/09 07:44 AM
                    It's hard to separateDavid Hess2020/01/09 09:37 AM
                      It's hard to separatenone2020/01/09 10:34 AM
                  Are segments so bad?Paul A. Clayton2020/01/09 03:15 PM
                    Yes, they are terrible (NT)Anon2020/01/09 03:20 PM
                    Are segments so bad?Adrian2020/01/10 12:49 AM
                      Are segments so bad?Etienne2020/01/10 02:28 AM
                        Are segments so bad?gallier22020/01/10 02:37 AM
                          Are segments so bad?Adrian2020/01/10 03:19 AM
                            Are segments so bad?Adrian2020/01/10 04:27 AM
                              Are segments so bad?Etienne2020/01/10 04:41 AM
                        Are segments so bad?Adrian2020/01/10 03:05 AM
                          Are segments so bad?gallier22020/01/10 03:13 AM
                      Are segments so bad?Anon32020/01/10 11:37 AM
                        Are segments so bad?Adrian2020/01/10 11:47 AM
                          Are segments so bad?Brendan2020/01/11 01:43 AM
                      Are segments so bad?Anon2020/01/10 06:51 PM
                        Are segments so bad?Adrian2020/01/11 01:05 AM
                          Are segments so bad?Jukka Larja2020/01/11 08:20 AM
                            Are segments so bad?Brendan2020/01/11 10:14 AM
                              Are segments so bad?Jukka Larja2020/01/11 09:15 PM
                                Are segments so bad?Brendan2020/01/11 11:15 PM
                                  Are segments so bad?Jukka Larja2020/01/12 04:18 AM
                                  Are segments so bad?anon2020/01/12 12:30 PM
                                    Are segments so bad?Brendan2020/01/12 10:19 PM
                                      the world sucks worse than you're aware ofMichael S2020/01/13 01:50 AM
                                        the world sucks worse than you're aware ofBrendan2020/01/13 03:56 AM
                                        the world sucks worse than you're aware ofGabriele Svelto2020/01/13 04:46 AM
                                      Are segments so bad?Jukka Larja2020/01/13 07:41 AM
                                        Are segments so bad?Brendan2020/01/13 08:21 AM
                                          Are segments so bad?Jukka Larja2020/01/13 09:43 AM
                                            Are segments so bad?Brendan2020/01/13 01:02 PM
                                              Are segments so bad?Anne O. Nymous2020/01/13 01:22 PM
                                                Are segments so bad?Brendan2020/01/13 02:50 PM
                                                  actor of around 200?Michael S2020/01/14 03:58 AM
                                                  Not overcomitting leads to more OOMs, not lessGabriele Svelto2020/01/14 12:50 PM
                                                    Not overcomitting leads to more OOMs, not lessBrendan2020/01/14 01:40 PM
                                                      Not overcomitting leads to more OOMs, not lessGabriele Svelto2020/01/15 03:17 AM
                                                        Not overcomitting leads to more OOMs, not lessAnon2020/01/15 04:43 AM
                                                          Not overcomitting leads to more OOMs, not lessGabriele Svelto2020/01/15 05:09 AM
                                                            Not overcomitting leads to more OOMs, not lessAnon2020/01/15 05:16 AM
                                                              Not overcomitting leads to more OOMs, not lessGabriele Svelto2020/01/15 06:58 AM
                                                                Not overcomitting leads to more OOMs, not lessAnon2020/01/15 09:08 AM
                                                                  Not overcomitting leads to more OOMs, not lessGabriele Svelto2020/01/16 04:05 AM
                                                        Not overcomitting leads to more OOMs, not lessMichael S2020/01/15 04:48 AM
                                                          Not overcomitting leads to more OOMs, not lessGabriele Svelto2020/01/15 05:10 AM
                                                            Not overcomitting leads to more OOMs, not lessMichael S2020/01/15 08:13 AM
                                                              Not overcomitting leads to more OOMs, not lessJukka Larja2020/01/15 08:46 AM
                                                        Not overcomitting leads to more OOMs, not lessJukka Larja2020/01/15 06:08 AM
                                                          Thanks for the info (NT)Gabriele Svelto2020/01/15 07:00 AM
                                                      Not overcomitting leads to more OOMs, not lessLinus Torvalds2020/01/15 12:30 PM
                                                        OOM killer complainsAnon2020/01/15 12:44 PM
                                                          OOM killer complainsanon2020/01/15 04:26 PM
                                                        Not overcomitting leads to more OOMs, not lessBrendan2020/01/16 07:26 AM
                                                          Not overcomitting leads to more OOMs, not lessLinus Torvalds2020/01/16 10:17 AM
                                                            Not overcomitting leads to more OOMs, not lessLinus Torvalds2020/01/16 10:48 AM
                                                              Not overcomitting leads to more OOMs, not lessDoug S2020/01/16 03:41 PM
                                                                Not overcomitting leads to more OOMs, not lessDoug S2020/01/16 03:44 PM
                                                Are segments so bad?rwessel2020/01/13 04:11 PM
                                              Are segments so bad?Jukka Larja2020/01/14 07:37 AM
                                                Are segments so bad?Brendan2020/01/14 08:48 AM
                                                  Are segments so bad?Jukka Larja2020/01/14 11:13 AM
                                                    Are segments so bad?Brendan2020/01/14 02:30 PM
                                                      Are segments so bad?Brett2020/01/14 10:13 PM
                                                      Are segments so bad?Jukka Larja2020/01/15 07:04 AM
                                                  Are segments so bad?Gabriele Svelto2020/01/15 03:35 AM
                                            Specifying cost of dropping pagesPaul A. Clayton2020/01/13 03:00 PM
                                              Specifying cost of dropping pagesrwessel2020/01/13 04:19 PM
                                                Specifying cost of dropping pagesGabriele Svelto2020/01/15 03:23 AM
                                          Are segments so bad?anon2020/01/14 02:15 AM
                                            Are segments so bad?Brendan2020/01/14 06:13 AM
                                          Are segments so bad?Gabriele Svelto2020/01/14 12:57 PM
                                            Are segments so bad?Brendan2020/01/14 02:58 PM
                                              Are segments so bad?Gabriele Svelto2020/01/15 03:33 AM
                                                Are segments so bad?Anon2020/01/15 05:24 AM
                                                  Are segments so bad?Jukka Larja2020/01/15 06:20 AM
                                                Are segments so bad?Etienne2020/01/15 05:56 AM
                                                  Are segments so bad?Jukka Larja2020/01/15 08:53 AM
                                                    Are segments so bad?Gabriele Svelto2020/01/16 06:12 AM
                                                      Are segments so bad?Jukka Larja2020/01/16 10:56 AM
                                                Are segments so bad?Brendan2020/01/15 06:20 AM
                                                  Are segments so bad?Gabriele Svelto2020/01/15 06:56 AM
                                                    Are segments so bad?Brendan2020/01/16 07:16 AM
                                                      Are segments so bad?Jukka Larja2020/01/16 11:08 AM
                                                        Are segments so bad?Brendan2020/01/17 01:52 PM
                                                          Are segments so bad?Jukka Larja2020/01/17 10:08 PM
                                                            Are segments so bad?Brendan2020/01/18 12:40 PM
                                                              Are segments so bad?Jukka Larja2020/01/18 10:13 PM
                                                                Are segments so bad?Brendan2020/01/19 12:25 PM
                                                                  Are segments so bad?Brett2020/01/19 03:18 PM
                                                                    Are segments so bad?Brett2020/01/19 03:34 PM
                                                                  Are segments so bad?Gabriele Svelto2020/01/20 12:57 AM
                                                                  Are segments so bad?Jukka Larja2020/01/20 05:54 AM
                                                                    Are segments so bad?Brendan2020/01/20 12:43 PM
                                                                      Are segments so bad?Jukka Larja2020/01/21 07:01 AM
                                                                        Are segments so bad?Brendan2020/01/21 06:04 PM
                                                                          Are segments so bad?Jukka Larja2020/01/22 07:30 AM
                                                                            Are segments so bad?Brendan2020/01/22 03:56 PM
                                                                              Are segments so bad?Jukka Larja2020/01/23 08:44 AM
                                                      Are segments so bad?rwessel2020/01/16 03:06 PM
                                                      Are segments so bad?Gabriele Svelto2020/01/16 03:13 PM
                                                        Are segments so bad?Brendan2020/01/17 01:51 PM
                                                          Are segments so bad?Gabriele Svelto2020/01/17 03:18 PM
                                                            Are segments so bad?Anon2020/01/17 08:01 PM
                                                              Are segments so bad?Gabriele Svelto2020/01/20 01:06 AM
                                                            Are segments so bad?Brendan2020/01/18 03:15 PM
                                                              Are segments so bad?Gabriele Svelto2020/01/20 12:55 AM
                                                                Are segments so bad?Michael S2020/01/20 05:30 AM
                                                                  Are segments so bad?Gabriele Svelto2020/01/20 08:02 AM
                                                                    Are segments so bad?Jukka Larja2020/01/20 08:41 AM
                                                                    Are segments so bad?Michael S2020/01/20 08:45 AM
                                                                      Are segments so bad?Gabriele Svelto2020/01/20 09:36 AM
                                                                Are segments so bad?Brendan2020/01/20 11:04 AM
                                                                  Are segments so bad?Michael S2020/01/20 01:22 PM
                                                                    Are segments so bad?Brendan2020/01/20 02:38 PM
                                                                      Are segments so bad?Simon Farnsworth2020/01/20 03:40 PM
                                                                        Are segments so bad?Anon2020/01/20 04:35 PM
                                                                          Are segments so bad?Simon Farnsworth2020/01/20 05:30 PM
                                                                      Are segments so bad?Michael S2020/01/20 05:20 PM
                                                                  Are segments so bad?Gabriele Svelto2020/01/21 05:08 AM
                                                                    Are segments so bad?Brendan2020/01/21 06:07 PM
                                                                      Are segments so bad?Gabriele Svelto2020/01/22 01:53 AM
                                                                        Are segments so bad?Brendan2020/01/22 04:32 AM
                                                                          Are segments so bad?Jukka Larja2020/01/22 07:12 AM
                                                                            Are segments so bad?Brendan2020/01/22 04:28 PM
                                                                              Are segments so bad?Jukka Larja2020/01/23 07:36 AM
                                                                                Are segments so bad?Brendan2020/01/24 07:27 PM
                                                                                  Are segments so bad?Jukka Larja2020/01/24 10:42 PM
                                                                                    Are segments so bad?Brendan2020/01/25 02:46 AM
                                                                                      Are segments so bad?Jukka Larja2020/01/25 08:29 AM
                                                                                        Are segments so bad?Brendan2020/01/26 11:17 PM
                                                                                          Are segments so bad?Jukka Larja2020/01/27 07:55 AM
                                                                                            Are segments so bad?Gabriele Svelto2020/01/27 04:33 PM
                                                                                              Are segments so bad?Jukka Larja2020/01/28 06:28 AM
                                                                                                DDS assets and MipMap chainsMontaray Jack2020/01/29 03:26 AM
                                                                                      Are segments so bad?gallier22020/01/27 03:58 AM
                                                                                        Are segments so bad?Jukka Larja2020/01/27 06:19 AM
                                                                                  Are segments so bad?Anne O. Nymous2020/01/25 03:23 AM
                                                                            Are segments so bad?Anon2020/01/22 05:52 PM
                                                                              Are segments so bad?Anne O. Nymous2020/01/23 01:24 AM
                                                                                Are segments so bad?Anon2020/01/23 05:24 PM
                                                                                  Are segments so bad?Anne O. Nymous2020/01/24 12:43 AM
                                                                                    Are segments so bad?Anon2020/01/24 04:04 AM
                                                                                      Are segments so bad?Etienne2020/01/24 06:10 AM
                                                                              Are segments so bad?Gabriele Svelto2020/01/23 01:48 AM
                                                                                Are segments so bad?Michael S2020/01/23 03:48 AM
                                                                                Are segments so bad?Jukka Larja2020/01/23 07:38 AM
                                                                                  Are segments so bad?Gabriele Svelto2020/01/23 01:29 PM
                                                                                    Are segments so bad?Anon2020/01/23 06:08 PM
                                                                                      Are segments so bad?Jukka Larja2020/01/24 09:51 PM
                                                                                Are segments so bad?Anon2020/01/23 06:02 PM
                                                                                  Are segments so bad?Gabriele Svelto2020/01/24 03:57 AM
                                                                                    Are segments so bad?Anon2020/01/24 04:17 AM
                                                                                      Are segments so bad?Gabriele Svelto2020/01/24 09:23 AM
                                                                                        Are segments so bad?Anon2020/02/02 10:15 PM
                                                                                          Are segments so bad?Gabriele Svelto2020/02/03 01:47 AM
                                                                                            Are segments so bad?Anon2020/02/03 02:34 AM
                                                                                              Are segments so bad?Gabriele Svelto2020/02/03 05:36 AM
                                                                                                Are segments so bad?Anon32020/02/03 08:47 AM
                                                                                                Are segments so bad?Anon2020/02/04 05:49 PM
                                                                                  Are segments so bad?Jukka Larja2020/01/24 10:10 PM
                                                          Are segments so bad?Jukka Larja2020/01/17 10:26 PM
                                Are segments so bad?Anne O. Nymous2020/01/12 04:18 AM
                                  Are segments so bad?Jukka Larja2020/01/12 08:41 AM
                            Are segments so bad?rwessel2020/01/11 01:31 PM
                          Are segments so bad?Anne O. Nymous2020/01/11 08:22 AM
                      Are segments so bad?Ricardo B2020/01/11 08:01 PM
                        Are segments so bad?Adrian2020/01/12 12:18 AM
                          Are segments so bad?Michael S2020/01/12 02:43 AM
                            Are segments so bad?Adrian2020/01/12 04:35 AM
                          Are segments so bad?Ricardo B2020/01/12 12:04 PM
                            Are segments so bad?Anon32020/01/12 05:52 PM
                            Are segments so bad?Brendan2020/01/12 09:58 PM
                      Are segments so bad?Paul A. Clayton2020/01/13 09:11 AM
        No nuances, just buggy code (was: related to Spinlock implementation and the Linux Scheduler)rainstared2020/01/06 01:43 AM
          No nuances, just buggy code (was: related to Spinlock implementation and the Linux Scheduler)Foo_2020/01/06 05:33 AM
            No nuances, just buggy code (was: related to Spinlock implementation and the Linux Scheduler)dmcq2020/01/06 06:03 AM
            changes in contextCarlie Coats2020/01/09 09:06 AM
      No nuances, just buggy code (was: related to Spinlock implementation and the Linux Scheduler)rainstar2020/01/09 10:16 PM
        No nuances, just buggy code (was: related to Spinlock implementation and the Linux Scheduler)Montaray Jack2020/01/09 11:11 PM
    Suggested reading for the authoranon2020/01/04 11:16 PM
      Suggested reading for the authorab2020/01/05 05:15 AM
        Looking at the other side (frequency scaling)Chester2020/01/06 10:19 AM
          Looking at the other side (frequency scaling)Foo_2020/01/06 11:00 AM
          Why spinlocks were usedFoo_2020/01/06 11:06 AM
            Why spinlocks were usedJukka Larja2020/01/06 12:59 PM
            Why spinlocks were usedSimon Cooke2020/01/06 03:16 PM
            Why spinlocks were usedRizzo2020/01/07 01:18 AM
          Looking at the other side (frequency scaling)ab2020/01/07 01:14 AM
    Cross-platform codeGian-Carlo Pascutto2020/01/06 08:00 AM
      Cross-platform codeMichael S2020/01/06 09:11 AM
        Cross-platform codeGian-Carlo Pascutto2020/01/06 12:33 PM
          Cross-platform codeMichael S2020/01/06 01:59 PM
            Cross-platform codeNksingh2020/01/07 12:09 AM
              Cross-platform codeMichael S2020/01/07 02:00 AM
              SRW lock implementationMichael S2020/01/07 02:35 AM
                SRW lock implementationNksingh2020/01/09 02:17 PM
                  broken URL in Linux source codeMichael S2020/01/14 01:56 AM
                    broken URL in Linux source codeTravis Downs2020/01/14 10:14 AM
                      broken URL in Linux source codeMichael S2020/01/14 10:48 AM
                        broken URL in Linux source codeTravis Downs2020/01/14 04:43 PM
                  SRW lock implementation - url brokenMichael S2020/01/14 03:07 AM
                    SRW lock implementation - url brokenTravis Downs2020/01/14 11:06 AM
                      SRW lock implementation - url brokengpderetta2020/01/15 04:28 AM
                        SRW lock implementation - url brokenTravis Downs2020/01/15 11:16 AM
                      SRW lock implementation - url brokenLinus Torvalds2020/01/15 11:20 AM
                        SRW lock implementation - url brokenTravis Downs2020/01/15 11:35 AM
                          SRW lock implementation - url brokenLinus Torvalds2020/01/16 11:24 AM
                    SRW lock implementation - url brokenKonrad Schwarz2020/02/05 10:19 AM
                    SRW lock implementation - url brokennksingh2020/02/05 02:42 PM
      Cross-platform codeLinus Torvalds2020/01/06 01:57 PM
Reply to this Topic
Name:
Email:
Topic:
Body: No Text
How do you spell purple?