SSD Caching: Device-Mapper- and Hardware-Based Solutions Compared

SSD Caching: Device-Mapper- and Hardware-Based Solutions Compared

SSD Caching: Device-Mapper- and Hardware-based solutions compared Werner Fischer & Georg Schönberger Technology Specialists Thomas-Krenn.AG 18. LinuxTag / Berlin / Germany 24th May 2011 Agenda • Introduction • Technologies compared • A few details • Performance results • Test strategy • Lessons learned slide 2/45 Introduction Source: xkcd.com Do things the right way! slide 3/45 Introduction who is Server & accessories based in Freyung, serving all over Europe "Made in Germany" Bavaria slide 4/45 Should I use SSD caching? slide 5/45 Well, Yes and No... if(dataSet == known && ramAvailable != enough && appAccess == analyzed && perfTests == available) CheckForCacheTechnologies(); else NeedMoreInfo(); slide 6/45 Establish some wording... slide 7/45 Caching Basics slide 8/45 Some main features compared... slide 9/45 SSD Caching – Compared 1 of 6 WB WT WA/read-only FlashCache CacheCade 1 MaxCache ! 2 1Including ForcedWB ! Attention: No redundant cache with multiple SSDs possible 2Including InstantWB slide 10/45 SSD Caching – Comparison 2 of 6 Skip sequential I/O FlashCache 1 CacheCade 2 MaxCache 3 • Maybe your disk RAID is faster for sequential I/O 1Configurable via sysctl (threshold) 2No further details known 3Not configurable, always skipped slide 11/45 SSD Caching – Comparison 3 of 6 Lazy Cleaning FlashCache 1 CacheCade 2 MaxCache 3 • WB: clean dirty pages from SSD to HDD 1Based on threshold and idleness – Dynamic via sysctl 2No further details known 3Background flush with dynamic rate – FlushAndFetchRate – dirtyPageThreshold slide 12/45 SSD Caching – Comparison 4 of 6 Cache persistence FlashCache ! 1 CacheCade 2 MaxCache 3 1Only WB Cache is persistent – https://groups.google.com/forum/#!topic/flashcache-dev/xRW64FOxgWw – People are discussing to add persistence for WT 1On node crash, only Dirty Blocks are in cache – https://groups.google.com/forum/#!topic/flashcache-dev/LqjKZcGL1eU 2Persistent for all cache modes 3Dirty shutdown: WT – discarded, WB – LV failed slide 13/45 SSD Caching – Comparison 5 of 6 Error WB WT strategy FlashCache 1 Currently - Error2 CacheCade 3 MaxCache 4 5 1No switch from WB to WT if SSD redundant 2Patch to make WB/WT errors transparent – https://groups.google.com/forum/#!topic/flashcache-dev/6XEhY87uv1g 3Details on slide 26 4With write cache LV fails 5No further information available slide 14/45 SSD Caching – Comparison 6 of 6 Hot spot detection FlashCache CacheCade MaxCache slide 15/45 FlashCache CacheCade MaxCache Take a closer look... slide 17/45 Not an official logo. Source: deviantart.com FlashCache Not all about Facebook is bad... Visit https://github.com/facebook/flashcache/ slide 18/45 FlashCache – Introduction • Open Source :D – Get code from Github • Using Linux Device Mapper (cf. LVM) – Visit our I/O stack diagram • http://www.thomas-krenn.com/en/oss/linux-io-stack-diagram.html – Based on dm-cache • Easy to deploy and use – Compile – Load one kernel module slide 19/45 FlashCache – Highlights • FIFO/LRU replacement policy – online changeable • Define process blacklist/whitelist • Cleaning of dirty blocks configurable – Threshold – Idleness • Error injection flags via sysctl – E.g. READCACHE_ERROR • Detailed Cache statistics – dmsetup table slide 21/45 FlashCache – Statistics fc-root: 0 3907029168 flashcache conf: ssd dev (/dev/sdd), disk dev (/dev/sdc) cache mode(WRITE_BACK) capacity(32638M), associativity(512), data block size(4K) metadata block size(4096b) skip sequential thresh(0K) total blocks(8355328), cached blocks(1048668), cache percent(12) dirty blocks(1048662), dirty percent(12) nr_queued(0) Size Hist: 1024:1 4096:9765813 512:0 1024:1 1536:0 2048:0 2560:0 3072:0 3584:0 4096:9765813 4608:0 5120:0 5632:0 6144:0 6656:0 7168:0 7680:0 8192:0 8704:0 9216:0 9728:0 10240:0 10752:0 11264:0 11776:0 12288:0 12800:0 13312:0 13824:0 14336:0 14848:0 15360:0 15872:0 16384:0 reads=1048896 writes=8716916 read_hits=1048580 read_hit_percent=99 write_hits=9 write_hit_percent=0 dirty_write_hits=0 dirty_write_hit_percent=0 replacement=0 write_replacement=0 write_invalidates=80 read_invalidates=0 pending_enqueues=0 pending_inval=0 metadata_dirties=1048662 metadata_cleans=0 metadata_batch=1042405 metadata_ssd_writes=6257 cleanings=0 fallow_cleanings=0 no_room=0 front_merge=0 back_merge=0 disk_reads=316 disk_writes=7668261 ssd_reads=1048580 ssd_writes=1055014 uncached_reads=221 uncached_writes=7668261 uncached_IO_requeue=0 uncached_sequential_reads=0 uncached_sequential_writes=0 pid_adds=0 pid_dels=0 pid_drops=0 pid_expiry=0 slide 22/45 FlashCache – Considerations • Make your cache redundant (WB) – What if SSD fails? – Cf. https://groups.google.com/forum/#!topic/flashcache-dev/6XEhY87uv1g • With WB partial writes are possible – There are ideas to fix this (cf. flashcache-doc.txt) • Only WB cache is persistent – Across reboots and cache removals – No metadata on SSD for WT/WA • Read https://groups.google.com/forum/#!topic/flashcache-dev/xRW64FOxgWw slide 23/45 LSI MegaRAID CacheCade slide 24/45 CacheCade – Introduction • Hardware-based solution • Caching algorithm in controller • Redundant SSD caches possible – Avoid data loss with WB slide 25/45 CacheCade – Error handling WB WT FWB Red. Change to Read SSD WB WT Non. No VD Read HDD No VD access Red. access • Except WB and non redundant SSD Cache – Application doesn't notice SSD failure • Controller reports over Storage Manager slide 26/45 CacheCade – Considerations • Our tests showed that... – Assign → initialization – Fio laying out files • Not only on SSD (cf. FlashCache) • Background syncs – Test Read values not correct – Fio with 'create_only' • 100 MB/s read • Data not completely in cache • → read a 2nd time → 215MB/s slide 27/45 Adaptec MaxCache slide 28/45 MaxCache – Features • Manual – http://download.adaptec.com/pdfs/user_guides/cli_v7_30_18837_users_guide.pdf • WriteCache – Should not be used until now – Redundant cache cannot be created • Sequential I/O is not cached – SAS drives may be faster – Performance stays at 110 MB/s with streaming I/O • Hot spot detection logic slide 29/45 At the end its all down to performance... Prepare to get this... People might promise you... Test your own specific application. If you want with a little help from us :) slide 33/45 Comparison – Bandwidth read slide 34/45 Comparison – Bandwidth write slide 35/45 Comparison – Bandwidth randread slide 36/45 Comparison – Bandwidth randwrite slide 37/45 Still to analyze... slide 38/45 FlashCache ? slide 39/45 CacheCade ? slide 40/45 Summary – avoiding errors while testing... slide 41/45 SSDs – A well known error slide 42/45 Testing caveats slide 43/45 Lessons Learned Establish a Baseline • Test your own application Know application – Get a comfortable testing tool • I prefer Fio (git://git.kernel.dk/fio.git) Yes RAM – Know how and what to test • Check your test results twice No HDD is – Visualize your results bottleneck – Test numbers against the real world No SSD alone • For a first attempt to small – Test with FlashCache Test caching WB WT slide 44/45 Questions? Do not hesitate to ask us (you can do it per mail also) You want some test protocols? You need a special chart? slide 45/45 Thanks for your time Visit our booth - Open Source Sponsorship and Low Energy Server References • http://greenarrow.deviantart.com/art/The-Flash-Wally-West-35885287 • https://upload.wikimedia.org/wikipedia/commons/6/62/2006-07-26AbendhimmelRemstal19.jpg • http://openclipart.org/detail/15238/tortue1-by-roym • http://openclipart.org/detail/34657/architetto---struzzo-by-anonymous • http://openclipart.org/detail/11118/check-sign-and-cross-sign-by-jetxee • http://openclipart.org/detail/124837/led-lamp-by-eggib • http://b--art.deviantart.com/art/Riddler-62371451 slide 47/45 Backup Slides slide 48/45 Test system • SSDs – Intel Series 320 160GB – Via HPA reduced to 32GB • RAID Controller – LSI MegaRAID SAS 9260-4i – Adaptec 6805Q • Software – Fio 2.0.7 – Ubuntu 12.04 • Updates from Release Day slide 49/45 Flashcache – Test Script • flashcache_create – Create a WB caching device • cache_all=0 – Don't cache ext4 initialization • mkfs.ext4 -q -E lazy_itable_init=0, lazy_journal_init=0 /dev/mapper/fc-root • mount /dev/mapper/fc-root • cache_all=1 • Call fio • umount /dev/mapper/fc-root • dmsetup remove • flashcache_destroy /dev/sdd slide 50/45 Flashcache – Workflow slide 51/45 Flashcache – Commands • Just a few examples – flashcache_create -v -p back fc-root /dev/sdd /dev/sdc – sysctl -w dev.flashcache.sdd+sdc.cache_all=0 – dmsetup table – flashcache_destroy /dev/sdd slide 52/45.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    52 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us