SlideShare uma empresa Scribd logo
1 de 54
Baixar para ler offline
Memory Barriers in the Linux Kernel
Semantics and Practices
Embedded Linux Conference – April 2016. San Diego, CA.
Davidlohr Bueso <dave@stgolabs.net>
SUSE Labs.
2
Agenda
1. Introduction
• Reordering Examples
• Underlying need for memory barriers
2. Barriers in the kernel
● Building blocks
● Implicit barriers
● Atomic operations
● Acquire/release semantics.
3
References
i. David Howells, Paul E. McKenney. Linux Kernel source:
Documentation/memory-barriers.txt
ii. Paul E. McKenney. Is Parallel Programming Hard, And, If So, What
Can You Do About It?
iii. Paul E. McKenney.
Memory Barriers: a Hardware View for Software Hackers. June 2010.
iv. Sorin, Hill, Wood. A Primer on Memory Consistency and Cache
Coherence. Synthesis Lectures on Computer Architecture. 2011.
4
5
Flagship Example
A = 0, B = 0 (shared variables)
CPU0
A = 1
x = B
CPU1
B = 1
y = A
6
Flagship Example
A = 0, B = 0 (shared variables)
CPU0
A = 1
x = B
CPU1
B = 1
y = A
(x, y) =
7
Flagship Example
A = 0, B = 0 (shared variables)
CPU0
A = 1
x = B
CPU1
B = 1
y = A
(x, y) =
(0, 1)
A = 1
x = B
              B = 1
              y = A
8
Flagship Example
A = 0, B = 0 (shared variables)
CPU0
A = 1
x = B
CPU1
B = 1
y = A
(x, y) =
(0, 1)
              B = 1
              y = A
A = 1
x = B
(1, 0)
9
Flagship Example
A = 0, B = 0 (shared variables)
CPU0
A = 1
x = B
CPU1
B = 1
y = A
(x, y) =
(0, 1)
A = 1
              B = 1
              y = A
x = B
(1, 0)
(1, 1)
10
Flagship Example
A = 0, B = 0 (shared variables)
CPU0
A = 1
x = B
CPU1
B = 1
y = A
(x, y) =
(0, 1)
x = B   y = A   
A = 1 B = 1
(1, 0)
(1, 1)
 (0, 0)
