SlideShare ist ein Scribd-Unternehmen logo
1 von 38
Downloaden Sie, um offline zu lesen
1 . 1
E8 STORAGE
Come join us at careers@e8storage.com
https://goo.gl/FOuczd
2 . 1
HIGH PERFORMANCE STORAGE
DEVICES IN KERNEL
E8 Storage
By /Evgeny Budilovsky @budevg
12 Jan 2016
3 . 1
STORAGE STACK 101
3 . 2
APPLICATION
Application invokes system calls (read, write, mmap) on
files
Block device files - direct access to block device
Regular files - access through specific file system (ext4,
btrfs, etc.)
3 . 3
FILE SYSTEM
system calls go through VFS layer
specific file system logic applied
read/write operations translated into read/write of
memory pages
Page cache involved to reduce disk access
3 . 4
BIO LAYER (STRUCT BIO)
File system constructs BIO unit which is the main unit of IO
Dispatch bio to block layer / bypass driver (make_request_fn
driver)
3 . 5
BLOCK LAYER (STRUCT REQUEST)
Setup struct request and move it
to request queue (single queue
per device)
IO scheduler can delay/merge
requests
Dispatch requests
To hardware drivers
(request_fn driver)
To scsi layer (scsi devices)
SCSI LAYER (STRUCT SCSI_CMND)
translate request into
scsi command
dispatch command
to low level scsi
drivers
3 . 6
WRITE (O_DIRECT)
# Application 
perf record ­g dd if=/dev/zero of=1.bin bs=4k  
     count=1000000 oflag=direct 
... 
perf report ­­call­graph ­­stdio 
# Submit into block queue (bypass page cache) 
write 
  system_call_fastpath 
    sys_write 
      vfs_write 
        new_sync_write 
          ext4_file_write_iter 
            __generic_file_write_iter 
              generic_file_direct_write 
                ext4_direct_IO 
                  ext4_ind_direct_IO 
                    __blockdev_direct_IO 
                      do_blockdev_direct_IO 
                        submit_bio 
                          generic_make_request 
3 . 7
# after io scheduling submit to scsi layer and to the hardware 
     ... 
io_schedule 
  blk_flush_plug_list 
   queue_unplugged 
    __blk_run_queue 
      scsi_request_fn 
        scsi_dispatch_cmd 
          ata_scsi_queuecmd 
3 . 8
3 . 9
WRITE (WITH PAGE CACHE)
# Application 
perf record ­g dd if=/dev/zero of=1.bin bs=4k  
     count=1000000 
... 
perf report ­­call­graph ­­stdio 
# write data into page cache 
write 
  system_call_fastpath 
    sys_write 
      vfs_write 
        new_sync_write 
          ext4_file_write_iter 
            __generic_file_write_iter 
              generic_perform_write 
                ext4_da_write_begin 
                  grab_cache_page_write_begin 
                    pagecache_get_page 
                      __page_cache_alloc 
                        alloc_pages_current 
# asynchronously flush dirty pages to disk 
kthread 
  worker_thread 
    process_one_work 
      bdi_writeback_workfn 
        wb_writeback 
          __writeback_inodes_wb 
            writeback_sb_inodes 
              __writeback_single_inode 
                do_writepages 
                  ext4_writepages 
                    mpage_map_and_submit_buffers 
                      mpage_submit_page 
                        ext4_bio_write_page 
                          ext4_io_submit 
                            submit_bio 
                              generic_make_request 
                                blk_queue_bio 
3 . 10
4 . 1
HIGH PERFORMANCE BLOCK
DEVICES
4 . 2
CHANGES IN STORAGE WORLD
Rotational devices (HDD)
"hundreds" of IOPS , "tens" of
milliseconds latency
Today, flash based devices (SSD)
"hundreds of thousands" of IOPS,
"tens" of microseconds latency
Large internal data parallelism
Increase in cores and NUMA
architecture
New standardized storage
interfaces (NVME)
4 . 3
NVM EXPRESS
4 . 4
HIGH PERFORMANCE STANDARD
Standardized interface for PCIe
SSDs
Designed from the ground up to
exploit
Low latency of today’s PCIe-
based SSD’s
Parallelism of today’s CPU’s
BEATS AHCI STANDARD FOR SATA HOSTS
  AHCI NVME
