SlideShare a Scribd company logo
1 of 46
Download to read offline
Futex Scaling for Multicore Systems
ACM Applicative Conference – June 2016. New York, NY.
Davidlohr Bueso <dave@stgolabs.net>
SUSE Labs.
2
Agenda
1. Introduction
2. Implementing Futexes
● Overall architecture.
● Addressing performance bottlenecks.
3. Notes/Practises in Userspace.
3
Introduction
• Linux kernel (v2.5) functionality for userspace: “Fast
userspace mutual exclusion” through the futex(2)
interface:
‒ Method for a program to wait for a value at a given address to
change, and a method to wake up anyone waiting on a particular
address.
‒ A futex is in essence a userspace address.
4
Introduction
• Linux kernel (v2.5) functionality for userspace: “Fast
userspace mutual exclusion” through the futex(2)
interface:
‒ Method for a program to wait for a value at a given address to
change, and a method to wake up anyone waiting on a particular
address.
‒ A futex is in essence a userspace address.
• Futexes are very basic and lend themselves well for
building higher level locking abstractions such as POSIX
threads:
‒ pthread_mutex_*(), pthread_rwlock_*(),
pthread_barrier_*(), pthread_cond_wait(), etc.
5
Introduction
• In the uncontended cases, user locking implementations
never need to exit from userspace, and the kernel is
graciously unaware, nor cares. CAS is enough.
6
Introduction
• In the uncontended cases, user locking implementations
never need to exit from userspace, and the kernel is
graciously unaware, nor cares. CAS is enough.
• In the case of sysv sems this is not true as jumping to
kernel space is always required to handle the call.
• Lock fastpaths therefore have a significant advantage
using by futexes.
7
Introduction
int futex(int *uaddr, int futex_op,              
          int val, struct timespec *to,         
 int *uaddr2, int val3);
8
Introduction
int futex(int *uaddr, int futex_op,              
          int val, struct timespec *to,         
 int *uaddr2, int val3);
‒ The futex, 32-bit lock variable field
9
Introduction
int futex(int *uaddr, int futex_op,              
          int val, struct timespec *to,         
 int *uaddr2, int val3);
‒ What operation to do on the futex, ie:
 FUTEX_WAIT, FUTEX_WAKE
10
Introduction
int futex(int *uaddr, int futex_op,              
          int val, struct timespec *to,         
 int *uaddr2, int val3);
‒ What operation to do on the futex, ie:
 FUTEX_WAIT, FUTEX_WAKE, FUTEX_REQUEUE, etc.
11
Introduction
int futex(int *uaddr, int futex_op,              
          int val, struct timespec *to,         
 int *uaddr2, int val3);
• Special cases (operations):
‒ PI-futexes (PTHREAD_PRIO_INHERIT)
FUTEX_LOCK/UNLOCK_PI
FUTEX_CMP/WAIT_REQUEUE_PI, etc.
12
Introduction
int futex(int *uaddr, int futex_op,              
          int val, struct timespec *to,         
 int *uaddr2, int val3);
• Special cases (operations):
‒ PI-futexes (PTHREAD_PRIO_INHERIT)
FUTEX_LOCK/UNLOCK_PI
FUTEX_CMP/WAIT_REQUEUE_PI, etc.
‒ Robust futexes (lock owner crashes)
set_robust_list(2), get_robust_list(2)
13
Introduction
void lock(uint32_t *futex)
{
        uint32_t old = *futex;
        if (old == UNLOCKED) /* fastpath */
                old = cmpxchg(futex, UNLOCKED, LOCKED);
        while (old != UNLOCKED) {
                if (old == LOCKED)
                        old = cmpxchg(futex, LOCKED, WAITER);
                if (old != UNLOCKED) {
                        futex(futex, FUTEX_WAIT, WAITERS,…);
                        old = *futex;
                }
                if (old == UNLOCKED)
                        old = cmpxchg(futex, UNLOCKED, WAITERS);
        }
 }