11
Memory Consistency Models
• Most modern multicore systems are coherent but not
consistent.
‒ Same address is subject to the cache coherency protocol.
• Describes what the CPU can do regarding instruction
ordering across addresses.
‒ Helps programmers make sense of the world.
‒ CPU is not aware if application is single or multi-threaded.
When optimizing, it only ensures single threaded correctness.
12
Sequential Consistency (SC)
“A multiprocessor is sequentially consistent if the result of any
execution is the same as some sequential order, and within any
processor, the operations are executed in program order”
– Lamport, 1979.
• Intuitively a programmer's ideal scenario.
‒ The instructions are executed by the same CPU in the order in
which it was written.
‒ All processes see the same interleaving of operations.
13
Total Store Order (TSO)
• SPARC, x86 (Intel, AMD)
• Similar to SC, but:
‒ Loads may be reordered with writes.
[l] B
[s] B
[l] B
[s] C
[l] B
[s] A
[l] A
[s] B
14
Total Store Order (TSO)
• SPARC, x86 (Intel, AMD)
• Similar to SC, but:
‒ Loads may be reordered with writes.
[l] B
[s] B
[l] B
[s] C
[l] B
[s] A
[l] A
[s] B
L→L
15
Total Store Order (TSO)
• SPARC, x86 (Intel, AMD)
• Similar to SC, but:
‒ Loads may be reordered with writes.
[l] B
[s] B
[l] B
[s] C
[l] B
[s] A
[l] A
[s] B
L→L
S→S
16
Total Store Order (TSO)
• SPARC, x86 (Intel, AMD)
• Similar to SC, but:
‒ Loads may be reordered with writes.
[l] B
[s] B
[l] B
[s] C
[l] B
[s] A
[l] A
[s] B
L→L
S→S
L→S
17
Total Store Order (TSO)
• SPARC, x86 (Intel, AMD)
• Similar to SC, but:
‒ Loads may be reordered with writes.
[l] B
[s] B
[l] B
[s] C
[l] B
[s] A
[l] A
[s] B
L→L
S→S
L→S
S→L
18
Relaxed Models
• Arbitrary reorder limited only by explicit memory-
barrier instructions.
• ARM, Power, tilera, Alpha.
19
Fixing the Example
A = 0, B = 0 (shared variables)
CPU0
A = 1
x = B
CPU1
B = 1
y = A
CPU1
B = 1
y = A
20
Fixing the Example
A = 0, B = 0 (shared variables)
CPU0
A = 1
<MB>
x = B
CPU1
B = 1
y = A
CPU1
B = 1
<MB>
y = A
21
Fixing the Example
A = 0, B = 0 (shared variables)
CPU0
A = 1
<MB>
x = B
CPU1
B = 1
y = A
CPU1
B = 1
<MB>
y = A
● Compiler barrier
22
Fixing the Example
A = 0, B = 0 (shared variables)
CPU0
A = 1
<MB>
x = B
CPU1
B = 1
y = A
CPU1
B = 1
<MB>
y = A
● Compiler barrier
● Mandatory barriers (general+rw)
23
Fixing the Example
A = 0, B = 0 (shared variables)
CPU0
A = 1
<MB>
x = B
CPU1
B = 1
y = A
CPU1
B = 1
<MB>
y = A
● Compiler barrier
● Mandatory barriers (general+rw)
● SMP-conditional barriers
24
Fixing the Example
A = 0, B = 0 (shared variables)
CPU0
A = 1
<MB>
x = B
CPU1
B = 1
y = A
CPU1
B = 1
<MB>
y = A
● Compiler barrier
● Mandatory barriers (general+rw)
● SMP-conditional barriers
● acquire/release
25
Fixing the Example
A = 0, B = 0 (shared variables)
CPU0
A = 1
<MB>
x = B
CPU1
B = 1
y = A
CPU1
B = 1
<MB>
y = A
● Compiler barrier
● Mandatory barriers (general+rw)
● SMP-conditional barriers
● acquire/release
● Data dependency barriers
● Device barriers
Barriers in the Linux Kernel
27
Abstracting Architectures
• Most kernel programmers need not worry about
ordering specifics of every architecture.
‒ Some notion of barrier usage is handy nonetheless – implicit
vs explicit, semantics, etc.
• Linux must handle the CPU's memory ordering
specifics in a portable way with LCD semantics of
memory barriers.
‒ CPU appears to execute in program order.
‒ Single variable consistency.
‒ Barriers operate in pairs.
‒ Sufficient to implement synchronization primitives.
28
Abstracting Architectures
mb()
mfence
dsb
sync
...
● Each architecture must implement its own calls or
otherwise default to the generic and highly
unoptimized behavior.
● <arch/xxx/include/asm/barriers.h> will
always define the low-level CPU specifics, then rely
on <include/asm­generic/barriers.h>
29
A Note on barrier()
• Prevents the compiler from getting smart, acting as a
general barrier.
• Within a loop forces the compiler to reload conditional
variables – READ/WRITE_ONCE.
30
Implicit Barriers
• Calls that have implied barriers, the caller can safely
rely on:
‒ Locking functions
‒ Scheduler functions
‒ Interrupt disabling functions
‒ Others.
31
Sleeping/Waking
• Extremely common task in the kernel and flagship
example of flag-based CPU-CPU interaction.
CPU0 CPU1
while (!done) { done = true;
schedule();      wake_up_process(t);
current→state = …;
}
32
Sleeping/Waking
• Extremely common task in the kernel and flagship
example of flag-based CPU-CPU interaction.
CPU0 CPU1
while (!done) { done = true;
schedule();      wake_up_process(t);
current→state = …;
set_current_state(…);
}
33
Sleeping/Waking
• Extremely common task in the kernel and flagship
example of flag-based CPU-CPU interaction.
CPU0 CPU1
while (!done) { done = true;
schedule();      wake_up_process(t);
current→state = …;
set_current_state(…);
}
smp_store_mb():
  [s] →state = … 
  smp_mb()
