सवाल मैं लिनक्स सर्वर पर उच्च CPU लोड कैसे बना सकता हूं?


मैं वर्तमान में प्रक्रिया में हूँ एक कैक्टि स्थापना डीबगिंग और मेरे सीपीयू उपयोग ग्राफ को डीबग करने के लिए सीपीयू लोड बनाना चाहते हैं।

मैंने बस दौड़ने की कोशिश की cat /dev/zero > /dev/null, जो बहुत अच्छा काम करता है लेकिन केवल 1 कोर का उपयोग करता है:

enter image description here

लोड के तहत परीक्षण / अधिकतम सिस्टम संसाधनों का एक बेहतर तरीका है?

सम्बंधित: मैं विंडोज पर उच्च सीपीयू लोड कैसे बना सकता हूं?


142
2018-06-30 17:13


मूल


क्या कई उदाहरणों को चलाने के लिए संभव है cat एक साथ? - Nate Koppenhaver
@NateKoppenhaver: हां, ऐसा लगता है कि उन्हें लपेटने पर यह संभव है screen सत्र। लेकिन यदि संभव हो तो मैं एक अधिक परिष्कृत समाधान पसंद करूंगा। - Der Hochstapler
हे, मैं हमेशा इस्तेमाल किया cat /dev/random > /dev/null। अनुमान /dev/zero भी काम करता है :-) - oKtosiTe
@oKtosiTe बिल्ली / देव / यादृच्छिक / dev / यादृच्छिक में एंट्रॉपी को कम करने का दुष्प्रभाव है। कई बार आपको एन्ट्रॉपी को संरक्षित करने की आवश्यकता होती है, मेरे पास यह नहीं होगा क्योंकि मैं सीपीयू होग पर जाता हूं। - Rich Homolka
@oKtosiTe क्या रिच होमोल्का ने कहा सही है, लेकिन यह सिर्फ इतना नहीं है कि यह करना एक बुरी बात है, यह भी बेकार है क्योंकि यह लगभग तुरंत अवरुद्ध होगा और सीपीयू लेने से रोक देगा। - Luc


जवाब:


प्रयत्न stress यह विंडोज के बराबर है consume.exe:

oliver$ ./stress --cpu 3
stress: info: [18472] dispatching hogs: 3 cpu, 0 io, 0 vm, 0 hdd

163
2018-06-30 17:27



उबंटू पर, आप के साथ स्थापित कर सकते हैं sudo apt-get install stress - ben
डेबियन wheezy पर भी। - enapupe
फेडोरा पर, sudo yum install stress - Christopher Markieta
आर्क: sudo pacman -S stress - das_j
brew install stress ओएस एक्स पर - Christian Long


कोई अतिरिक्त पैकेज स्थापित करने की आवश्यकता नहीं है, आपका अच्छा पुराना खोल अकेले ऐसा करने में सक्षम है।

यह एक लाइनर आपके चार कोर 100% पर लोड करेगा:

for i in 1 2 3 4; do while : ; do : ; done & done

यह कैसे काम करता है काफी सरल है, यह चार अंतहीन loops शुरू होता है। उनमें से प्रत्येक शून्य निर्देश दोहरा रहा है (:)। प्रत्येक पाश 100% पर एक सीपीयू कोर लोड करने में सक्षम है।

यदि तुम प्रयोग करते हो bash, ksh93 और श्रेणियों का समर्थन करने वाले अन्य गोले, (यानी नहीं dash या पुराना ksh), आप इस गैर पोर्टेबल वाक्यविन्यास का उपयोग कर सकते हैं:

for i in {1..4}; do ...

बदलने के 4 सीपीयू की संख्या के साथ यदि आप अलग से लोड करना चाहते हैं 4

मान लें कि जब आप इन लूपों में से एक लॉन्च करते हैं तो आपके पास पहले से कोई पृष्ठभूमि नौकरी नहीं चल रही थी, आप उस कमांड के साथ लोड पीढ़ी को रोक सकते हैं:

for i in 1 2 3 4; do kill %$i; done

@ Underscore_d की टिप्पणी का उत्तर देते हुए, यहां एक उन्नत संस्करण है जो लोड को रोकने में बहुत आसान बनाता है और यह भी एक टाइमआउट निर्दिष्ट करने की अनुमति देता है (डिफ़ॉल्ट 60 सेकंड।) ए नियंत्रण-सी सभी भाग्यशाली लूप भी मार देंगे। यह खोल कार्य कम से कम काम करता है 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
  )
}

85
2017-07-01 14:55



धन्यवाद लेकिन & एक कमांड में चलाने के लिए एक कमांड का कारण बनता है धागा या अलग कोर? मैं उलझन में हूं। - mmdemirbas
@mmdemirbas: एम्परसेंड कमांड को एक अलग प्रक्रिया के रूप में चलाने का कारण बनता है। शेड्यूलर तब सभी उपलब्ध कोरों को सभी सक्रिय कोरों को प्रेषित कर रहा है। - jlliagre
एक अनुस्मारक के रूप में आप जारी करके इस परीक्षा को रोक सकते हैं killall bash - बस सुनिश्चित करें कि उस समय आपके पास कोई अन्य महत्वपूर्ण स्क्रिप्ट नहीं चल रही है। - a coder
@acoder लूप को समाप्त करने का एक तरीका सुझाए जाने के लिए धन्यवाद। हालांकि मैं इससे बचूंगा killall bash। भार उत्पादन को समाप्त करने के लिए एक सुरक्षित विधि जोड़ने के लिए संपादित उत्तर। - jlliagre
एलसी खोल समारोह के लिए +1 - Akira Yamamoto


मैंने एक साधारण पायथन लिपि बनाई जो वही करता है। आप उन सीपीयू कोरों की संख्या को नियंत्रित कर सकते हैं जिन्हें आप लोड करना चाहते हैं। इसके बारे में अच्छी बात यह है कि यह सीपीयू के अलावा किसी भी अन्य संसाधन का उपभोग नहीं करेगा। (मुझे लगता है कि मार्क जॉनसन का विचार बहुत सारे I / O संसाधनों का उपभोग करेगा, जो यहां अवांछित हैं।)

from multiprocessing import Pool

def f(x):
    # Put any cpu (only) consuming operation here. I have given 1 below -
    while True:
        x * x

# decide how many cpus you need to load with.
no_of_cpu_to_be_consumed = 3

p = Pool(processes=no_of_cpu_to_be_consumed)
p.map(f, range(no_of_cpu_to_be_consumed))

टर्मिनल से बस इस स्क्रिप्ट को चलाएं $ python temp1.py। जब आप पूरा कर लेंगे तो आपको स्क्रिप्ट को मारने की जरूरत है।

यहां, जब मैं अपने 3 कोर लोड करता हूं तो मेरा सीपीयू खपत आउटपुट होता है।

Script temp1.py creates three processes (PIDs - 9377, 9378, 9379) which load 3 of my cores


18
2018-06-30 17:56



इस तरह के CPU उपयोग को प्रदर्शित करने के लिए आप किस प्रोग्राम का उपयोग करते हैं? यह मुझे शीर्ष की याद दिलाता है, लेकिन मुझे सीपीयू 'चार्ट' याद नहीं है। - jftuga
@jftuga शायद htop, चोटीप्रख्यात भाई - BoppreH
हाँ इसकी htop। लिनक्स के लिए सर्वश्रेष्ठ वास्तविक समय, रंगीन इंटरैक्टिव प्रक्रिया दर्शक - htop.sourceforge.net - Pushpak Dagade
ध्यान नहीं दे रहा था और इसे विंडोज बॉक्स पर चलाया। बहुत बुरी चीजें ... - Derrick


एक वैकल्पिक तरीका होगा

openssl speed -multi $(grep -ci processor /proc/cpuinfo)

या (अगर nproc मौजूद है)

openssl speed -multi $(nproc --all)

ओपनएसएसएल आजकल हमेशा distros पर मौजूद है, इसलिए कोई अतिरिक्त पैकेज की आवश्यकता नहीं है।


13
2017-09-08 11:19





दो शुरू करो

sha1sum /dev/zero &

आपके सिस्टम में हर कोर के लिए आदेश।

रोकने के लिए

killall sha1sum

या

kill sha1sum

8
2017-11-01 21:31





मैं आमतौर पर cpuburn सुइट लेता हूं:

sudo apt-get install cpuburn
for i in {1..4}; do burnK7 & done

आपके पास कोर / एचटी-थ्रेड की संख्या के साथ 4 को बदलें या तनाव देना चाहते हैं।

नोट: यह एक ही समय में जितना संभव हो उतना चिप क्षेत्र पर जोर देता है, यह अधिकतम बिजली अपव्यय उत्पन्न करने के लिए प्रोग्राम किया गया है। मुझे यह पोस्ट दूसरी बार लिखना पड़ा, किसी भी तरह मेरी मशीन इसे पसंद नहीं आया :-(

आप अनुक्रमों में cpuburn भी कर सकते हैं:

burnP6 & burnP6 & burnP6 & burnP6 & 
[1] 28520
[2] 28521
[3] 28522
[4] 28523

और जब आप उन्हें रोकना चाहते हैं:

killall burnP6

आप गुणा भी कर सकते हैं burnP6 & अपने सिस्टम पर सीपीयू कोर की संख्या से मेल खाने के लिए।


7
2017-07-25 21:33





मैं तनाव-एनजी विकसित कर रहा हूं, एक अद्यतन तनाव उपकरण जो लिनक्स सिस्टम के पहलुओं की विस्तृत श्रृंखला को तनाव दे सकता है। अधिक जानकारी के लिए देखें http://kernel.ubuntu.com/~cking/stress-ng/

उपयोग समान है तनाव

$ stress-ng --cpu 4 --vm 2 --fork 8 --switch 4 --timeout 1m
stress-ng: info:  [32254] dispatching hogs: 4 cpu, 8 fork, 4 switch, 2 vm
stress-ng: info:  [32254] cache allocate: default cache size: 8192K

के साथ स्थापित करें

sudo apt-get install stress-ng

5
2017-09-06 20:11



कृपया पढ़ें मैं सॉफ्टवेयर की सिफारिश कैसे करूं? सॉफ़्टवेयर की सिफारिश करने के बारे में कुछ सुझावों के लिए। कम से कम आपको कम से कम एक लिंक से अधिक प्रदान करना चाहिए, उदाहरण के लिए सॉफ्टवेयर के बारे में कुछ अतिरिक्त जानकारी, और सवाल में समस्या को हल करने के लिए इसका उपयोग कैसे किया जा सकता है। - DavidPostill♦


आप जितनी बार चाहें उस कमांड को चला सकते हैं, और यह प्रत्येक बार एक अलग कोर लेगा:

$ CORES=1
$ for i in `seq 1 $CORES`; do cat /dev/zero > /dev/null &
> done
[1] 8388

2
2017-07-01 02:09



क्या इससे प्रक्रियाओं को परेशानी का सामना नहीं करना पड़ेगा? - oKtosiTe
killall cat यह करना चाहिए - Christian Mann
इस पर निर्भर करता है कि आपके पास अन्य है या नहीं cat चल रही प्रक्रियाएं (मैं आमतौर पर करता हूं)। - oKtosiTe