14
Introduction
void unlock(uint32_t *futex)
{
        uint32_t old = *futex;
        if (old == LOCKED)
                old = cmpxchg(futex, LOCKED, UNLOCK);
        if (old == WAITER) {
                old = cmpxchg(futex, WAITER, UNLOCKED);
                nwakes = futex(futex, FUTEX_WAKE, 1, ...);
    /* check nwakes == 1 */
        }
}
Implementing Futexes
16
Kernel Implementation
• The uaddr is used by the kernel to create a unique futex
key, each key hashes to a hash bucket.
• The task’s stack holds the futex_q chain when waiting
(servicing FUTEX_WAIT operations).
17
Kernel Implementation
• Wait queues are at the heart of futexes.
‒ Priority queues (high prio tasks first, otherwise FIFO).
‒ Governed by a chained global hash table.
18
Kernel Implementation
• Each bucket is serialized by a spinlock – all operations
require holding the lock beforehand.
• One or more futexes can share the queue (collisions).
19
Bottlenecks
• There are some immediately apparent issues with the
current futex architecture.
‒ Global hash table (really bad for NUMA).
‒ Hash table collisions.
‒ hb­>lock contention/hold times.
20
Bottlenecks
• There are some immediately apparent issues with the
current futex architecture.
‒ Global hash table (really bad for NUMA).
‒ Hash table collisions.
‒ hb­>lock contention/hold times.
• All of these can have disastrous effects on both
performance, as systems increase in hardware
capabilities, as well as determinism for real-time.
21
Bottlenecks
• There are some immediately apparent issues with the
current futex architecture.
‒ Global hash table (really bad for NUMA).
‒ Hash table collisions.
‒ hb­>lock contention/hold times.
• All of these can have disastrous effects on both
performance, as systems increase in hardware
capabilities, as well as determinism for real-time.
• Numerous efforts have been taken to mitigate some of
these scalability problems.
22
Keys and Hashing
• Uses Jenkins hash function (lookup3).
‒ Fast and distributes hash values rather uniformly
(on real workloads).
• Keys for private vs shared futexes.
‒ Private simply use the current address space and the futex
uaddr.
‒ Shared mappings require page pinning (gup), locks, RCU, ref
counting, etc. Even worse if inode-backed.
• For shared mappings, lockless get_futex_key()
‒ Avoids taking the page_lock (sleepable).
‒ Good for performance and RT.
23
Keys and Hashing
52-core, 2 socket x86-64 (Haswell)
nfutexes = nthreads * 1024
24
Keys and Hashing
• Avoiding collisions and therefore improving the
parallelisation of different futexes is a major plus.
‒ Ie: two or more user locks can be operated on concurrently
without being serialized by the same hb­>lock.
‒ The perfect hash size will of course have one to one hb:futex
ratio.
25
Keys and Hashing
• Futexes started out at 256 entry hash table, which
caused havoc on multicore systems. Since then we
scale by number of CPUs (and avoid false sharing).
‒ Improved raw hashing throughput by 80% to 800% in
increasing futex counts.
26
Per-process Hash Table
• Recent patchset proposed upstream to address the
NUMA issues of the global table for private futexes.
• Dynamically sized: if a potential collision is detected the
size of the hash table is doubled.
• Hash table being on the same NUMA node as the task
operating on the futex.
• Addresses collisions by dedicating more hash table space
per process.
27
Per-thread Hash Table
28
Hash Bucket Lock Contention
• For a successful futex call to occur, intuitively, among
others, the following work must occur while holding
the the hb­>lock
‒ Priority list handling.
‒ Block/wakeup(s).
• It is not hard to find pathological contention on some
hb­>lock, when multiple operations are being done
on the same futex/lock.
29
Lockless Wakeups
• Internally acknowledge that one or more tasks are to
be awoken, then call wake_up_process() after
releasing the bucket spinlock.
30
Lockless Wakeups
• Internally acknowledge that one or more tasks are to
be awoken, then call wake_up_process() after
releasing the bucket spinlock.
• Lockless wake-queues respect the order given by the
caller, hence wakeup fairness does not change
whatsoever.
31
Lockless Wakeups
Works particularly well for batch wakeups of tasks
blocked on a particular futex.
‒ Ie waking all reader-waiters that where blocked on some lock
held for write. (Where N is a large number):
      futex(uaddr, FUTEX_WAKE, N, ...);