Maximum Queue
Depth
1 command queue 32 commands
per Q
64K queues 64K
Commands per Q
Un-cacheable register
accesses (2K cycles
6 per non-queued command 9 per
queued command
2 per command
MSI-X and Interrupt
Steering
Single interrupt; no steering 2K MSI-X interrupts
Parallelism & Multiple
Threads
Requires synchronization lock to
issue command
No locking
Efficiency for 4KB
Commands
Command parameters require two
serialized host DRAM fetches
Command
parameters in one
64B fetch
4 . 54 . 6
IOPS
consumer grade NVME SSDs (enterprise grade have much
better performance)
100% writes less impressive due to NAND limitation
4 . 7
BANDWIDTH
4 . 8
LATENCY
5 . 1
THE OLD STACK DOES NOT SCALE
5 . 2
THE NULL_BLK EXPERIMENT
Jens Axboe (Facebook)
null_blk configuration
queue_mode=1(rq) completion_nsec=0
irqmode=0(none)
fio
Each thread does pread(2), 4k, randomly, O_DIRECT
Each added thread alternates between the two available
NUMA nodes (2 socket system, 32 threads)
5 . 3
LIMITED PERFORMANCE
5 . 4
PERF
Spinlock
contention
5 . 5
PERF
40% from sending request (blk_queue_bio)
20% from completing request (blk_end_bidi_request)
18% sending bio from the application to the bio layer
(blk_flush_plug_list)
5 . 6
OLD STACK HAS SEVERE SCALING ISSUES
5 . 7
PROBLEMS
Good scalability before block layer (file system, page
cache, bio)
Single shared queue is a problem
We can use bypass mode driver which will work with bio's
without getting into shared queue.
Problem with bypass driver: code duplication
6 . 1
BLOCK MULTI-QUEUE TO THE
RESCUE
6 . 2
HISTORY
Prototyped in 2011
Paper in SYSTOR 2013
Merged into linux 3.13 (2014)
A replacement for old block layer with different driver API
Drivers gradually converted to blk-mq (scsi-mq, nvme-
core, virtio_blk)
6 . 3
ARCHITECTURE - 2 LAYERS OF QUEUES
Application works with per-
CPU software queue
Multiple software queues
map into hardware queues
Number of HW queues is
based on number of HW
contexts supported by
device
Requests from HW queue
submitted by low level
driver to the device
ARCHITECTURE - ALLOCATION AND TAGGING
IO tag
Is an integer value that uniquely identifies IO submitted
to hardware
On completion we can use the tag to find out which IO
was completed
Legacy drivers maintained their own implementation
of tagging
With block-mq, requests allocated at initialization time
(based on queue depth)
Tag and request allocations combined
Avoids per request allocations in driver and tag
maintenance
6 . 46 . 5
ARCHITECTURE - I/O COMPLETIONS
Generally we want completions to be as local as possible
Use IPIs to complete requests on submitting node
Old block layer was using software interrupts instead of
IPIs
Best case there is an SQ/CQ pair for each core, with MSI-X
interrupt setup for each CQ, steered to the relevant core
IPIs used when there aren't enough interrupts/HW queues
6 . 6
NULL_BLK EXPERIMENT AGAIN
null_blk configuration
queue_mode=2(multiqueue) completion_nsec=0
irqmode=0(none) submit_queues=32
fio
Each thread does pread(2), 4k, randomly, O_DIRECT
Each added thread alternates between the two available
NUMA nodes (2 socket system, 32 threads)
6 . 7
SUCCESS
6 . 8
WHAT ABOUT HARDWARE WITHOUT MULTI
QUEUE SUPPORT
Same null_blk setup
1/2/n hw queues in blk-mq
mq-1 and mq-2 so close
since we have 2 sockets
system
Numa issues eliminated
once we have queue per
numa node
CONVERSION PROGRESS
mtip32xx (micron SSD)
NVMe
virtio_blk, xen block
driver
rbd (ceph block)
loop
ubi
SCSI (scsi-mq)
6 . 97 . 1
SUMMARY
Storage device performance has accelerated from
hundreds of IOPS to hundreds thousands of IOPS
Bottlenecks in software gradually eliminated by
exploiting concurrency and introducing lock-less
architecture
blk-mq is one example
Questions ?
8 . 1
REFERENCES
1.
2.
3.
4.
5.
6.
7.
Linux Block IO: Introducing Multi-queue SSD Access on
Multi-core Systems
The Performance Impact of NVMe and NVMe over Fabrics
Null block device driver
blk-mq: new multi-queue block IO queueing mechanism
fio
perf
Solving the Linux storage scalability bottlenecks - by Jens
Axboe

Weitere ähnliche Inhalte

Was ist angesagt?

Memory management in vx works
Memory management in vx worksMemory management in vx works
Memory management in vx works
Dhan V Sagar
 
Containers are the future of the Cloud
Containers are the future of the CloudContainers are the future of the Cloud
Containers are the future of the Cloud
Pavel Odintsov
 
Linux Kernel Programming
Linux Kernel ProgrammingLinux Kernel Programming
Linux Kernel Programming
Nalin Sharma
 
Introduction to NetBSD kernel
Introduction to NetBSD kernelIntroduction to NetBSD kernel
Introduction to NetBSD kernel
Mahendra M
 
Linux internal
Linux internalLinux internal
Linux internal
mcganesh
 

Was ist angesagt? (20)

Linux kernel
Linux kernelLinux kernel
Linux kernel
 
Browsing Linux Kernel Source
Browsing Linux Kernel SourceBrowsing Linux Kernel Source
Browsing Linux Kernel Source
 
Linux Internals - Kernel/Core
Linux Internals - Kernel/CoreLinux Internals - Kernel/Core
Linux Internals - Kernel/Core
 
Part 02 Linux Kernel Module Programming
Part 02 Linux Kernel Module ProgrammingPart 02 Linux Kernel Module Programming
Part 02 Linux Kernel Module Programming
 
Kernel Recipes 2015 - So you want to write a Linux driver framework
Kernel Recipes 2015 - So you want to write a Linux driver frameworkKernel Recipes 2015 - So you want to write a Linux driver framework
Kernel Recipes 2015 - So you want to write a Linux driver framework
 
Making Linux do Hard Real-time
Making Linux do Hard Real-timeMaking Linux do Hard Real-time
Making Linux do Hard Real-time
 
Introduction to linux containers
Introduction to linux containersIntroduction to linux containers
Introduction to linux containers
 
Memory management in vx works
Memory management in vx worksMemory management in vx works
Memory management in vx works
 
Realizing Linux Containers (LXC)
Realizing Linux Containers (LXC)Realizing Linux Containers (LXC)
Realizing Linux Containers (LXC)
 
Containers are the future of the Cloud
Containers are the future of the CloudContainers are the future of the Cloud
Containers are the future of the Cloud
 
Linux Kernel Programming
Linux Kernel ProgrammingLinux Kernel Programming
Linux Kernel Programming
 
Linux Kernel Tour
Linux Kernel TourLinux Kernel Tour
Linux Kernel Tour
 
A Reimplementation of NetBSD Based on a Microkernel by Andrew S. Tanenbaum
A Reimplementation of NetBSD Based on a Microkernel by Andrew S. TanenbaumA Reimplementation of NetBSD Based on a Microkernel by Andrew S. Tanenbaum
A Reimplementation of NetBSD Based on a Microkernel by Andrew S. Tanenbaum
 
Running Applications on the NetBSD Rump Kernel by Justin Cormack
Running Applications on the NetBSD Rump Kernel by Justin Cormack Running Applications on the NetBSD Rump Kernel by Justin Cormack
Running Applications on the NetBSD Rump Kernel by Justin Cormack
 
Introduction to NetBSD kernel
Introduction to NetBSD kernelIntroduction to NetBSD kernel
Introduction to NetBSD kernel
 
Architecture Of The Linux Kernel
Architecture Of The Linux KernelArchitecture Of The Linux Kernel
Architecture Of The Linux Kernel
 
Linux internal
Linux internalLinux internal
Linux internal
 
Part 01 Linux Kernel Compilation (Ubuntu)
Part 01 Linux Kernel Compilation (Ubuntu)Part 01 Linux Kernel Compilation (Ubuntu)
Part 01 Linux Kernel Compilation (Ubuntu)
 
XPDS16: The OpenXT Project in 2016 - Christopher Clark, BAE Systems
XPDS16: The OpenXT Project in 2016 - Christopher Clark, BAE SystemsXPDS16: The OpenXT Project in 2016 - Christopher Clark, BAE Systems
XPDS16: The OpenXT Project in 2016 - Christopher Clark, BAE Systems
 
Advanced Namespaces and cgroups
Advanced Namespaces and cgroupsAdvanced Namespaces and cgroups
Advanced Namespaces and cgroups
 

Ähnlich wie High Performance Storage Devices in the Linux Kernel

bfarm-v2
bfarm-v2bfarm-v2
bfarm-v2
Zeus G
 
Best Practices for performance evaluation and diagnosis of Java Applications ...
Best Practices for performance evaluation and diagnosis of Java Applications ...Best Practices for performance evaluation and diagnosis of Java Applications ...
Best Practices for performance evaluation and diagnosis of Java Applications ...
IndicThreads
 
Softcore processor.pptxSoftcore processor.pptxSoftcore processor.pptx
Softcore processor.pptxSoftcore processor.pptxSoftcore processor.pptxSoftcore processor.pptxSoftcore processor.pptxSoftcore processor.pptx
Softcore processor.pptxSoftcore processor.pptxSoftcore processor.pptx
SnehaLatha68
 
FlexSC: Exception-Less System Calls - presented @ OSDI 2010
FlexSC: Exception-Less System Calls - presented @ OSDI 2010FlexSC: Exception-Less System Calls - presented @ OSDI 2010
FlexSC: Exception-Less System Calls - presented @ OSDI 2010
Livio Soares
 
asap2013-khoa-presentation
asap2013-khoa-presentationasap2013-khoa-presentation
asap2013-khoa-presentation
Abhishek Jain
 
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
 
Describr the features of pentium microppr
Describr the features of pentium micropprDescribr the features of pentium microppr
Describr the features of pentium microppr
edwardkiwalabye1
 
Linux kernel-rootkit-dev - Wonokaerun
Linux kernel-rootkit-dev - WonokaerunLinux kernel-rootkit-dev - Wonokaerun
Linux kernel-rootkit-dev - Wonokaerun
idsecconf
 

Ähnlich wie High Performance Storage Devices in the Linux Kernel (20)

bfarm-v2
bfarm-v2bfarm-v2
bfarm-v2
 
Best Practices for performance evaluation and diagnosis of Java Applications ...
Best Practices for performance evaluation and diagnosis of Java Applications ...Best Practices for performance evaluation and diagnosis of Java Applications ...
Best Practices for performance evaluation and diagnosis of Java Applications ...
 
Softcore processor.pptxSoftcore processor.pptxSoftcore processor.pptx
Softcore processor.pptxSoftcore processor.pptxSoftcore processor.pptxSoftcore processor.pptxSoftcore processor.pptxSoftcore processor.pptx
Softcore processor.pptxSoftcore processor.pptxSoftcore processor.pptx
 
L05 parallel
L05 parallelL05 parallel
L05 parallel
 
Brief Introduction to Parallella
Brief Introduction to ParallellaBrief Introduction to Parallella
Brief Introduction to Parallella
 
FlexSC: Exception-Less System Calls - presented @ OSDI 2010
FlexSC: Exception-Less System Calls - presented @ OSDI 2010FlexSC: Exception-Less System Calls - presented @ OSDI 2010
FlexSC: Exception-Less System Calls - presented @ OSDI 2010
 
asap2013-khoa-presentation
asap2013-khoa-presentationasap2013-khoa-presentation
asap2013-khoa-presentation
 
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
 
Nodes and Networks for HPC computing
Nodes and Networks for HPC computingNodes and Networks for HPC computing
Nodes and Networks for HPC computing
 
CCNA Icnd110 s06l02
CCNA Icnd110 s06l02CCNA Icnd110 s06l02
CCNA Icnd110 s06l02
 
Presentation sparc m6 m5-32 server technical overview
Presentation   sparc m6 m5-32 server technical overviewPresentation   sparc m6 m5-32 server technical overview
Presentation sparc m6 m5-32 server technical overview
 
BURA Supercomputer
BURA SupercomputerBURA Supercomputer
BURA Supercomputer
 
The Cell Processor
The Cell ProcessorThe Cell Processor
The Cell Processor
 
Describr the features of pentium microppr
Describr the features of pentium micropprDescribr the features of pentium microppr
Describr the features of pentium microppr
 
Os
OsOs
Os
 
Squash Those IoT Security Bugs with a Hardened System Profile
Squash Those IoT Security Bugs with a Hardened System ProfileSquash Those IoT Security Bugs with a Hardened System Profile
Squash Those IoT Security Bugs with a Hardened System Profile
 
2337610
23376102337610
2337610
 
os
osos
os
 
Linux kernel-rootkit-dev - Wonokaerun
Linux kernel-rootkit-dev - WonokaerunLinux kernel-rootkit-dev - Wonokaerun
Linux kernel-rootkit-dev - Wonokaerun
 
Again music
Again musicAgain music
Again music
 

Mehr von Kernel TLV

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
 
netfilter and iptables
netfilter and iptablesnetfilter and iptables
netfilter and iptables
Kernel TLV
 

Mehr von Kernel TLV (20)

DPDK In Depth
DPDK In DepthDPDK In Depth
DPDK In Depth
 
Building Network Functions with eBPF & BCC
Building Network Functions with eBPF & BCCBuilding Network Functions with eBPF & BCC
Building Network Functions with eBPF & BCC
 
SGX Trusted Execution Environment
SGX Trusted Execution EnvironmentSGX Trusted Execution Environment
SGX Trusted Execution Environment
 
Fun with FUSE
Fun with FUSEFun with FUSE
Fun with FUSE
 
Kernel Proc Connector and Containers
Kernel Proc Connector and ContainersKernel Proc Connector and Containers
Kernel Proc Connector and Containers
 
Bypassing ASLR Exploiting CVE 2015-7545
Bypassing ASLR Exploiting CVE 2015-7545Bypassing ASLR Exploiting CVE 2015-7545
Bypassing ASLR Exploiting CVE 2015-7545
 
Present Absence of Linux Filesystem Security
Present Absence of Linux Filesystem SecurityPresent Absence of Linux Filesystem Security
Present Absence of Linux Filesystem Security
 
OpenWrt From Top to Bottom
OpenWrt From Top to BottomOpenWrt From Top to Bottom
OpenWrt From Top to Bottom
 
Make Your Containers Faster: Linux Container Performance Tools
Make Your Containers Faster: Linux Container Performance ToolsMake Your Containers Faster: Linux Container Performance Tools
Make Your Containers Faster: Linux Container Performance Tools
 
Emerging Persistent Memory Hardware and ZUFS - PM-based File Systems in User ...
Emerging Persistent Memory Hardware and ZUFS - PM-based File Systems in User ...Emerging Persistent Memory Hardware and ZUFS - PM-based File Systems in User ...
Emerging Persistent Memory Hardware and ZUFS - PM-based File Systems in User ...
 
File Systems: Why, How and Where
File Systems: Why, How and WhereFile Systems: Why, How and Where
File Systems: Why, How and Where
 
netfilter and iptables
netfilter and iptablesnetfilter and iptables
netfilter and iptables
 
KernelTLV Speaker Guidelines
KernelTLV Speaker GuidelinesKernelTLV Speaker Guidelines
KernelTLV Speaker Guidelines
 
Userfaultfd: Current Features, Limitations and Future Development
Userfaultfd: Current Features, Limitations and Future DevelopmentUserfaultfd: Current Features, Limitations and Future Development
Userfaultfd: Current Features, Limitations and Future Development
 
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 Kernel Cryptographic API and Use Cases
Linux Kernel Cryptographic API and Use CasesLinux Kernel Cryptographic API and Use Cases
Linux Kernel Cryptographic API and Use Cases
 
DMA Survival Guide
DMA Survival GuideDMA Survival Guide
DMA Survival Guide
 
FD.IO Vector Packet Processing
FD.IO Vector Packet ProcessingFD.IO Vector Packet Processing
FD.IO Vector Packet Processing
 
WiFi and the Beast
WiFi and the BeastWiFi and the Beast
WiFi and the Beast
 
Introduction to DPDK
Introduction to DPDKIntroduction to DPDK
Introduction to DPDK
 

Kürzlich hochgeladen

+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
 
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
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 

Kürzlich hochgeladen (20)

+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...
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
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...
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
 
WSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - Keynote
 
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
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
 
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
%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
 
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
 
%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
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 

High Performance Storage Devices in the Linux Kernel