- ZFS के डिफ़ॉल्ट पैरामीटर sequential access और random access के बीच एक संतुलित समझौते के रूप में सेट होते हैं
- अगर वर्कलोड की विशेषताएँ स्पष्ट रूप से पता हों, तो अधिक आक्रामक tuning संभव है
- sequential access बनाम random access का अंतर
- HDD में हेड मूवमेंट की वजह से random access प्रदर्शन sequential access की तुलना में दर्जनों से सैकड़ों गुना तक धीमा हो सकता है
- SSD में भी random access बहुत तेज़ हो गया है, लेकिन sequential access अब भी अधिक कुशल है
- बड़े फ़ाइलों को क्रम से पढ़ने वाला वर्कलोड sequential access की प्रवृत्ति अधिक रखता है
- कई छोटे फ़ाइलों को बार-बार पढ़ने वाला वर्कलोड random access की प्रवृत्ति अधिक रखने की संभावना होती है
- वर्कलोड विश्लेषण के तरीके का परिचय
- कोड/स्ट्रक्चर आधारित तार्किक अनुमान
- throughput (bps) + प्रति सेकंड IO संख्या (iops) के आधार पर औसत IO आकार की गणना
zpool iostat -r आधारित IO आकार वितरण विश्लेषण
zpool iostat -r की व्याख्या
- ind: प्रत्येक logical request का आकार
- agg: वास्तव में merge होकर निष्पादित हुए IO का आकार
- अगर agg, ind से बड़ा है, तो इसका मतलब है कि adjacent IO merge अच्छी तरह हो रहा है
- उदाहरण वर्कलोड विश्लेषण के परिणाम
- synchronous read का अनुपात लगभग 76%
- 32KiB या उससे छोटे read 99% से अधिक
- asynchronous write में भी छोटे IO का अनुपात अधिक
- कुल मिलाकर random access की प्रवृत्ति वाला बहुत मजबूत वर्कलोड
zfs_prefetch_disable
- ZFS, sequential access पैटर्न पहचानने पर adjacent blocks को पहले से ARC में लोड करता है
- random access वर्कलोड में prefetch hit rate कम होने पर केवल अनावश्यक IO बढ़ सकते हैं
arc_summary के आधार पर prefetch की दक्षता मापी जा सकती है
- अगर hit rate कम हो, तो
zfs_prefetch_disable पर विचार किया जा सकता है
recordsize
- डिफ़ॉल्ट मान 128K है
- उदाहरण वर्कलोड में अधिकांश IO 32KiB या उससे कम हैं, इसलिए छोटे
recordsize पर विचार किया जा सकता है
- optimal value चुनना
- benchmark के आधार पर निर्णय लेना महत्वपूर्ण है
- MySQL/Postgres जैसे DB के लिए पहले से सत्यापित tuning मामलों की संख्या काफ़ी है
- आम तौर पर DB page size के समान
recordsize इस्तेमाल किया जाता है
अभी कोई टिप्पणी नहीं है.