রেডিস অন ফ্ল্যাশ (RoF) আমাদের সবচেয়ে জনপ্রিয় এন্টারপ্রাইজ ফাংশনালিটিগুলোর একটি, ইন-মেমরি কম্পিউটিং কাস্ট-ইফেক্টিভ করে ডেটাসেটের ৮০% পর্যন্ত SSD-এ স্টোর করে ব্যয়বহুল DRAM-এর পরিবর্তে, এবং এখনো রেডিসের সাব-মিলিসেকেন্ড ল্যাটেন্সি এবং হাই-থ্রুপুট বজায় রাখে। টিপিক্যাল ডিপ্লয়মেন্টে, RoF ৭০% পর্যন্ত TCO ডিসকাউন্ট প্রদান করে।
এখন দুটি নতুন, উত্সাহজনক সহযোগিতার সাথে, আমরা গর্বিত হয়ে ঘোষণা করছি RoF এখন ৩.৭x পারফরম্যান্স ডেলিভার করতে পারে একই আকর্ষণীয় টোটাল কাস্ট অফ অোনারশিপ বজায় রেখে বড় ডেটাসেট রেডিসে চালানোর জন্য। প্রথমে, AWS একটি নতুন জেনারেশনের ইন্সট্যান্সের জেনারেল আভেইলেবিলিটি ঘোষণা করল, Amazon EC2 I4i, ৩য় জেনারেশন Intel Xeon Scalable প্রসেসর (কোডনেম Ice Lake) এবং AWS Nitro SSD NVMe-ভিত্তিক স্টোরেজ দ্বারা চালিত। এই নতুন জেনারেশন ডেটা-ইনটেনসিভ রেডিস কাস্টমারদের জন্য একটি রিমার্কেবল পারফরম্যান্স বৃদ্ধির প্রতিশ্রুতি দেয়। অতিরিক্তভাবে, আমরা প্লেজার শেয়ার করছি RoF-এর ডেটা ইঞ্জিন যেকোনো RocksDB-কম্প্যাটিবল ডাটাবেসের জন্য খোলার আমাদের প্ল্যান, নতুন ঘোষণা করা টেকনোলজি থেকে Speedb, بعنوان প্রথম অপশন।
আমরা বিশ্বাস করি নতুন I4i ইন্সট্যান্স এবং কাস্টমারদের তাদের ডেটা ইঞ্জিনের জন্য চয়স দার সার্বিক কন্বিনেশন RoF কে আরও আকর্ষণীয় করবে বিশাল ডেটাসেটের জন্য, যেহেতু রিয়েল-টাইম এক্সপেরিয়েন্সের প্রয়োজন বাড়ছে আধুনিক অ্যাপ্লিকেশন বা লো-ল্যাটেন্সি মাইক্রোসার্ভিস আর্কিটেকচার বিল্ড করে কোম্পানিগুলোর জন্য।
Amazon EC2 I4i এবং Speedb কী আনে রেডিস অন ফ্ল্যাশে?
চলুন RoF-এ কী নতুন সেটি ডাইভ করি। AWS নতুন Amazon EC2 I4i (‘i’ Intel-এর জন্য) ইন্সট্যান্স ৪ রিজনে অফার করছে। I4i ইন্সট্যান্সগুলো লেটেস্ট টেকনোলজি ব্যবহার করে, Intel Ice Lake প্রসেসর এবং AWS Nitro SSD, যা IOPS উন্নত করে এবং ল্যাটেন্সি কমিয়ে I3 ইন্সট্যান্সের পূর্বের জেনারেশনের চেয়ে।
হার্ডওয়্যার থেকে আলাদা, আমরা খুঁজছিলাম উপায় যাতে RoF আরও বেশি পারফরম্যান্স ডেলিভার করতে পারে এবং একটি সুযোগ চিহ্নিত করলাম ডেটা ইঞ্জিনকে কাস্টমার এবং উদ্যোক্তাদের দ্বারা ইনোভেশনের জন্য খোলা রাখা। আমরা ঘোষণা করতে পেরে হয়ে গেলাম যে RoF এখন যেকোনো RocksDB-কম্প্যাটিবল ডেটা ইঞ্জিনের জন্য খোলা এবং Speedb হলো প্রথম অ্যাল্টারনেটিভ যা রেডিস দ্বারা অফার করা হচ্ছে। আমাদের সাথে কাজ করে, Speedb-এ টিমটি RocksDB-এর ইন্টারনাল ডেটা স্ট্রাকচার রিডিজাইন করলো যা দুটোই পারফরম্যান্স এবং স্কেল দ্রুতগতিতে বাড়ায় যখন সিপিইউ রিসোর্স কমিয়ে।
এই ব্লগ পোস্টে, আমরা শেয়ার করব কীভাবে Speedb প্রায় ৫০% পারফরম্যান্স বুস্ট প্রদান করে আমাদের সাব-মিলিসেকেন্ড টেস্টে RocksDB-এর চেয়ে, নির্বিশেষে কোন AWS EC2 ইন্সট্যান্স ব্যবহার করা হচ্ছে, I4i বা I3।
RoF with Speedb বর্তমানে প্রাইভেট প্রিভিউতে উপলব্ধ। রেডিস কাস্টমাররা তাদের অ্যাকাউন্ট টিমের সাথে যোগাযোগ করতে পারেন অতিরিক্ত তথ্যের জন্য বা নতুন সার্ভিস ট্রাইয়ালের জন্য।
নতুন রেডিস অন ফ্ল্যাশ বেঞ্চমার্ক করা
আমাদের পারফরম্যান্স ইঞ্জিনিয়াররা AWS-এর I4i ইন্সট্যান্স এবং RoF-এর নতুন Speedb ডেটা ইঞ্জিন নিয়ে টেস্ট করতে দেরি করলো না। আমরা AWS পার্টনার হিসেবে Amazon EC2 I4i ইন্সট্যান্স সম্পূর্ণরূপে টেস্ট করার জন্য প্রথম হয়ে পেরে গেলাম। এক মনে রাখবেন, RoF বুদ্ধিমানভাবে বড় ডেটাসেট টিয়ার করে এবং ডিজাইন করা হয়েছে DRAM-এর চেয়ে NVMe SSD-এর প্রতি GiB-এর কম দামের সুবিধা নেওয়ার জন্য। এটি আমাদের রেডিস-গ্রেড পারফরম্যান্স ডেলিভার করতে সক্ষম করে, এখন I4i ইন্সট্যান্সের সাথে আরও দ্রুত, DRAM-ভিত্তিক ইন্সট্যান্সের ৩০% টোটাল কাস্ট-অফ-অোনারশিপ-এ।
বেঞ্চমার্ক ফলাফল এবং নম্বরের আগে, চলুন রিভিউ করি কখন একজন কাস্টমার RoF বিবেচনা করা উচিত। আমরা RoF ডেভেলপ করেছি ইউজ কেসের জন্য যেখানে ওয়ার্কিং ডেটাসেট টোটাল ডেটাসেটের চেয়ে ছোট এবং অতিরিক্ত DRAM-এ যাওয়া কাস্ট-প্রোহিবিটিভ। আরেকটি সাধারণ RoF ইউজ কেস হলো ব্যাচ ডেটা প্রসেসিং, যেখানে বিশাল পরিমাণ ডেটা প্রসেস করতে হয় বিজনেস-ক্রিটিক্যাল অ্যাপ্লিকেশনের জন্য, যেগুলো স্টেডি লো ল্যাটেন্সি এবং হাই থ্রুপুট প্রয়োজন সময়ের সাথে সাথে।
এখন মজার অংশে, বেঞ্চমার্ক ফলাফল।
আমরা কী বেঞ্চমার্ক করেছি
আমরা চারটি AWS ইন্সট্যান্সে রেডিস অন ফ্ল্যাশের পারফরম্যান্স তুলনা করেছি:
i3.8xlarge – 244GB RAM, 4xNVMe SSD ড্রাইভ, মোট 7.6TB
I4i.4xlarge – 128GB RAM, 1xNVMe SSD ড্রাইভ, মোট 3.75TB
I4i.8xlarge – 256GB RAM, 2xNVMe SSD ড্রাইভ, মোট 7.5TB
I4i.16xlarge – 512GB RAM, 4xNVMe SSD ড্রাইভ মোট 15TB
আমরা দুটি ডেটা ইঞ্জিনের পারফরম্যান্স তুলনা করেছি
- RocksDB
- Speedb
টেস্ট প্যারামিটার
আমরা 1KiB ভ্যালু সাইজ ব্যবহার করেছি, অধিকাংশ স্ট্যান্ডার্ড রেডিস ইউজ কেস কভার করে
আমরা ৫০% এবং ৮৫% RAM হিট রেশিও टेস্ট করেছি (অর্থাৎ অনেক রিকোয়েস্ট সরাসরি RAM থেকে সার্ভড)
আমরা ২০:৮০ RAM:Flash রেশিও টেস্ট করেছি
আমরা বিভিন্ন রিড:রাইট রেশিও বেঞ্চমার্ক করেছি: ১:১, ৪:১ এবং ১:৪
সকল টেস্ট করা হয়েছে দুটি সার্ভার ব্যবহার করে
নিচে ডাটাবেস সাইজগুলো যা আমরা ইন্সট্যান্স টাইপ অনুযায়ী রান করেছি:
- I4i.4xlarge: 500GB + রেপ্লিকেশন। ৫ প্রাইমারি শার্ড + ৫ রেপ্লিকা শার্ড
- i3.8xlarge: 1TB + রেপ্লিকেশন। ১০ প্রাইমারি শার্ড + ১০ রেপ্লিকা শার্ড
- I4i.8xlarge: 1TB + রেপ্লিকেশন। ১০ প্রাইমারি শার্ড + ১০ রেপ্লিকা শার্ড
- I4i.16xlarge: 2TB + রেপ্লিকেশন। ২০ প্রাইমারি শার্ড + ২০ রেপ্লিকা শার্ড
প্রতিটি কনফিগারেশনে, আমরা টেস্ট করেছি কত ops/sec অর্জন করা যায় সাব-মিলিসেকেন্ড ক্লায়েন্ট ল্যাটেন্সি বজায় রেখে (নেটওয়ার্ক বাদে)
আমরা কী পেলাম
নিচের গ্রাফটি i3 vs I4i এবং RocksDB vs Speedb দেখাচ্ছে:

আমরা নিচের উন্নতিগুলো দেখতে পাচ্ছি:
| From | to | Speedup factor |
| i3.8xlarge rocksdb | i3.8xlarge speedb | 1.3x |
| I4i.8xlarge rocksdb | I4i.8xlarge speedb | 1.46x |
| i3.8xlarge rocksdb | I4i.8xlarge rocksdb | 1.94x |
| i3.8xlarge speedb | I4i.8xlarge speedb | 2.16x |
| i3.8xlarge rocksdb | I4i.8xlarge speedb | 2.83x |
নিচের গ্রাফটি I4i-তে Speedb-এ স্কেলিং এবং ভিন্ন রিড:রাইট রেশিও দেখাচ্ছে:

আমরা নিচের ফলাফল এবং উন্নতিগুলো দেখতে পাচ্ছি:
স্কেলিং-ওয়াইজ, আমরা দেখতে পাচ্ছি RoF I4i-এ Speedb-এ প্রায় লিনিয়ারলি স্কেল করে।
4xlarge → 8xlarge-এ ~1.55x-1.8x ফ্যাক্টর
8xlarge → 16xlarge-এ ~1.85x-1.95x স্কেলিং ফ্যাক্টর
একটি দ্বিতীয় উল্লেখযোগ্য ফলাফল হলো RoF I4i-এ Speedb-এ খুব অগ্নস্টিক অ্যাপ্লিকেশন অ্যাক্সেস প্যাটার্নের (রিড:রাইট রেশিও)। অর্থাৎ পারফরম্যান্স স্টেডি থাকে এবং প্রিডিক্টেবল। এটি কাজে লাগতে পারে যখন একাধিক ভিন্ন অ্যাপ্লিকেশনের সাথে কাজ করা হচ্ছে বা যখন অ্যাক্সেস প্যাটার্ন সময়ের সাথে পরিবর্তিত হয়।
নিচের গ্রাফটি সামগ্রিক ৩.৭x পারফরম্যান্স উন্নতি দেখাচ্ছে:

অ্যাপেন্ডিক্স:
বেঞ্চমার্ক সেটআপ
রেডিস এন্টারপ্রাইজ ভার্সন: v. 6.2.8-39 on Ubuntu 18.04
রেডিস অন ফ্ল্যাশ ডাটাবেস: উপরের ইন্সট্যান্স অনুযায়ী ডিটেইলস
ক্লায়েন্ট মেশিন: EC2 m5.8xlarge (32 VCPUs, 128 GB RAM)
লোড জেনারেশন টুল: memtier benchmark
Memtier স্যাম্পল কমান্ড ৮৫% ram hit ratio-এর জন্য:
memtier_benchmark -s <database host IP> -p <database port>
–hide-histogram –pipeline=1 -c 4 -t 256 -d 1000
–key-maximum=771141855 –key-pattern=G:G –key-stddev=50358491
–ratio=1:1 –distinct-client-seed –randomize –test-time=1200
সেটআপ ইলাস্ট্রেশন:
