No nuances, just buggy code (was: related to Spinlock implementation and the Linux Scheduler)

By: Linus Torvalds (torvalds.delete@this.linux-foundation.org), January 4, 2020 2:24 pm
Room: Moderated Discussions
Jörn Engel (joern.delete@this.purestorage.com) on January 4, 2020 11:34 am wrote:
>
> What are your thoughts about limiting unfairness.

Almost all serious locking libraries try to do something exactly like that.

A lot of locking libraries are not about a single locking model. You often have a opportunistic fast case that you know is unfair, but is very simple and works in 99% of the cases.

So your first-order locking might be literally (very bounded) loop doing a "cmpxchg" loop to try to get the lock. Say that "0" means "unlocked", and "1" means "I got the lock", so you might try to start out with a "trylock" that does just

old = cmpxchg_acquire(lock, 0, 1)



The above may look really stupid, but it actually might be optimal. Part of the "look stupid" is that it doesn't even read the old value before it tries to get the lock, which can actually be good in some situations. If the common case is that it's unlocked - and that often is the common case - you not only didn't do anything extraneous, but you also didn't cause a "read for shared ownership" cache cycle in an SMP environment. The cmpxchg() will have asked for the cacheline to be exclusively owned (unless the cache coherence protocol is garbage - we've seen a lot of bad cache coherence hardware).

Now, in the above trivial trylock case, if "old" was zero, you're done. You got the lock. Good. Go on with your life.

Now, if you didn't get the lock, you might decide that "hey, lots of locks are held only for very short times, and I'll try to wait for a very bounded time". You know that you really should sleep, but maybe the lock holder is running right now on another CPU, and sleeping would be more expensive than waiting a bit, so you do a very bounded loop and say

for (c=0; c < 10 && force_read(lock) == 1; c++) cpu_relax()



and now you're just doing regular reads, because you do not want to have a hundred CPUs all be in a loop at the same time trying to get the lock. The "cpu_relax" is some "let's delay a short while and hopefully put the CPU in a lower-power state too".

Note that "cpu_relax" is not a "sched_yield()". You haven't gotten to the point where you want to do a system call yet, you're way before that point. It's a "CPU core yield" - "rep nop" in x86.

And if you end up seeing that the lock got freed, maybe you try that trylock again. Once. Or maybe even twice. But you really really don't want to do a lot of write-for-ownership cycles, because that scales absolutely horribly in the case where you have a lot of CPUs.

You've now handled the fast-case, and it's not been fair, but it's been simple, and you hopefully haven't done too much damage on the CPU cache coherency, nor have you wasted a lot of time on busy-waiting for the lock to get free'd. And you haven't needed to do any expensive system calls or anything like that.

But now if the above hasn't worked and you didn't get the lock even after re-trying, you're in a quandary. Now you're going to wait for the lock and do system calls and shit, and while you were ok with unfairness for the simple and fast cases, by the time you say "I'm going to wait for it", you are no longer ok with unfairness - you're spending real time on this lock, and you don't want others to steal it from under you, the bastards.

And, btw, you also want to let the other side that currently holds the lock to know that it needs to do something special when it unlocks.

So maybe the next step is doing something like

atomic_add(lock,2)



and we've changed the rules for what the "lock values" mean.

"0" still means "unlocked", and "1" still means "locked", but the other bits now mean "contention count". Not only will that now mean that the next person who unlocks knows to do something about it, but it also means that other people trying the fast-case simple "cmpxchg" will no longer come in and steal the lock from under you.

IOW, you have now entered "I'm seeing contention, and I want fairness" mode.

Now, at this point, you'll need to do some system-specific stuff on how to wait and wake up things. On Linux, you'd be using futexes that basically combine a "do something atomic to this memory location, and wait on or wake up people who are waiting for it". You might have tickets for fairness, you might have additional things going on.

The above is all hand-wavy, but I hope you get the point.

Also, now that I've explained the expanded lock values, I can talk about unlocking. In particular, you also want unlock to be fast. But you need to make sure that unlocking will also wake up any waiters. But waking up waiters can be expensive (you don't want to do a futex call unless it's necessary), so the unlock sequence - like the lock sequence - might want to start off with

old = cmpxchg_release(lock, 1, 0)



that basically says "I know the lock value is supposed to be 1 for the fast case - because I hold the lock and nobody else is waiting - and if I can just turn it to zero, I'm all done".

And if the old value wasn't 1, you need to do the whole "wakey-wakey" dance using the system stuff for that (ie futex or whatever). And in particular, if it was "0", you need to do a big warning saying "somebody unlocked things from under me" so that you can debug the locking bugs you have. But you might want to have a whole lock debugging library that does a whole lot more than that.

And all of the above is basically simplified pseudo-code. There are a lot more complexities in reality, but the above hopefully kind of approaches something working while still having a reasonable fast case. And you can tune things for the load you want.

And if any of the details above are wrong, take it just as another proof of "locking is hard". The above is handwavy garbage, it's a high-level "maybe something kind of like this", and there might actually be a lot of extra steps with different levels of "what to do when the first lock failed", and flags in the lock saying whether you want fairness or not, and tuning on how long you are willing to wait etc etc.

In particular, the contention case really can be pretty interesting, in that that is when you know you have multiple people interested in the lock, and you really want to start thinking about ways to not have everybody suddenly start doing cacheline accesses when the lock eventually is released. You want to do clever queueing so that only one CPU sees the lock got released and do lock-handoff without that CPU having to go through extra cache events etc.

Maybe that's not a problem for you, simply because you know you'll never have seriously overcommitted resources, and you'll want to keep tings simple. Or maybe you have some other "I know my load" that means that you want very particular fast-case locking sequences, or maybe you have specific requirements for the data structures that means that you might use some other approach than the above kind of 0/1/many with a cmpxchg.

So there's a lot of glossing over going on above. And maybe you want a lock that does readers and writers and not just mutual exclusion, which adds yet another set of complexities. Or maybe you want to have recursive locks (so that a person who already owns a lock doesn't block on it if it does it recursively).

There's lots of complexities you can add, and that can make sense.

Linus
< 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 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?