32
Lockless Wakeups
16
32
48
64
80
96
0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08
parallel-wakeups
no-batch
batched
time (ms)
threads
26-core (HT), 2 socket x86-64 (Haswell)
33
Queued/MCS Spinlocks (x86)
• Bottlenecks in userspace can easily lead to severe
contention on the hb­>lock, and therefore exposed
to the semantics of spinlocks.
34
Queued/MCS Spinlocks (x86)
• Bottlenecks in userspace can easily lead to severe
contention on the hb­>lock, and therefore exposed
to the semantics of spinlocks.
58.32%  826174  xxx  [kernel.kallsyms] [k] _raw_spin_lock
            ­­­ _raw_spin_lock
             |
             |­­53.74%­­ futex_wake
             |          do_futex
             |          sys_futex
             |          system_call_fastpath
             |­­45.90%­­ futex_wait_setup
             |          futex_wait
             |          do_futex
             |          sys_futex
             |          system_call_fastpath            
35
Queued/MCS Spinlocks (x86)
• Replaced the regular ticket spinlock implementation.
• Each lock waiter will be queued and spins on its own
cacheline (per-cpu variable) rather than the lock itself.
‒ This occurs until the waiter becomes the head of the queue
(next in line to take the lock).
‒ Eliminates much of the cacheline bouncing (inter-socket traffic)
caused by contended ticket locks.
36
Queued/MCS Spinlocks (x86)
• Replaced the regular ticket spinlock implementation.
• Each lock waiter will be queued and spins on its own
cacheline (per-cpu variable) rather than the lock itself.
‒ This occurs until the waiter becomes the head of the queue
(next in line to take the lock).
‒ Eliminates much of the cacheline bouncing (inter-socket traffic)
caused by contended ticket locks.
• This really matters on systems with > 4-sockets, but
can bring 8 or 16-socket machines to its knees.
‒ Experiments show improvements in throughput of up to 2.4x
on 80 core machines.
‒ Reports of lockups for futexes on 240-core systems.
37
Queued/MCS Spinlocks (x86)
• qspinlocks outperform ticket locks in the uncontended
case. Ie avg single threaded lock+unlock:
• Therefore smaller systems under non-pathological
(normal case) workloads can also benefit.
Time (ns)
Ticket lock (unlock: CAS) 17.63
Queued lock (unlock: store) 9.54
(2.6Ghz x86-64)
38
PI-Futexes
• Futexes make use of rt-mutexes to support priority-
inheritance (PTHREAD_PRIO_INHERIT) semantics.
‒ pi_state is attached to the waiter’s futex_q
‒ The pi_state­>pi_mutex top-waiter (highest priority
waiter) has been optimized for both lockless wakeups and
avoid blocking if current lock owner is running.
39
PI-Futexes
1 4 8 16 24 48 64
0
2000000
4000000
6000000
8000000
10000000
12000000
14000000
pistress benchmark
top-waiter
regular
groups of 3-threads
totalinversions
32-core, 2 socket x86-64
Practices in Userspace
41
General Notes
• The performance optimizations at the Kernel side are only
one part of the picture. Using futexes is just as important.
• As with any system call, there really is no single recipe to
make good use of futexes in userspace. The kernel simply
obliges.
• Locking algorithms can play a huge factor in performance
on large-scale machines.
‒ Contention on a 240-core system is much more severe than
on a 40-core machine.
42
General Notes
• Locks in both the kernel and in userspace can be exposed
to the same architectural difficulties: cacheline contention
and NUMA-awareness.
• Many applications today are developed/tuned for certain
amount of CPUs.
‒ Scaling based only on the number of CPUs is likely to introduce
significant lock and cacheline contention.
• Unsurprisingly similar optimizations and tools to obtain
data for analysis (perf, tracing, etc) can be taken from this
presentation and applied to your locks.
43
Best Practises
• Data partitioning.
‒ Cacheline contention within a single NUMA node can be
significantly less severe than among cores from different NUMA
nodes.
• Lock granularity.
• Data layout
‒ structure organization, avoiding false sharing.
‒ Cacheline bouncing can occur when there are multiple hb­>lock
residing on the same cacheline and different futexes hash to
adjacent buckets.
• Avoid futex(2) calls unless necessary
‒ Ie: make sure there are waiters to wakeup.
44
References
• man 2 futex
• Hart, Darren. “A futex overview and update”. lwn.net. Nov 2009.
• Drepper, Ulrich. “Futexes are Tricky”. Nov 2011.
• Hart, D. “Requeue-PI: Making Glibc Condvars PI-Aware”. Proc. RT
Linux Summit 2011.
• Bueso, D. Norton, S. “An Overview of Kernel Lock Improvements”.
Linux Con. 2014. Chicago, IL.
Thank you.
46

