मैं लिनक्स में प्रोसेसर / कोर की संख्या प्राप्त करने के लिए निम्नलिखित कमांड चला रहा हूं:
cat /proc/cpuinfo | grep processor | wc -l
यह काम करता है लेकिन यह सुरुचिपूर्ण नहीं दिखता है। आप इसे कैसे सुधारने का सुझाव देंगे?
मैं लिनक्स में प्रोसेसर / कोर की संख्या प्राप्त करने के लिए निम्नलिखित कमांड चला रहा हूं:
cat /proc/cpuinfo | grep processor | wc -l
यह काम करता है लेकिन यह सुरुचिपूर्ण नहीं दिखता है। आप इसे कैसे सुधारने का सुझाव देंगे?
जवाबों:
nproc
वह है जो आप ढूंढ रहे हैं।
यहाँ और अधिक: http://www.cyberciti.biz/faq/linux-get-number-of-cpus-core-commun/
nproc
मेरे ubuntu वीएम पर है, लेकिन मेरे रेडहैट 5.5-आधारित मशीन पर नहीं है।
nproc --all
सभी स्थापित प्रसंस्करण इकाइयों के लिए सुनिश्चित करें । बिना --all
, nproc
केवल वर्तमान प्रक्रिया के लिए उपलब्ध प्रसंस्करण इकाइयाँ दिखाता है। अधिक जानकारी के लिए मैन पेज पढ़ें। MMV।
सबसे सरल उपकरण ग्लिबक के साथ आता है और इसे कहा जाता है getconf
:
$ getconf _NPROCESSORS_ONLN
4
nproc
, यह मैक ओएस एक्स पर (डिफ़ॉल्ट रूप से) काम करता है।
_NPROCESSORS_ONLN
(या सीपीयू, प्रोक, आदि के साथ कुछ भी) इसके आउटपुट में सूचीबद्ध है। मैं उम्मीद कर रहा था क्योंकि यह एक पॉज़िक्स टूल है जो लिनक्स / सोलारिस पर काम करेगा इसलिए मुझे ब्रांचिंग का उपयोग नहीं करना पड़ा।
मुझे लगता है कि आपके द्वारा दिया गया तरीका लिनक्स पर सबसे पोर्टेबल है। अनावश्यक cat
और wc
प्रक्रियाओं को कम करने के बजाय , आप इसे थोड़ा छोटा कर सकते हैं:
$ grep --count ^processor /proc/cpuinfo
2
यदि आप ऐसा करना चाहते हैं तो यह linux और OS X पर काम करता है, आप कर सकते हैं:
CORES=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || sysctl -n hw.ncpu)
psrinfo -p
के बजाय
नई गुठली पर आप संभवतः /sys/devices/system/cpu/
थोड़ी अधिक जानकारी प्राप्त करने के लिए इंटरफ़ेस का उपयोग कर सकते हैं :
$ ls /sys/devices/system/cpu/
cpu0 cpufreq kernel_max offline possible present release
cpu1 cpuidle modalias online power probe uevent
$ cat /sys/devices/system/cpu/kernel_max
255
$ cat /sys/devices/system/cpu/offline
2-63
$ cat /sys/devices/system/cpu/possible
0-63
$ cat /sys/devices/system/cpu/present
0-1
$ cat /sys/devices/system/cpu/online
0-1
इन सभी का क्या अर्थ है, इस बारे में अधिक जानकारी के लिए आधिकारिक डॉक्स देखें ।
online
फ़ाइल, nproc क्या करता है की तुलना में सरल)
जब कोई "प्रोसेसर / कोर की संख्या" पूछता है, तो 2 उत्तर मांगे जा रहे हैं। "प्रोसेसर" की संख्या मशीन पर सॉकेट्स में स्थापित भौतिक संख्या होगी।
"कोर" की संख्या भौतिक कोर होगी। हाइपरथ्रेडेड (आभासी) कोर को शामिल नहीं किया जाएगा (कम से कम मेरे दिमाग में)। जैसा कि कोई है जो थ्रेड पूल के साथ बहुत सारे कार्यक्रम लिखता है, आपको वास्तव में भौतिक कोर बनाम कोर / हाइपरथ्रेड्स की गिनती जानने की आवश्यकता है। उस ने कहा, आप उन उत्तरों को प्राप्त करने के लिए निम्न स्क्रिप्ट को संशोधित कर सकते हैं जिनकी आपको आवश्यकता है।
#!/bin/bash
MODEL=`cat /cpu/procinfo | grep "model name" | sort | uniq`
ALL=`cat /proc/cpuinfo | grep "bogo" | wc -l`
PHYSICAL=`cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l`
CORES=`cat /proc/cpuinfo | grep "cpu cores" | sort | uniq | cut -d':' -f2`
PHY_CORES=$(($PHYSICAL * $CORES))
echo "Type $MODEL"
echo "Processors $PHYSICAL"
echo "Physical cores $PHY_CORES"
echo "Including hyperthreading cores $ALL"
2 भौतिक Xeon X5650 भौतिक प्रोसेसर के साथ एक मशीन पर परिणाम 6 भौतिक कोर के साथ प्रत्येक जो हाइपरथ्रेडिंग का समर्थन करता है:
Type model name : Intel(R) Xeon(R) CPU X5650 @ 2.67GHz
Processors 2
Physical cores 12
Including hyperthreading cores 24
मशीन पर 2 mdeol Xeon E5472 प्रोसेसर के साथ प्रत्येक 4 भौतिक कोर के साथ है जो हाइपरथ्रेडिंग का समर्थन नहीं करता है
Type model name : Intel(R) Xeon(R) CPU E5472 @ 3.00GHz
Processors 2
Physical cores 8
Including hyperthreading cores 8
उपयोग -लाइनक्स परियोजना lscpu(1)
द्वारा प्रदान की गई कमांड भी उपयोगी हो सकती है:
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 2
Core(s) per socket: 2
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 58
Model name: Intel(R) Core(TM) i7-3520M CPU @ 2.90GHz
Stepping: 9
CPU MHz: 3406.253
CPU max MHz: 3600.0000
CPU min MHz: 1200.0000
BogoMIPS: 5787.10
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 4096K
NUMA node0 CPU(s): 0-3
यह उन लोगों के लिए है जो * bsd, * nix या Solaris पर cpu cores को गिनने के लिए एक पोर्टेबल तरीका चाहते हैं (यह aix और hp-ux पर परीक्षण नहीं किया गया है लेकिन काम करना चाहिए)। इसने हमेशा मेरे लिए काम किया है।
dmesg | \
egrep 'cpu[. ]?[0-9]+' | \
sed 's/^.*\(cpu[. ]*[0-9]*\).*$/\1/g' | \
sort -u | \
wc -l | \
tr -d ' '
इसके बजाय सोलारिस grep
और विकल्प का उपयोग egrep
नहीं किया जाता है।-o
sed