Tablebase सर्वर ऑप्टिमाइज़ेशन

tail latency का समाधान
  • 7-piece Syzygy tablebase सर्वर को RAID integrity check के दौरान requests संभालने में कठिनाई हो रही थी
  • नए approach में dm-integrity को LVM पर इस्तेमाल करके data blocks को पढ़ते समय हर बार manually verify करने के लिए बदला गया
  • 17 TiB tablebase को downtime के बिना migrate करने के लिए benchmark tests चलाने हेतु दूसरा सर्वर सेटअप किया गया
नया hardware configuration
  • 32 GiB RAM
  • 2 x 201 GiB NVMe (पिछले सर्वर में SSD space नहीं था)
  • 6 x 5.46 TiB HDD (पिछले सर्वर में केवल 5 disks थीं)
  • operating system: Debian bookworm
monitoring का महत्व
  • RAID 5 का उपयोग करके single disk failure से recovery संभव हुई और random reads सभी disks में distribute किए गए
  • शुरुआती tests में performance ठीक थी, लेकिन monitoring से पता चला कि सभी disks समान रूप से भाग नहीं ले रही थीं
benchmark परिणाम
  • सर्वर को प्रति सेकंड 10 से 35 requests मिलती हैं
  • 10 लाख requests रिकॉर्ड करके benchmark tests किए गए
  • average response time तेज है, लेकिन tail latency अधिक है
  • mmap की तुलना में pread ने बेहतर performance दिखाई
mmap और pread की तुलना
  • mmap: file को memory में map करके disk reads को transparently handle करता है, लेकिन error handling कठिन होती है
  • pread: system call के जरिए read errors को return value के रूप में रिपोर्ट करता है
  • pread के बेहतर performance का कारण यह है कि memory-mapped data block page boundary पार करते समय दो बार disk read करा सकता है
POSIX_FADV_RANDOM का उल्टा असर
  • POSIX_FADV_RANDOM इस्तेमाल करने पर operating system को यह hint दिया जाता है कि file access random है ताकि page cache pressure कम हो, लेकिन वास्तव में इसका उल्टा असर दिखा
  • हो सकता है कि tablebase access pattern वास्तव में random न हो
सीमित SSD space का उपयोग
  • SSD space का कुशल उपयोग करने के लिए sparse block length list और block length list को SSD पर रखा गया, ताकि अधिकतम 1 बार धीमी disk read की गारंटी हो
  • RAID 1 की जगह RAID 0 का उपयोग करके redundancy छोड़ी गई और performance को optimize किया गया
read parallelization
  • user interface में सभी moves के लिए DTZ values दिखाने हेतु एक average request में 23 WDL probes और 70 DTZ probes उत्पन्न होते हैं
  • request processing के parallelization के जरिए tail latency कम की गई
वास्तविक environment में performance
  • यह पुष्टि हुई कि benchmark scenario में की गई optimizations वास्तविक environment में भी मददगार हैं

# GN⁺ की संक्षिप्त प्रस्तुति

  • यह लेख Lichess के tablebase सर्वर के optimization process पर केंद्रित है
  • tail latency कम करने के लिए विभिन्न approaches आज़माए गए और benchmark tests के जरिए performance verify की गई
  • mmap और pread की तुलना, POSIX_FADV_RANDOM के उल्टे असर, SSD space उपयोग, और read parallelization जैसे विषय शामिल हैं
  • सर्वर optimization में रुचि रखने वाले developers के लिए यह लेख उपयोगी हो सकता है, और समान क्षमता वाले projects में Stockfish शामिल है

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.