More Related Content

What's hot

RISC-Vのセキュリティ技術(TEE, Root of Trust, Remote Attestation)
RISC-Vのセキュリティ技術(TEE, Root of Trust, Remote Attestation)RISC-Vのセキュリティ技術(TEE, Root of Trust, Remote Attestation)
RISC-Vのセキュリティ技術(TEE, Root of Trust, Remote Attestation)Kuniyasu Suzaki
 
[OpenStack Days Korea 2016] Track1 - All flash CEPH 구성 및 최적화
[OpenStack Days Korea 2016] Track1 - All flash CEPH 구성 및 최적화[OpenStack Days Korea 2016] Track1 - All flash CEPH 구성 및 최적화
[OpenStack Days Korea 2016] Track1 - All flash CEPH 구성 및 최적화OpenStack Korea Community
 
Open vSwitch 패킷 처리 구조
Open vSwitch 패킷 처리 구조Open vSwitch 패킷 처리 구조
Open vSwitch 패킷 처리 구조Seung-Hoon Baek
 
第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考える第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考えるchonaso
 
New Ways to Find Latency in Linux Using Tracing
New Ways to Find Latency in Linux Using TracingNew Ways to Find Latency in Linux Using Tracing
New Ways to Find Latency in Linux Using TracingScyllaDB
 
Linux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old SecretsLinux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old SecretsBrendan Gregg
 
Container Performance Analysis
Container Performance AnalysisContainer Performance Analysis
Container Performance AnalysisBrendan Gregg
 
[Container Runtime Meetup] runc & User Namespaces
[Container Runtime Meetup] runc & User Namespaces[Container Runtime Meetup] runc & User Namespaces
[Container Runtime Meetup] runc & User NamespacesAkihiro Suda
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Akihiro Suda
 
EBPF and Linux Networking
EBPF and Linux NetworkingEBPF and Linux Networking
EBPF and Linux NetworkingPLUMgrid
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能Kohei Tokunaga
 
LISA2019 Linux Systems Performance
LISA2019 Linux Systems PerformanceLISA2019 Linux Systems Performance
LISA2019 Linux Systems PerformanceBrendan Gregg
 
P2P Container Image Distribution on IPFS With containerd and nerdctl
P2P Container Image Distribution on IPFS With containerd and nerdctlP2P Container Image Distribution on IPFS With containerd and nerdctl
P2P Container Image Distribution on IPFS With containerd and nerdctlKohei Tokunaga
 
Linux Performance Tools
Linux Performance ToolsLinux Performance Tools
Linux Performance ToolsBrendan Gregg
 
Static partitioning virtualization on RISC-V
Static partitioning virtualization on RISC-VStatic partitioning virtualization on RISC-V
Static partitioning virtualization on RISC-VRISC-V International
 
Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...
Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...
Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...Henning Jacobs
 