34
Atomic Operations
• Any atomic operation that modifies some state in
memory and returns information about the state can
potentially imply a SMP barrier:
‒ smp_mb() on each side of the actual operation
[atomic_*_]xchg()
atomic_*_return()
atomic_*_and_test()
atomic_*_add_negative()
35
Atomic Operations
• Any atomic operation that modifies some state in
memory and returns information about the state can
potentially imply a SMP barrier:
‒ smp_mb() on each side of the actual operation
‒ Conditional calls imply barriers only when successful.
[atomic_*_]xchg()
atomic_*_return()
atomic_*_and_test()
atomic_*_add_negative()
[atomic_*_]cmpxchg()
atomic_*_add_unless()
36
Atomic Operations
• Most basic of operations therefore do not imply
barriers.
• Many contexts can require barriers:
cpumask_set_cpu(cpu, vec­>mask);
/*
 * When adding a new vector, we update the mask first,
 * do a write memory barrier, and then update the count, to
 * make sure the vector is visible when count is set.
 */
smp_mb__before_atomic();
atomic_inc(&(vec)­>count);
37
Atomic Operations
• Most basic of operations therefore do not imply
barriers.
• Many contexts can require barriers:
/*
 * When removing from the vector, we decrement the counter first
 * do a memory barrier and then clear the mask.
 */
atomic_dec(&(vec)­>count);
smp_mb__after_atomic();
cpumask_clear_cpu(cpu, vec­>mask);
38
Acquire/Release Semantics
• One way barriers.
• Passing information reliably between threads about a
variable.
‒ Ideal in producer/consumer type situations (pairing!!).
‒ After an ACQUIRE on a given variable, all memory accesses
preceding any prior RELEASE on that same variable are
guaranteed to be visible.
‒ All accesses of all previous critical sections for that variable
are guaranteed to have completed.
‒ C++11's memory_order_acquire,
memory_order_release and memory_order_relaxed.
39
Acquire/Release Semantics
CPU0
spin_lock
  …
  …
CPU0
spin_lock(&l)
spin_unlock(&l)
CPU1
spin_lock(&l)
  
 
spin_unlock(&l)
CR
CR
40
Acquire/Release Semantics
CPU0
spin_lock
  …
  …
CPU0
spin_lock(&l)
spin_unlock(&l)
CPU1
spin_lock(&l)
  
 
spin_unlock(&l)
CR
CR
smp_store_release(lock→val, 0) <­> cmpxchg_acquire(lock→val, 0, LOCKED)  
41
Acquire/Release Semantics
CPU0
spin_lock
  …
  …
CPU0
spin_lock(&l)
spin_unlock(&l)
CPU1
spin_lock(&l)
  
 
spin_unlock(&l)
CR
CR
RELEASE
ACQUIRE
smp_store_release(lock→val, 0) <­> cmpxchg_acquire(lock→val, 0, LOCKED)  
42
Acquire/Release Semantics
CPU0
spin_lock
  …
  …
CPU0
spin_lock(&l)
spin_unlock(&l)
CPU1
spin_lock(&l)
  
 
spin_unlock(&l)
CR
CR
RELEASE
(LS, SS)
ACQUIRE
(LL, LS)
smp_store_release(lock→val, 0) <­> cmpxchg_acquire(lock→val, 0, LOCKED)
43
Acquire/Release Semantics
CPU0
spin_lock
  …
  …
CPU0
spin_lock(&l)
spin_unlock(&l)
CPU1
spin_lock(&l)
  
 
spin_unlock(&l)
CR
CR
RELEASE
ACQUIRE
smp_store_release(lock→val, 0) <­> cmpxchg_acquire(lock→val, 0, LOCKED)
44
Acquire/Release Semantics
CPU0
spin_lock
  …
  …
CPU0
spin_lock(&l)
spin_unlock(&l)
CPU1
spin_lock(&l)
  
 
spin_unlock(&l)
CR
CR
RELEASE
ACQUIRE
smp_store_release(lock→val, 0) <­> cmpxchg_acquire(lock→val, 0, LOCKED)
45
Acquire/Release Semantics
CPU0
spin_lock
  …
  …
