8. 8
Storage Evolution
Technology claims are based on comparisons of latency, density and write cycling metrics amongst memory technologies recorded on published
specifications of in-market memory products against internal Intel specifications.
10. 10
NVMe: Best-in-Class IOPS, Lower/Consistent Latency
Lowest Latency of Standard Storage Interfaces
0
500000
100% Read 70% Read 0% Read
IOPS
IOPS - 4K Random Workloads
PCIe/NVMe SAS 12Gb/s
3x better IOPS vs SAS 12Gbps For the same #CPU cycles, NVMe delivers over 2X the IOPs of SAS!
Gen1 NVMe has 2 to 3x better Latency Consistency vs SAS
Test and System Configurations: PCI Express* (PCIe*)/NVM Express* (NVMe) Measurements made on Intel® Core™ i7-3770S system @ 3.1GHz and 4GB Mem running Windows* Server 2012 Standard O/S, Intel
PCIe/NVMe SSDs, data collected by IOmeter* tool. SAS Measurements from HGST Ultrastar* SSD800M/1000M (SAS), SATA S3700 Series. For more complete information about performance and benchmark results, visit
http://www.intel.com/performance. Source: Intel Internal Testing.
12. QCT CONFIDENTIAL
Stage Test Subject Benchmark tools Major Task
I/O Baseline Raw Disk FIO
Determine maximum server IO
backplane bandwidth
Network Baseline NIC iPerf
Ensure consistent network
bandwidth between all nodes
Bare Metal RBD Baseline LibRBD FIO CBT
Use FIO RBD engine to test
performance using libRBD
Docker Container OLTP
Baseline
Percona DB + Sysbench Sysbench/OLTP
Establish number of workload-
driver VMs desired per client
Benchmark criteria:
1. Default: ceph.conf
2. Software Level Tuning: ceph.conf tuned
3. Software + NUMA CPU Pinning: ceph.conf tuned + NUMA CPU Pinning
Benchmark Methodology
QCT CONFIDENTIAL
13. 5-Node all-NVMe Ceph Cluster
Dual-Xeon E5 2699v4@2.3GHz, 88 HT, 128GB DDR4
RHEL 7.3, 3.10, Red Hat Ceph 2.1
10x Client Systems
Dual-Xeon E5 2699v4@2.3GHz
88 HT, 128 GB DDR4
Ceph OSD1
Ceph OSD2
Ceph OSD3
Ceph OSD4
Ceph OSD16
…
NVMe3
NVMe2
NVMe4
NVMe1
20x 2TB P3520 SSDs
80 OSDs
2x Replication
19TB Effective Capacity
Tests at cluster fill-level
82%
Ceph RBD Client
Docker3
Sysbench Client
Docker4
Sysbench Client
Docker2 (krbd)
Percona DB Server
Docker1 (krbd)
Percona DB Server
Cluster NW 10 GbE
Sysbench Containers
16 vCPUs, 32GB RAM
FIO 2.8, Sysbench 0.5
DB Containers
16 vCPUs, 32GB RAM,
200GB RBD volume,
100GB MySQL dataset
InnoDB buf cache 25GB(25%)
Public NW 10 GbE
QuantaGrid D51BP-1U
QCT CONFIDENTIAL
Detailed System Architecture in QCT Lab
14. QCT CONFIDENTIAL
• use faster media for journals, metadata
• use recent Linux kernels
– blk-mq support packs big performance gains with NVMe media
– optimizations for non-rotational media
• use tuned where available
– adaptive latency performance tuning [2]
• virtual memory, network and storage tweaks
– use commonly recommended VM, network settings [1-4]
– enable rq_affinity, read ahead for NVMe devices
• BIOS and CPU performance governor settings
– disable C-states and enable Turbo-boost
– use “performance” CPU governor
Configuring All-flash Ceph
System Tuning for Low-latency Workloads
[1] https://wiki.mikejung.biz/Ubuntu_Performance_Tuning
[2] https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Power_Management_Guide/tuned-adm.html
[3] http://www.brendangregg.com/blog/2015-03-03/performance-tuning-linux-instances-on-ec2.html
[4] https://www.suse.com/documentation/ses-4/singlehtml/book_storage_admin/book_storage_admin.html
15. Parameter Default value Tuned value
objecter_inflight_ops 1024 102400 Objecter is responsible for sending requests to OSD.
objecter_inflight_ops_bytes 104857600 1048576000
Objecter_inflight_ops/objecter_inflight_op_bytes tell objecter to
throttle outgoing ops according to budget (values based on
experiments in the Dumpling timeframe)
ms_dispatch_throttle_bytes 104857600 1048576000
ms_dispatch_throttle_bytes throttle is to dispatch message size for
simple messenger (values based on experiments in the Dumpling
timeframe)
filestore_queue_max_ops 50 5000
filestore_queue_max_ops/filestore_queue_max_bytes throttle are
used to throttle inflight ops for filestore
filestore_queue_max_bytes 104857600 1048576000
These throttles are checked before sending ops to journal, so if filestore
does not get enough budget for current op, OSD op thread will be
blocked
Configuring All-flash Ceph
Ceph Tunables
16. 16
Parameter
Default
value
Tuned
value
filestore_max_sync_interval 5 10
filestore_max_sync_interval controls the interval (in seconds) that sync thread flush
data from memory to disk. Use page cache - by default filestore writes data to
memory and sync thread is responsible for flushing data to disk, then journal entries
can be trimmed. Note that large filestore_max_sync_interval can cause performance
spike
filestore_op_threads 2 6
filestore_op_threads controls the number of filesystem operation threads that
execute in parallel.
If the storage backend is fast enough and has enough queues to support parallel
operations, it’s recommended to increase this parameter, given there is enough CPU
available
osd_op_threads 2 32
osd_op_threads controls the number of threads to service Ceph OSD Daemon
operations.
Setting this to 0 will disable multi-threading.
Increasing this number may increase the request processing rate
If the storage backend is fast enough and has enough queues to support parallel
operations, it’s recommended to increase this parameter, given there is enough CPU
available
Configuring All-flash Ceph
Ceph Tunables
17. Parameter
Default
value
Tuned value
journal_queue_max_ops 300 3000
journal_queue_max_bytes/journal_queue_max_op throttles are
to throttle inflight ops for journal
If journal does not get enough budget for current op, it will block
OSD op thread
journal_queue_max_bytes 33554432 1048576000
journal_max_write_entries 100 1000
journal_max_write_entries/journal_max_write_bytes throttles
are used to throttle ops or bytes for every journal write
Tweaking these two parameters maybe helpful for small writes
journal_max_write_bytes 10485760 1048576000
Configuring All-flash Ceph
Ceph Tunables
18. • Leverage latest Intel NVMe technology to reach high
performance, bigger capacity, with lower $/GB
– Intel DC P3520 2TB raw performance: 375K read IOPS, 26K write IOPS
• By using multiple OSD partitions, Ceph performance scales
linearly
– Reduces lock contention within a single OSD process
– Lower latency at all queue-depths, biggest impact to random reads
• Introduces the concept of multiple OSD’s on the same physical
device
– Conceptually similar crush map data placement rules as managing disks
in an enclosure
Multi-partitioned NVMe SSDs
OSD 1
OSD 2
OSD 3
OSD 4
19. Multi-partitioned NVMe SSDs
0
2
4
6
8
10
12
0 200,000 400,000 600,000 800,000 1,000,000 1,200,000
AvgLatency (ms)
IOPS
Multiple OSD's per Device comparison
4K Random Read (Latency vs. IOPS)
5 nodes, 20/40/80 OSDs
1 OSD/NVMe 2 OSD/NVMe 4 OSD/NVMe
0
10
20
30
40
50
60
70
80
90
% CPU Utilization
Single Node CPU Utilization Comparison
4K Random Read @QD32
4/8/16 OSDs
1 OSD/NVMe 2 OSD/NVMe 4 OSD/NVMe
These measurements were done on a Ceph node based Intel P3700 NVMe SSDs but are equally applicable to other
20. 0.00
1.00
2.00
3.00
4.00
5.00
6.00
7.00
8.00
9.00
600000 700000 800000 900000 1000000 1100000 1200000 1300000 1400000 1500000 1600000
Average Latency (ms)
IOPS
4K Random Read (Latency vs. IOPS), IODepth scaling 4-128
5 nodes, 10 clients x 10 RBD volumes, Red Hat Ceph Storage 2.1
Default Tuned
~1.57M IOPS @~4ms
200% improvement in IOPS and Latency
Performance Testing Results
4K 100% Random Read
~1.34M IOPS @~1ms, QD=16
200% improvement in IOPS and Latency
27. § All-NVMe Ceph enables high performance workloads
§ NUMA balanced architecture
§ Small footprint (1U), lower overall TCO
§ Million IOPS with very low latency
29. Visit www.QCT.iofor QxStor Red Hat Ceph Storage Edition:
• Reference Architecture Red Hat Ceph Storage on QCT Servers
• Datasheet QxStor Red Hat Ceph Storage
• Solution Brief QCT and Intel Hadoop Over Ceph Architecture
• Solution Brief Deploying Red Hat Ceph Storage on QCT servers
• Solution Brief Containerized Ceph for On-Demand, Hyperscale Storage
For Other Information…