コンテナを突き破れ!! ~コンテナセキュリティ入門基礎の基礎~(Kubernetes Novice Tokyo #11 発表資料)
コンテナを突き破れ!! ~コンテナセキュリティ入門基礎の基礎~(Kubernetes Novice Tokyo #11 発表資料)コンテナを突き破れ!! ~コンテナセキュリティ入門基礎の基礎~(Kubernetes Novice Tokyo #11 発表資料)
コンテナを突き破れ!! ~コンテナセキュリティ入門基礎の基礎~(Kubernetes Novice Tokyo #11 発表資料)NTT DATA Technology & Innovation
 
containerd summit - Deep Dive into containerd
containerd summit - Deep Dive into containerdcontainerd summit - Deep Dive into containerd
containerd summit - Deep Dive into containerdDocker, Inc.
 

What's hot (20)

RISC-Vのセキュリティ技術(TEE, Root of Trust, Remote Attestation)
RISC-Vのセキュリティ技術(TEE, Root of Trust, Remote Attestation)RISC-Vのセキュリティ技術(TEE, Root of Trust, Remote Attestation)
RISC-Vのセキュリティ技術(TEE, Root of Trust, Remote Attestation)
 
[OpenStack Days Korea 2016] Track1 - All flash CEPH 구성 및 최적화
[OpenStack Days Korea 2016] Track1 - All flash CEPH 구성 및 최적화[OpenStack Days Korea 2016] Track1 - All flash CEPH 구성 및 최적화
[OpenStack Days Korea 2016] Track1 - All flash CEPH 구성 및 최적화
 
Open vSwitch 패킷 처리 구조
Open vSwitch 패킷 처리 구조Open vSwitch 패킷 처리 구조
Open vSwitch 패킷 처리 구조
 
第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考える第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考える
 
New Ways to Find Latency in Linux Using Tracing
New Ways to Find Latency in Linux Using TracingNew Ways to Find Latency in Linux Using Tracing
New Ways to Find Latency in Linux Using Tracing
 
Linux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old SecretsLinux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old Secrets
 
Container Performance Analysis
Container Performance AnalysisContainer Performance Analysis
Container Performance Analysis
 
[Container Runtime Meetup] runc & User Namespaces
[Container Runtime Meetup] runc & User Namespaces[Container Runtime Meetup] runc & User Namespaces
[Container Runtime Meetup] runc & User Namespaces
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
EBPF and Linux Networking
EBPF and Linux NetworkingEBPF and Linux Networking
EBPF and Linux Networking
 
Making Linux do Hard Real-time
Making Linux do Hard Real-timeMaking Linux do Hard Real-time
Making Linux do Hard Real-time
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
 
LISA2019 Linux Systems Performance
LISA2019 Linux Systems PerformanceLISA2019 Linux Systems Performance
LISA2019 Linux Systems Performance
 
P2P Container Image Distribution on IPFS With containerd and nerdctl
P2P Container Image Distribution on IPFS With containerd and nerdctlP2P Container Image Distribution on IPFS With containerd and nerdctl
P2P Container Image Distribution on IPFS With containerd and nerdctl
 
Linux Performance Tools
Linux Performance ToolsLinux Performance Tools
Linux Performance Tools
 
Static partitioning virtualization on RISC-V
Static partitioning virtualization on RISC-VStatic partitioning virtualization on RISC-V
Static partitioning virtualization on RISC-V
 
Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...
Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...
Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...
 
コンテナを突き破れ!! ~コンテナセキュリティ入門基礎の基礎~(Kubernetes Novice Tokyo #11 発表資料)
コンテナを突き破れ!! ~コンテナセキュリティ入門基礎の基礎~(Kubernetes Novice Tokyo #11 発表資料)コンテナを突き破れ!! ~コンテナセキュリティ入門基礎の基礎~(Kubernetes Novice Tokyo #11 発表資料)
コンテナを突き破れ!! ~コンテナセキュリティ入門基礎の基礎~(Kubernetes Novice Tokyo #11 発表資料)
 
YJTC18 A-1 データセンタネットワークの取り組み
YJTC18 A-1 データセンタネットワークの取り組みYJTC18 A-1 データセンタネットワークの取り組み
YJTC18 A-1 データセンタネットワークの取り組み
 
containerd summit - Deep Dive into containerd
containerd summit - Deep Dive into containerdcontainerd summit - Deep Dive into containerd
containerd summit - Deep Dive into containerd
 

Viewers also liked

An Overview of [Linux] Kernel Lock Improvements -- Linuxcon NA 2014
An Overview of [Linux] Kernel Lock Improvements -- Linuxcon NA 2014An Overview of [Linux] Kernel Lock Improvements -- Linuxcon NA 2014
An Overview of [Linux] Kernel Lock Improvements -- Linuxcon NA 2014Davidlohr Bueso
 
Memory Barriers in the Linux Kernel
Memory Barriers in the Linux KernelMemory Barriers in the Linux Kernel
Memory Barriers in the Linux KernelDavidlohr Bueso
 
Best topics for seminar
Best topics for seminarBest topics for seminar
Best topics for seminarshilpi nagpal
 
Linux kernel development chapter 10
Linux kernel development chapter 10Linux kernel development chapter 10
Linux kernel development chapter 10huangachou
 
Final Year M.Tech/B.Tech IEEE Projects-Dip,dsp & communication [matlab & ti p...
Final Year M.Tech/B.Tech IEEE Projects-Dip,dsp & communication [matlab & ti p...Final Year M.Tech/B.Tech IEEE Projects-Dip,dsp & communication [matlab & ti p...
Final Year M.Tech/B.Tech IEEE Projects-Dip,dsp & communication [matlab & ti p...Chinnasamy C
 
Introduction to YII framework
Introduction to YII frameworkIntroduction to YII framework
Introduction to YII frameworkNaincy Gupta
 
Enabling ARM® Server Technology for the Datacenter
Enabling ARM® Server Technology for the DatacenterEnabling ARM® Server Technology for the Datacenter
Enabling ARM® Server Technology for the DatacenterAMD
 
6 Dean Google
6 Dean Google6 Dean Google
6 Dean GoogleFrank Cai
 
Red Hat Virtualization Where Performance Takes Off!
Red Hat Virtualization Where Performance Takes Off!Red Hat Virtualization Where Performance Takes Off!
Red Hat Virtualization Where Performance Takes Off!andreas kuncoro
 
M.Tech project on Haar wavelet based approach for image compression
M.Tech project on Haar wavelet based approach for image compressionM.Tech project on Haar wavelet based approach for image compression
M.Tech project on Haar wavelet based approach for image compressionVeerendra B R Revanna
 
A site in 15 minutes with yii
A site in 15 minutes with yiiA site in 15 minutes with yii
A site in 15 minutes with yiiAndy Kelk
 
Sql server engine cpu cache as the new ram
Sql server engine cpu cache as the new ramSql server engine cpu cache as the new ram
Sql server engine cpu cache as the new ramChris Adkin
 
WebSocket MicroService vs. REST Microservice
WebSocket MicroService vs. REST MicroserviceWebSocket MicroService vs. REST Microservice
WebSocket MicroService vs. REST MicroserviceRick Hightower
 

Viewers also liked (20)

An Overview of [Linux] Kernel Lock Improvements -- Linuxcon NA 2014
An Overview of [Linux] Kernel Lock Improvements -- Linuxcon NA 2014An Overview of [Linux] Kernel Lock Improvements -- Linuxcon NA 2014
An Overview of [Linux] Kernel Lock Improvements -- Linuxcon NA 2014
 
Memory Barriers in the Linux Kernel
Memory Barriers in the Linux KernelMemory Barriers in the Linux Kernel
Memory Barriers in the Linux Kernel
 
Best topics for seminar
Best topics for seminarBest topics for seminar
Best topics for seminar
 
Doma faq
Doma faqDoma faq
Doma faq
 
Futex 2017 programme gb
Futex 2017 programme gbFutex 2017 programme gb
Futex 2017 programme gb
 
Linux kernel development chapter 10
Linux kernel development chapter 10Linux kernel development chapter 10
Linux kernel development chapter 10
 
ERP
ERPERP
ERP
 
Final Year M.Tech/B.Tech IEEE Projects-Dip,dsp & communication [matlab & ti p...
Final Year M.Tech/B.Tech IEEE Projects-Dip,dsp & communication [matlab & ti p...Final Year M.Tech/B.Tech IEEE Projects-Dip,dsp & communication [matlab & ti p...
Final Year M.Tech/B.Tech IEEE Projects-Dip,dsp & communication [matlab & ti p...
 
FUTEX 2015 Programme gb
FUTEX 2015 Programme gbFUTEX 2015 Programme gb
FUTEX 2015 Programme gb
 
Introduction to YII framework
Introduction to YII frameworkIntroduction to YII framework
Introduction to YII framework
 
Enabling ARM® Server Technology for the Datacenter
Enabling ARM® Server Technology for the DatacenterEnabling ARM® Server Technology for the Datacenter
Enabling ARM® Server Technology for the Datacenter
 
6 Dean Google
6 Dean Google6 Dean Google
6 Dean Google
 
Yii php framework_honey
Yii php framework_honeyYii php framework_honey
Yii php framework_honey
 
Red Hat Virtualization Where Performance Takes Off!
Red Hat Virtualization Where Performance Takes Off!Red Hat Virtualization Where Performance Takes Off!
Red Hat Virtualization Where Performance Takes Off!
 
M.Tech project on Haar wavelet based approach for image compression
M.Tech project on Haar wavelet based approach for image compressionM.Tech project on Haar wavelet based approach for image compression
M.Tech project on Haar wavelet based approach for image compression
 
A site in 15 minutes with yii
A site in 15 minutes with yiiA site in 15 minutes with yii
A site in 15 minutes with yii
 
Yii framework
Yii frameworkYii framework
Yii framework
 
Sql server engine cpu cache as the new ram
Sql server engine cpu cache as the new ramSql server engine cpu cache as the new ram
Sql server engine cpu cache as the new ram
 
WebSocket MicroService vs. REST Microservice
WebSocket MicroService vs. REST MicroserviceWebSocket MicroService vs. REST Microservice
WebSocket MicroService vs. REST Microservice
 
Nram presentation 3
Nram presentation 3Nram presentation 3
Nram presentation 3
 

Similar to Futex Scaling for Multi-core Systems

Reshaping Core Genomics Software Tools for the Manycore Era
Reshaping Core Genomics Software Tools for the Manycore EraReshaping Core Genomics Software Tools for the Manycore Era
Reshaping Core Genomics Software Tools for the Manycore EraIntel® Software
 
[CCC-28c3] Post Memory Corruption Memory Analysis
[CCC-28c3] Post Memory Corruption Memory Analysis[CCC-28c3] Post Memory Corruption Memory Analysis
[CCC-28c3] Post Memory Corruption Memory AnalysisMoabi.com
 
Namespaces and cgroups - the basis of Linux containers
Namespaces and cgroups - the basis of Linux containersNamespaces and cgroups - the basis of Linux containers
Namespaces and cgroups - the basis of Linux containersKernel TLV
 
A NUMA interface for futex2 - Andre Almeida
A NUMA interface for futex2 - Andre AlmeidaA NUMA interface for futex2 - Andre Almeida
A NUMA interface for futex2 - Andre AlmeidaIgalia
 
CNIT 127 14: Protection Mechanisms
CNIT 127 14: Protection MechanismsCNIT 127 14: Protection Mechanisms
CNIT 127 14: Protection MechanismsSam Bowne
 
Real-Time Big Data with Storm, Kafka and GigaSpaces
Real-Time Big Data with Storm, Kafka and GigaSpacesReal-Time Big Data with Storm, Kafka and GigaSpaces
Real-Time Big Data with Storm, Kafka and GigaSpacesOleksii Diagiliev
 
Distributed Postgres
Distributed PostgresDistributed Postgres
Distributed PostgresStas Kelvich
 
zookeeer+raft-2.pdf
zookeeer+raft-2.pdfzookeeer+raft-2.pdf
zookeeer+raft-2.pdfChester Chen
 
StormCrawler at Bristech
StormCrawler at BristechStormCrawler at Bristech
StormCrawler at BristechJulien Nioche
 
xCORE architecture flyer
xCORE architecture flyerxCORE architecture flyer
xCORE architecture flyerXMOS
 
Java util concurrent
Java util concurrentJava util concurrent
Java util concurrentRoger Xia
 
Fedora Virtualization Day: Linux Containers & CRIU
Fedora Virtualization Day: Linux Containers & CRIUFedora Virtualization Day: Linux Containers & CRIU
Fedora Virtualization Day: Linux Containers & CRIUAndrey Vagin
 
Real Time Operating System
Real Time Operating SystemReal Time Operating System
Real Time Operating SystemSharad Pandey
 
Zookeeper vs Raft: Stateful distributed coordination with HA and Fault Tolerance
Zookeeper vs Raft: Stateful distributed coordination with HA and Fault ToleranceZookeeper vs Raft: Stateful distributed coordination with HA and Fault Tolerance
Zookeeper vs Raft: Stateful distributed coordination with HA and Fault ToleranceAlluxio, Inc.
 
CNIT 127 14: Protection Mechanisms
CNIT 127 14: Protection MechanismsCNIT 127 14: Protection Mechanisms
CNIT 127 14: Protection MechanismsSam Bowne
 
[Ruxcon 2011] Post Memory Corruption Memory Analysis
[Ruxcon 2011] Post Memory Corruption Memory Analysis[Ruxcon 2011] Post Memory Corruption Memory Analysis
[Ruxcon 2011] Post Memory Corruption Memory AnalysisMoabi.com
 

Similar to Futex Scaling for Multi-core Systems (20)

Mutexes 2
Mutexes 2Mutexes 2
Mutexes 2
 
Reshaping Core Genomics Software Tools for the Manycore Era
Reshaping Core Genomics Software Tools for the Manycore EraReshaping Core Genomics Software Tools for the Manycore Era
Reshaping Core Genomics Software Tools for the Manycore Era
 
[CCC-28c3] Post Memory Corruption Memory Analysis
[CCC-28c3] Post Memory Corruption Memory Analysis[CCC-28c3] Post Memory Corruption Memory Analysis
[CCC-28c3] Post Memory Corruption Memory Analysis
 
Namespaces and cgroups - the basis of Linux containers
Namespaces and cgroups - the basis of Linux containersNamespaces and cgroups - the basis of Linux containers
Namespaces and cgroups - the basis of Linux containers
 
Vx works RTOS
Vx works RTOSVx works RTOS
Vx works RTOS
 
A NUMA interface for futex2 - Andre Almeida
A NUMA interface for futex2 - Andre AlmeidaA NUMA interface for futex2 - Andre Almeida
A NUMA interface for futex2 - Andre Almeida
 
CNIT 127 14: Protection Mechanisms
CNIT 127 14: Protection MechanismsCNIT 127 14: Protection Mechanisms
CNIT 127 14: Protection Mechanisms
 
Real-Time Big Data with Storm, Kafka and GigaSpaces
Real-Time Big Data with Storm, Kafka and GigaSpacesReal-Time Big Data with Storm, Kafka and GigaSpaces
Real-Time Big Data with Storm, Kafka and GigaSpaces
 
Distributed Postgres
Distributed PostgresDistributed Postgres
Distributed Postgres
 
zookeeer+raft-2.pdf
zookeeer+raft-2.pdfzookeeer+raft-2.pdf
zookeeer+raft-2.pdf
 
StormCrawler at Bristech
StormCrawler at BristechStormCrawler at Bristech
StormCrawler at Bristech
 
Memory model
Memory modelMemory model
Memory model
 
xCORE architecture flyer
xCORE architecture flyerxCORE architecture flyer
xCORE architecture flyer
 
Java util concurrent
Java util concurrentJava util concurrent
Java util concurrent
 
Fedora Virtualization Day: Linux Containers & CRIU
Fedora Virtualization Day: Linux Containers & CRIUFedora Virtualization Day: Linux Containers & CRIU
Fedora Virtualization Day: Linux Containers & CRIU
 
Real Time Operating System
Real Time Operating SystemReal Time Operating System
Real Time Operating System
 
Zookeeper vs Raft: Stateful distributed coordination with HA and Fault Tolerance
Zookeeper vs Raft: Stateful distributed coordination with HA and Fault ToleranceZookeeper vs Raft: Stateful distributed coordination with HA and Fault Tolerance
Zookeeper vs Raft: Stateful distributed coordination with HA and Fault Tolerance
 
CNIT 127 14: Protection Mechanisms
CNIT 127 14: Protection MechanismsCNIT 127 14: Protection Mechanisms
CNIT 127 14: Protection Mechanisms
 
timers 2.ppt
timers 2.ppttimers 2.ppt
timers 2.ppt
 
[Ruxcon 2011] Post Memory Corruption Memory Analysis
[Ruxcon 2011] Post Memory Corruption Memory Analysis[Ruxcon 2011] Post Memory Corruption Memory Analysis
[Ruxcon 2011] Post Memory Corruption Memory Analysis
 

Recently uploaded

Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Intelisync
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 

Recently uploaded (20)

Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 

Futex Scaling for Multi-core Systems