CPU0
spin_lock(&l)
spin_unlock(&l)
CPU1
spin_lock(&l)
  
 
spin_unlock(&l)
CR
CR
RELEASE
ACQUIRE
smp_store_release(lock→val, 0) <­> cmpxchg_acquire(lock→val, 0, LOCKED)
46
Acquire/Release Semantics
• Regular atomic/RMW calls have been fine grained for
archs that support strict acquire/release semantics.
• Currently only used by arm64 and PPC.
‒ LDAR/STLR
cmpxchg()
cmpxchg_acquire()
cmpxchg_release()
cmpxchg_relaxed()
smp_load_acquire()
smp_cond_acquire()
smp_store_release()
47
Acquire/Release Semantics
• These are minimal guarantees.
‒ Ensuring barriers on both sides of a lock operation will require
therefore, full barrier semantics:
smp_mb__before_spinlock()
smp_mb__after_spinlock()
• Certainly not limited to locking.
‒ perf, IPI paths, scheduler, tty, etc.
48
Acquire/Release Semantics
• Busy-waiting on a variable that requires ACQUIRE
semantics:
CPU0
while (!done)
cpu_relax();
smp_rmb();
CPU1
smp_store_release(done, 1);
49
Acquire/Release Semantics
• Busy-waiting on a variable that requires ACQUIRE
semantics:
CPU0
while (!done)
cpu_relax();
               [LS]  
smp_rmb();     [LL]
CPU1
smp_store_release(done, 1);
50
Acquire/Release Semantics
• Busy-waiting on a variable that requires ACQUIRE
semantics:
CPU0
while (!done)
cpu_relax();
               [LS]  
smp_rmb();     [LL]
CPU1
smp_store_release(done, 1);
smp_load_acquire(!done);
51
Acquire/Release Semantics
• Busy-waiting on a variable that requires ACQUIRE
semantics:
CPU0
while (!done)
cpu_relax();
               [LS]  
smp_rmb();     [LL]
CPU1
smp_store_release(done, 1);
• Fine-graining SMP barriers while a performance
optimization, makes it harder for kernel programmers.
52
Concluding Remarks
• Assume nothing.
• Read memory-barriers.txt
• Use barrier pairings.
• Comment barriers.
Thank you.
54

Mais conteúdo relacionado

Mais procurados

Building Network Functions with eBPF & BCC
Building Network Functions with eBPF & BCCBuilding Network Functions with eBPF & BCC
Building Network Functions with eBPF & BCC
Kernel TLV
 

Mais procurados (20)

Distributed Point-in-Time Recovery with Postgres | PGConf.Russia 2018 | Eren ...
Distributed Point-in-Time Recovery with Postgres | PGConf.Russia 2018 | Eren ...Distributed Point-in-Time Recovery with Postgres | PGConf.Russia 2018 | Eren ...
Distributed Point-in-Time Recovery with Postgres | PGConf.Russia 2018 | Eren ...
 
Experience on porting HIGHMEM and KASAN to RISC-V at COSCUP 2020
Experience on porting HIGHMEM and KASAN to RISC-V at COSCUP 2020Experience on porting HIGHMEM and KASAN to RISC-V at COSCUP 2020
Experience on porting HIGHMEM and KASAN to RISC-V at COSCUP 2020
 
Building Network Functions with eBPF & BCC
Building Network Functions with eBPF & BCCBuilding Network Functions with eBPF & BCC
Building Network Functions with eBPF & BCC
 
Linux Memory Analysis with Volatility
Linux Memory Analysis with VolatilityLinux Memory Analysis with Volatility
Linux Memory Analysis with Volatility
 
The Linux Block Layer - Built for Fast Storage
The Linux Block Layer - Built for Fast StorageThe Linux Block Layer - Built for Fast Storage
The Linux Block Layer - Built for Fast Storage
 
Linux MMAP & Ioremap introduction
Linux MMAP & Ioremap introductionLinux MMAP & Ioremap introduction
Linux MMAP & Ioremap introduction
 
Backup
BackupBackup
Backup
 
