10 पॉइंट द्वारा xguru 2021-11-15 | 1 टिप्पणियां | WhatsApp पर शेयर करें
<p>- Heap विश्लेषण के लिए मल्टी-पेटाबाइट Postgres चला रहा है<br /> - तेज़ी से बढ़ते हुए node utilization 80% से ऊपर चला गया, जिससे ingestion pipeline में performance समस्याएँ आने लगीं <br /> - समस्या की जड़ यह थी कि SSD में utilization 100% के करीब पहुँचने पर performance घटने की प्रवृत्ति होती है<br /> - ZFS, जो CoW(Copy-on-Write) है, उपयोग करने से समस्या और बढ़ गई <br /> → हर बार block update होने पर एक नई copy लिखी जाती है <br /> - बेशक, CoW के कई फायदे भी हैं<br /> → filesystem-level compression दूसरे filesystems की तुलना में आसान है, इसलिए 4-5x compression के साथ space बचाया जा सका <br /> → अधिक durability होने से Postgres के `full_page_writes` को disable किया जा सकता है, जिससे performance भी बेहतर होती है और कुल IO कम होता है <br /> → consistency सुनिश्चित करने वाले point-in-time snapshots — क्योंकि pages वास्तव में immutable रहते हैं, इसलिए snapshot के दौरान भी पुराने pages बने रहते हैं<br /> - लेकिन ZFS जैसे CoW filesystems में capacity भरने के साथ performance गिरती है<br /> → हर page update पर block allocator को खाली blocks खोजने पड़ते हैं, इसलिए utilization बढ़ने पर performance degradation गंभीर हो जाता है <br /> → पहले unlink किए गए blocks को हटाना पड़ता है और उन्हें मौजूदा blocks के साथ मिलाना पड़ता है <br /> → बेहतर compression ratio पाने के लिए block size को बड़ा करके 64kb रखा गया था, जिससे स्थिति और खराब हुई <br /> → इन कारणों से ZFS का utilization 80% से ऊपर न जाने देना बेहतर है <br /> <br /> - ZFS 2.x में upgrade करके lz4 compression से Zstandard compression पर जाने की कोशिश की गई <br /> → lz4 बहुत तेज़ है और लगभग 4.4x compression ratio देता है <br /> → Zstandard लगभग 5.5x तक compression ratio देता है, यानी 20% सुधार <br /> → लेकिन कई benchmarks में Zstandard, lz4 से धीमा दिखा<br /> → इसलिए वास्तविक परिस्थिति में कड़े tests करने का फैसला किया गया <br /> → test results में query performance में कोई बदलाव नहीं था, storage usage लगभग 20% घट गया, और write query time आधा रह गया <br /> <br /> - Heap का DB cluster 5 nodes में बँटा है, और हर node अपने-अपने ASG में शामिल है <br /> → node बदलना आसान था: बस उसे ASG से अलग करना था, फिर ASG नया node बनाता, latest backup से restore करता और warm standby mode में चला जाता <br /> → नई configuration के साथ AMI बनाया गया और हर node पर एक-एक करके बदलाव किए गए <br /> → कुल usage लगभग 21% घटा, write time 50% कम हुआ, और query performance में खास फर्क नहीं था </p>

1 टिप्पणियां

 
xguru 2021-11-15
<p>- Arch Linux ने package compression tool को xz से Zstandard में बदला https://hi.news.hada.io/topic?id=1227<br /> - compression algorithm renaissance https://hi.news.hada.io/topic?id=1228<br /> <br /> लेख में CPU उपयोग दर की बात नहीं है, लेकिन HN पर मूल लेखक की टिप्पणी देखें तो यह ~40% से ~50% तक बढ़ी बताई गई है। (यानी Zstd CPU अधिक इस्तेमाल करता है)<br /> - https://news.ycombinator.com/item?id=29164727</p>;