• आमतौर पर सर्वर की performance limit का आकलन top जैसे monitoring tools के % CPU उपयोग दर से किया जाता है, लेकिन वास्तव में यह metric performance को linear तरीके से reflect नहीं करता
  • Ryzen 9 5900X environment में stress-ng से किए गए test के नतीजों में, 50% उपयोग दर पर भी वास्तविक workload 60~100% तक पहुंच गया, यानी metric और वास्तविकता के बीच बड़ा अंतर था
  • इसके मुख्य कारण hyperthreading और turbo boost हैं, जहां logical cores के बीच resource sharing और clock speed में बदलाव metric को विकृत कर देते हैं
  • इसलिए साधारण CPU उपयोग दर की जगह, वास्तव में process किए जा सकने वाले workload के benchmark और current throughput की तुलना ज्यादा सटीक संकेतक है
  • CPU उपयोग दर को linear रूप से समझने पर performance estimation में बड़ी गलती हो सकती है, इसलिए system planning में benchmark-based approach जरूरी है

सर्वर की CPU उपयोग दर और वास्तविक throughput के बीच असंगति

  • सर्वर चलाते समय, बहुत से लोग यह जानना चाहते हैं कि सिस्टम maximum utilization के कितना करीब है
  • आमतौर पर top जैसे monitoring tools के जरिए network, memory, CPU utilization में से सबसे ऊंचे मान को देखा जाता है
  • लेकिन व्यवहार में CPU utilization का आंकड़ा और process किया जा सकने वाला workload linear रूप से नहीं बढ़ता

टेस्ट environment और तरीका

  • Ubuntu desktop + Ryzen 9 5900X (12कोर/24थ्रेड) आधारित experiment
  • Precision Boost Overdrive(Turbo) enabled
  • stress-ng से अलग-अलग load (1~24 worker, 1~100% utilization) simulate किए गए
  • मापे गए metric: सिस्टम द्वारा report की गई CPU utilization और वास्तविक computation amount (Bogo ops)

नतीजों का सार

  • सामान्य CPU load: 50% utilization पर वास्तविक 60~65% throughput
  • 64-bit integer operations: 50% utilization पर 65~85% throughput
  • matrix operations (Matrix math): 50% utilization पर 80~100% throughput
    • व्यवहार में, अतिरिक्त worker performance में योगदान न दें तब भी CPU utilization बढ़ता है

कारण विश्लेषण

  • hyperthreading

    • 12 physical core + 12 logical core संरचना
    • 12 या उससे कम worker physical cores पर सबसे बेहतर तरीके से रखे जाते हैं, लेकिन उससे ज्यादा होने पर logical core sharing से performance घटती है
    • खासकर SIMD operations (matrix operations) में shared resources न होने से performance gain संभव नहीं
  • turbo boost

    • कम load पर 4.9GHz → full load पर 4.3GHz तक 15% clock reduction
    • CPU utilization calculation formula (= busy cycles / total cycles) में विकृति पैदा होती है
      • denominator (total cycle count) घटने पर utilization में बढ़ोतरी वास्तविक workload की तुलना में ज्यादा दिखाई देती है

निहितार्थ

  • CPU utilization performance का absolute metric नहीं है
  • सर्वर capacity planning और performance prediction करते समय:
    • 1. benchmark से maximum throughput मापें
    • 2. real-time throughput monitor करें
    • 3. दोनों की तुलना कर यह तय करें कि सिस्टम performance limit के कितना करीब है
  • CPU architecture (AMD vs Intel), hyperthreading efficiency, turbo behavior के अनुसार काफी बड़ा अंतर हो सकता है, इसलिए processor-specific analysis जरूरी है

निष्कर्ष

  • CPU utilization सिर्फ busy cycle ratio है, यह वास्तविक processing performance को सटीक रूप से नहीं दिखाता
  • efficient utilization की स्थिति में "50% utilization" पर भी सिस्टम पहले से maximum performance के 80~100% स्तर पर हो सकता है
  • इसलिए performance monitoring और system planning का केंद्र CPU utilization नहीं, बल्कि benchmark-based workload throughput होना चाहिए

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

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