AnsibleではじめるNW設定の自動化について - Cisco(VIRL)編 -
AnsibleではじめるNW設定の自動化について - Cisco(VIRL)編 -AnsibleではじめるNW設定の自動化について - Cisco(VIRL)編 -
AnsibleではじめるNW設定の自動化について - Cisco(VIRL)編 -
 
SFO15-302: Energy Aware Scheduling: Progress Update
SFO15-302: Energy Aware Scheduling: Progress UpdateSFO15-302: Energy Aware Scheduling: Progress Update
SFO15-302: Energy Aware Scheduling: Progress Update
 
Build a High Available NFS Cluster Based on CephFS - Shangzhong Zhu
Build a High Available NFS Cluster Based on CephFS - Shangzhong ZhuBuild a High Available NFS Cluster Based on CephFS - Shangzhong Zhu
Build a High Available NFS Cluster Based on CephFS - Shangzhong Zhu
 
Лекція №1
Лекція №1Лекція №1
Лекція №1
 
Introduction to systemd
Introduction to systemdIntroduction to systemd
Introduction to systemd
 
Deploying IPv6 on OpenStack
Deploying IPv6 on OpenStackDeploying IPv6 on OpenStack
Deploying IPv6 on OpenStack
 
Understanding binder in android
Understanding binder in androidUnderstanding binder in android
Understanding binder in android
 
Linux Network Stack
Linux Network StackLinux Network Stack
Linux Network Stack
 
HTTP2 最速実装 〜入門編〜
HTTP2 最速実装 〜入門編〜HTTP2 最速実装 〜入門編〜
HTTP2 最速実装 〜入門編〜
 
The Basic Introduction of Open vSwitch
The Basic Introduction of Open vSwitchThe Basic Introduction of Open vSwitch
The Basic Introduction of Open vSwitch
 
HA Deployment Architecture with HAProxy and Keepalived
HA Deployment Architecture with HAProxy and KeepalivedHA Deployment Architecture with HAProxy and Keepalived
HA Deployment Architecture with HAProxy and Keepalived
 
Linux Kernel Module - For NLKB
Linux Kernel Module - For NLKBLinux Kernel Module - For NLKB
Linux Kernel Module - For NLKB
 
Linux boot process
Linux boot processLinux boot process
Linux boot process
 

Destaque

Linux kernel development chapter 10
Linux kernel development chapter 10Linux kernel development chapter 10
Linux kernel development chapter 10
huangachou
 
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
Chris Adkin
 
Red hat enterprise_virtualization_load
Red hat enterprise_virtualization_loadRed hat enterprise_virtualization_load
Red hat enterprise_virtualization_load
silviucojocaru
 
Shoot4U: Using VMM Assists to Optimize TLB Operations on Preempted vCPUs
Shoot4U: Using VMM Assists to Optimize TLB Operations on Preempted vCPUsShoot4U: Using VMM Assists to Optimize TLB Operations on Preempted vCPUs
Shoot4U: Using VMM Assists to Optimize TLB Operations on Preempted vCPUs
Jiannan Ouyang, PhD
 
Achieving Performance Isolation with Lightweight Co-Kernels
Achieving Performance Isolation with Lightweight Co-KernelsAchieving Performance Isolation with Lightweight Co-Kernels
Achieving Performance Isolation with Lightweight Co-Kernels
Jiannan Ouyang, PhD
 
Preemptable ticket spinlocks: improving consolidated performance in the cloud
Preemptable ticket spinlocks: improving consolidated performance in the cloudPreemptable ticket spinlocks: improving consolidated performance in the cloud
Preemptable ticket spinlocks: improving consolidated performance in the cloud
Jiannan Ouyang, PhD
 

Destaque (20)

Futex Scaling for Multi-core Systems
Futex Scaling for Multi-core SystemsFutex Scaling for Multi-core Systems
Futex Scaling for Multi-core Systems
 
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
 
Dead Lock Analysis of spin_lock() in Linux Kernel (english)
Dead Lock Analysis of spin_lock() in Linux Kernel (english)Dead Lock Analysis of spin_lock() in Linux Kernel (english)
Dead Lock Analysis of spin_lock() in Linux Kernel (english)
 
