কমান্ড লাইনে প্রসেসর / কোরগুলির সংখ্যা


108

লিনাক্সে প্রসেসরের / কোর সংখ্যা পেতে আমি নিম্নলিখিত কমান্ডটি চালাচ্ছি:

cat /proc/cpuinfo | grep processor | wc -l

এটি কাজ করে তবে এটি মার্জিত দেখাচ্ছে না। আপনি কীভাবে এটির উন্নতি করার পরামর্শ দিবেন?


উত্তর:


138

nproc আপনি যা খুঁজছেন তা

আরও এখানে: http://www.cyberciti.biz/faq/linux-get-number-of-cpus-core-command/


11
দুর্দান্ত - তবে / proc / cpuinfo এর মতো সর্বব্যাপী নয়। nprocআমার উবুন্টু ভিএম-তে আছে তবে আমার রেডহ্যাট 5.5-ভিত্তিক মেশিনে নেই।
ডিজিটাল ট্রমা

8
nproc --allসমস্ত ইনস্টল করা প্রসেসিং ইউনিটগুলির জন্য নিশ্চিত হন । ছাড়া --all, nprocকেবলমাত্র বর্তমান প্রক্রিয়াটিতে প্রসেসিং ইউনিট উপলব্ধ। আরও বিশদ জন্য ম্যান পৃষ্ঠা পড়ুন। MMV।
জেমস থমাসমুন 1979

96

সর্বাধিক সহজ সরঞ্জামটি গ্লিবিসি সহ আসে এবং তাকে বলা হয় getconf:

$ getconf _NPROCESSORS_ONLN
4

8
আরও ভাল, এটি একটি পসিক্স ইউটিলিটি: pubs.opengroup.org/onlinepubs/009604499/utilities/getconf.html
বিসিআরান

2
বিপরীতে nproc, এটি ম্যাক ওএস এক্স-এ (ডিফল্টরূপে) কাজ করে।
অ্যালেক জ্যাকবসন

দুর্ভাগ্যক্রমে, যদিও এই ইউটিলিটি সোলারিসে উপলভ্য, _NPROCESSORS_ONLN(বা সিপিইউ, প্রোক, ইত্যাদি সহ কিছু) এর আউটপুটে তালিকাভুক্ত। আমি আশা করছিলাম যেহেতু এটি একটি পিক্সিক সরঞ্জামটি লিনাক্স / সোলারিসে কাজ করবে তাই আমাকে শাখা প্রশাখার ব্যবহার করতে হবে না।
ব্রায়ান ভ্যান্ডেনবার্গ

39

আমি মনে করি আপনি যে পদ্ধতিটি দেন তা লিনাক্সে সর্বাধিক বহনযোগ্য। অপ্রয়োজনীয় catএবং wcপ্রক্রিয়াগুলি তৈরির পরিবর্তে , আপনি এটি কিছুটা ছোট করতে পারেন:

$ grep --count ^processor /proc/cpuinfo
2


14

নতুন কার্নেলগুলিতে আপনি সম্ভবত /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

এগুলি কী বোঝায় সে সম্পর্কে আরও তথ্যের জন্য অফিসিয়াল ডক্স দেখুন ।


2
এনপ্রোক এটি ব্যবহার করে, বেশিরভাগ ক্ষেত্রে ($ OMP_NUM_THREADS তারপরে Readdir sysfs)। আমি মনে করি এটি একটি ভাল ইন্টারফেস।
তোবু

2
আর getconf এই ইন্টারফেস (উপর নির্ভর onlineফাইল, সহজতর কি nproc করে বেশি)
Tobu

6

যখন কেউ "প্রসেসরের সংখ্যা / কোরগুলির" জন্য জিজ্ঞাসা করেন তখন 2 টি উত্তর অনুরোধ করা হচ্ছে। "প্রসেসরের" সংখ্যাটি মেশিনে সকেটে ইনস্টল করা শারীরিক সংখ্যা হবে।

"কোর" সংখ্যাটি শারীরিক কোরে হবে। হাইপারথ্রেড (ভার্চুয়াল) কোরগুলি অন্তর্ভুক্ত হবে না (অন্তত আমার মনে) mind যে কেউ থ্রেড পুল সহ প্রচুর প্রোগ্রাম লেখেন, আপনাকে সত্যিকার অর্থে শারীরিক কোরের বনাম কোরের / হাইপারথ্রেডগুলির গণনাটি জানতে হবে। এটি বলেছিল, আপনার প্রয়োজনীয় উত্তরগুলি পেতে আপনি নিম্নলিখিত স্ক্রিপ্টটি সংশোধন করতে পারেন।

#!/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"

হাইপারথ্রেডিং সমর্থন করে এমন 6 টি শারীরিক কোরের সাথে 2 টি মডেল জিয়ন X5650 ফিজিকাল প্রসেসর সহ একটি মেশিনের ফলাফল:

Type model name : Intel(R) Xeon(R) CPU           X5650  @ 2.67GHz
Processors 2
Physical cores 12
Including hyperthreading cores 24

হাইপারথ্রেডিং সমর্থন করে না এমন 4 টি শারীরিক কোরের সাথে 2 এমডিওল জিওন ই 5472 প্রসেসর সহ একটি মেশিনে

Type model name : Intel(R) Xeon(R) CPU           E5472  @ 3.00GHz
Processors 2
Physical cores 8
Including hyperthreading cores 8

এটি সর্বাধিক পুঙ্খানুপুঙ্খ উত্তর যা আমাকে সন্ধান করছিল তথ্য দিয়েছে।
কাঠের টোস্টার

4

lscpu(1)দ্বারা উপলব্ধ কমান্ড util-লিনাক্স প্রকল্পের এছাড়াও উপযোগী হতে পারে:

$ 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

1

এটি তাদের জন্য যারা * বিএসডি, * নিক্স বা সোলারিসে সিপিইউ কোরগুলি গণনা করার পোর্টেবল উপায়ে চান (আইস ​​এবং এইচপি-ইউক্সে পরীক্ষা করেন নি তবে কাজ করা উচিত)। এটা সবসময় আমার জন্য কাজ করেছে।

dmesg | \
egrep 'cpu[. ]?[0-9]+' | \
sed 's/^.*\(cpu[. ]*[0-9]*\).*$/\1/g' | \
sort -u | \
wc -l | \
tr -d ' '

Solaris grep& egrepহবে না -oবিকল্প তাই sedপরিবর্তে ব্যবহার করা হয়।


1

হাইপার-থ্রেডেড কোরগুলি গণনা ছাড়াই অন্য একটি লাইনার :

lscpu | awk -F ":" '/Core/ { c=$2; }; /Socket/ { print c*$2 }' 

0

আপনার যদি কোনও ওএস স্বাধীন পদ্ধতি প্রয়োজন হয় তবে উইন্ডোজ এবং লিনাক্স জুড়ে কাজ করে। অজগর ব্যবহার করুন

$ python -c 'import multiprocessing as m; print m.cpu_count()'
16
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.