लिनक्स सर्वर पर सीपीयू लोड कैसे उत्पन्न करें


13

मैं सर्वर पर नकली लोड का परीक्षण करना चाहूंगा, मैं कुछ बर्न-इन या बेंचमार्क कमांड लाइन उपयोगिता की तलाश कर रहा हूं जो सिस्टम पर सीपीयू लोड उत्पन्न करेगा।

मैं केवल सीपीयू (कोई हार्डडिस्क लोड, नेटवर्क और सह) को जलाने में सक्षम होना चाहता हूं और मैं उस अवधि को निर्धारित करने में सक्षम होऊंगा जिसमें लोड चलेगा। मतलब मैं कुछ ऐसा चाहता हूं जो चल सके: सिस्टम पर 10min के लिए CPU लोड।

कोई विचार?

जवाबों:


12

आप "तनाव" उपयोगिता को डाउनलोड और इंस्टॉल कर सकते हैं ... यह आपको कमांड लाइन से सीपीयू, मेमोरी, डिस्क और आईओ लोड उत्पन्न करने की अनुमति देता है।

मुखपृष्ठ: http://people.seas.harvard.edu/~apw/stress/

अक्सर पूछे जाने वाले प्रश्न: http://people.seas.harvard.edu/~apw/stress/FAQ


6

मैं फ़्लोटिंग पॉइंट ऑप्स पसंद करता हूं:

for i in `seq 64`; do perl -e '$z=time()+(10*60); while (time()<$z) { $j++; $sqrt = sqrt($j) for (1..9999); }' & done

अपने CPU नंबर से अवगत रहें :-)


मैं timeयह कैसे कर सकता हूं ?
सेबास्टियन

2

यह कुछ ऐसा है जो मैं अक्सर करना चाहता हूं। लेकिन मेरे पास इसे करने का अच्छा तरीका नहीं है। मैं बस एक छोटी सी पर्ल स्क्रिप्ट लिखता हूं, जो केवल कुछ सेकंड के लिए लूप करेगा जैसा मैं चाहता हूं।

जैसे (10 मिनट के लिए):

perl -e '$z=time()+(10*60); while (time()<$z) { $j++; $j *= 1.1 for (1..9999); }'

बेशक अगर आपके पास n प्रोसेसर है, तो आप कई प्रक्रियाओं को बनाने के लिए एक बैश लूप जोड़ना चाहते हैं:

#!/bin/bash
# e.g. for 4 processors
for i in 1 2 3 4; do
    perl -e .... &
done
wait

4
मामूली बिंदु: क्या forलूप उन्हें श्रृंखला में नहीं, बल्कि समानांतर से चलाएगा? मुझे लगता (perl -e '...' &)है कि उन्हें खोल से अलग करना काम करेगा, हालांकि।
स्मॉलक्लैंगर

आप सही हे। मैं अपनी पोस्ट सही कर दूंगा। यह बात बताने के लिए धन्यवाद।
पीपी।


1

मैं तनाव-एनजी का उपयोग करने की सलाह देता हूं, इसमें तनाव की तुलना में बहुत अधिक विशेषताएं हैं और यह ऑपरेटिंग सिस्टम के कहीं अधिक व्यायाम कर सकता है।

http://kernel.ubuntu.com/~cking/stress-ng/


1

यहां एक शुद्ध शेल (कम से कम bash& ksh) तरीका है जो मैंने पहले से ही यहां एक समान प्रश्न के उत्तर के रूप में पोस्ट किया है

# Usage: lc [number_of_cpus_to_load [number_of_seconds] ]
lc() {
  (
    pids=""
    cpus=${1:-1}
    seconds=${2:-60}
    echo loading $cpus CPUs for $seconds seconds
    trap 'for p in $pids; do kill $p; done' 0
    for ((i=0;i<cpus;i++)); do while : ; do : ; done & pids="$pids $!"; done
    sleep $seconds
  )
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.