Linux kernel development chapter 10
Linux kernel development chapter 10Linux kernel development chapter 10
Linux kernel development chapter 10
 
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
 
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!
 
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
 
Java memory model
Java memory modelJava memory model
Java memory model
 
Red hat enterprise_virtualization_load
Red hat enterprise_virtualization_loadRed hat enterprise_virtualization_load
Red hat enterprise_virtualization_load
 
Linux and H/W optimizations for MySQL
Linux and H/W optimizations for MySQLLinux and H/W optimizations for MySQL
Linux and H/W optimizations for MySQL
 
6th Generation Processor Announcement
6th Generation Processor Announcement6th Generation Processor Announcement
6th Generation Processor Announcement
 
ENERGY EFFICIENCY OF ARM ARCHITECTURES FOR CLOUD COMPUTING APPLICATIONS
ENERGY EFFICIENCY OF ARM ARCHITECTURES FOR CLOUD COMPUTING APPLICATIONSENERGY EFFICIENCY OF ARM ARCHITECTURES FOR CLOUD COMPUTING APPLICATIONS
ENERGY EFFICIENCY OF ARM ARCHITECTURES FOR CLOUD COMPUTING APPLICATIONS
 
Shoot4U: Using VMM Assists to Optimize TLB Operations on Preempted vCPUs
Shoot4U: Using VMM Assists to Optimize TLB Operations on Preempted vCPUsShoot4U: Using VMM Assists to Optimize TLB Operations on Preempted vCPUs
Shoot4U: Using VMM Assists to Optimize TLB Operations on Preempted vCPUs
 
Achieving Performance Isolation with Lightweight Co-Kernels
Achieving Performance Isolation with Lightweight Co-KernelsAchieving Performance Isolation with Lightweight Co-Kernels
Achieving Performance Isolation with Lightweight Co-Kernels
 
LinuxCon2009: 10Gbit/s Bi-Directional Routing on standard hardware running Linux
LinuxCon2009: 10Gbit/s Bi-Directional Routing on standard hardware running LinuxLinuxCon2009: 10Gbit/s Bi-Directional Routing on standard hardware running Linux
LinuxCon2009: 10Gbit/s Bi-Directional Routing on standard hardware running Linux
 
Denser, cooler, faster, stronger: PHP on ARM microservers
Denser, cooler, faster, stronger: PHP on ARM microserversDenser, cooler, faster, stronger: PHP on ARM microservers
Denser, cooler, faster, stronger: PHP on ARM microservers
 
Cache profiling on ARM Linux
Cache profiling on ARM LinuxCache profiling on ARM Linux
Cache profiling on ARM Linux
 
Docker by demo
Docker by demoDocker by demo
Docker by demo
 
Preemptable ticket spinlocks: improving consolidated performance in the cloud
Preemptable ticket spinlocks: improving consolidated performance in the cloudPreemptable ticket spinlocks: improving consolidated performance in the cloud
Preemptable ticket spinlocks: improving consolidated performance in the cloud
 

Semelhante a Memory Barriers in the Linux Kernel

W1.1 i os in database
W1.1   i os in databaseW1.1   i os in database
W1.1 i os in database
gafurov_x
 
Parallelism Processor Design
Parallelism Processor DesignParallelism Processor Design
Parallelism Processor Design
Sri Prasanna
 
Asynchronous Io Programming
Asynchronous Io ProgrammingAsynchronous Io Programming
Asynchronous Io Programming
l xf
 
qdoc.tips_oracle-dba-interview-questions.pdf
qdoc.tips_oracle-dba-interview-questions.pdfqdoc.tips_oracle-dba-interview-questions.pdf
qdoc.tips_oracle-dba-interview-questions.pdf
OsamaQahtan
 
[Harvard CS264] 02 - Parallel Thinking, Architecture, Theory & Patterns
[Harvard CS264] 02 - Parallel Thinking, Architecture, Theory & Patterns[Harvard CS264] 02 - Parallel Thinking, Architecture, Theory & Patterns
[Harvard CS264] 02 - Parallel Thinking, Architecture, Theory & Patterns
npinto
 
Smashing the stack for fun and profit
Smashing the stack for fun and profitSmashing the stack for fun and profit
Smashing the stack for fun and profit
Alexey Miasoedov
 
Porting FreeRTOS on OpenRISC
Porting FreeRTOS   on   OpenRISCPorting FreeRTOS   on   OpenRISC
Porting FreeRTOS on OpenRISC
Yi-Chiao
 

Semelhante a Memory Barriers in the Linux Kernel (20)

Memory model
Memory modelMemory model
Memory model
 
W1.1 i os in database
W1.1   i os in databaseW1.1   i os in database
W1.1 i os in database
 
Cpu Cache and Memory Ordering——并发程序设计入门
Cpu Cache and Memory Ordering——并发程序设计入门Cpu Cache and Memory Ordering——并发程序设计入门
Cpu Cache and Memory Ordering——并发程序设计入门
 
Parallelism Processor Design
Parallelism Processor DesignParallelism Processor Design
Parallelism Processor Design
 
Asynchronous Io Programming
Asynchronous Io ProgrammingAsynchronous Io Programming
Asynchronous Io Programming
 
lec5 - The processor.pptx
lec5 - The processor.pptxlec5 - The processor.pptx
lec5 - The processor.pptx
 
Beginbackup
BeginbackupBeginbackup
Beginbackup
 
ScyllaDB: NoSQL at Ludicrous Speed
ScyllaDB: NoSQL at Ludicrous SpeedScyllaDB: NoSQL at Ludicrous Speed
ScyllaDB: NoSQL at Ludicrous Speed
 
Spark Summit EU talk by Qifan Pu
Spark Summit EU talk by Qifan PuSpark Summit EU talk by Qifan Pu
Spark Summit EU talk by Qifan Pu
 
qdoc.tips_oracle-dba-interview-questions.pdf
qdoc.tips_oracle-dba-interview-questions.pdfqdoc.tips_oracle-dba-interview-questions.pdf
qdoc.tips_oracle-dba-interview-questions.pdf
 
spinlock.pdf
spinlock.pdfspinlock.pdf
spinlock.pdf
 
Memory model
Memory modelMemory model
Memory model
 
Lec7
Lec7Lec7
Lec7
 
[Harvard CS264] 02 - Parallel Thinking, Architecture, Theory & Patterns
[Harvard CS264] 02 - Parallel Thinking, Architecture, Theory & Patterns[Harvard CS264] 02 - Parallel Thinking, Architecture, Theory & Patterns
[Harvard CS264] 02 - Parallel Thinking, Architecture, Theory & Patterns
 
Integrating Cache Oblivious Approach with Modern Processor Architecture: The ...
Integrating Cache Oblivious Approach with Modern Processor Architecture: The ...Integrating Cache Oblivious Approach with Modern Processor Architecture: The ...
Integrating Cache Oblivious Approach with Modern Processor Architecture: The ...
 
Scylla Summit 2018: Make Scylla Fast Again! Find out how using Tools, Talent,...
Scylla Summit 2018: Make Scylla Fast Again! Find out how using Tools, Talent,...Scylla Summit 2018: Make Scylla Fast Again! Find out how using Tools, Talent,...
Scylla Summit 2018: Make Scylla Fast Again! Find out how using Tools, Talent,...
 
Smashing the stack for fun and profit
Smashing the stack for fun and profitSmashing the stack for fun and profit
Smashing the stack for fun and profit
 
Porting FreeRTOS on OpenRISC
Porting FreeRTOS   on   OpenRISCPorting FreeRTOS   on   OpenRISC
Porting FreeRTOS on OpenRISC
 
Re-Architecting Spark For Performance Understandability
Re-Architecting Spark For Performance UnderstandabilityRe-Architecting Spark For Performance Understandability
Re-Architecting Spark For Performance Understandability
 
Re-Architecting Spark For Performance Understandability
Re-Architecting Spark For Performance UnderstandabilityRe-Architecting Spark For Performance Understandability
Re-Architecting Spark For Performance Understandability
 

Último

Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
VictoriaMetrics
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
masabamasaba
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
masabamasaba
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
masabamasaba
 

Último (20)

Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 

Memory Barriers in the Linux Kernel