আমি কিভাবে একটি প্রক্রিয়া জন্য পৃথক সিপিইউ কোর ব্যবহার পরিমাপ করতে পারি?


114

কোর দ্বারা একটি নির্দিষ্ট প্রক্রিয়া সিপিইউ ব্যবহার পরিমাপ করার কোন উপায় আছে?

আমি জানি শীর্ষ কোর এবং পুরো সিস্টেমের CPU ব্যবহারের পরিমাপ জন্য ভাল taskset সম্পর্কে যা CPU- র কোর প্রক্রিয়া চালানোর জন্য অনুমতি দেওয়া হয় তথ্য প্রদান করতে পারেন।

তবে কীভাবে আমি সিপিইউ কোরের দ্বারা একটি নির্দিষ্ট প্রক্রিয়া'র সিপিইউ ব্যবহার পরিমাপ করব?

উত্তর:


139

আপনি এখনও শীর্ষে এটি করতে পারেন । শীর্ষটি চলমান থাকাকালীন আপনার কীবোর্ডে '1' টিপুন, তারপরে এটি প্রতি কোর প্রতি সিপিইউ ব্যবহার দেখায়।

নির্দিষ্ট ব্যবহারকারীর অ্যাকাউন্টের অধীনে সুনির্দিষ্ট প্রক্রিয়া চালিয়ে দেখানো প্রক্রিয়াগুলি সীমাবদ্ধ করুন এবং সেই ব্যবহারকারীর সীমাবদ্ধ করতে 'u' টাইপ ব্যবহার করুন


3
আপনি Irix মোড ( সোলারিস মোডের বিপরীতে ) Iটগল করতে টিপতে পারেন । যখন , প্রক্রিয়া তালিকায় প্রদর্শিত শতাংশ সিপিইউ থ্রেডের সাথে সম্পর্কিত । যখন , উল্লিখিত শতাংশটি তুলনামূলকভাবে সিপিইউ সামগ্রিক ক্ষমতাতে প্রদর্শিত হয় (যেমন সমস্ত থ্রেড - ওরফে সমস্ত কোর)। onoff
7heo.tk 20'15

8
এটি একটি একক প্রক্রিয়ার সাথে নির্দিষ্ট নয়, এটি একাধিক কোর জুড়ে সমস্ত প্রক্রিয়ার সিপিইউ ব্যবহার দেখায়
m_vitaly

কীভাবে আমরা "1" একটি আর্গুমেন্ট হিসাবে পাস করতে পারেন top, manএর পৃষ্ঠাটি জানাচ্ছে top -1কিন্তু এটি অভিযোগ! এটির top -1 -n 1একক পুনরাবৃত্তি পেতে ভাল লাগবে topতবে পৃথক সিপিইউ ব্যবহার প্রদর্শিত হবে।
কোয়ান্টা

76

তুমি ব্যবহার করতে পার:

 mpstat -P ALL 1

এটি দেখায় যে প্রতিটি কোর কতটা ব্যস্ত এবং এটি প্রতিটি সেকেন্ডে স্বয়ংক্রিয়ভাবে আপডেট হয়। আউটপুটটি এরকম কিছু হবে (কোয়াড-কোর প্রসেসরে):

10:54:41 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
10:54:42 PM  all    8.20    0.12    0.75    0.00    0.00    0.00    0.00    0.00   90.93
10:54:42 PM    0   24.00    0.00    2.00    0.00    0.00    0.00    0.00    0.00   74.00
10:54:42 PM    1   22.00    0.00    2.00    0.00    0.00    0.00    0.00    0.00   76.00
10:54:42 PM    2    2.02    1.01    0.00    0.00    0.00    0.00    0.00    0.00   96.97
10:54:42 PM    3    2.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   98.00
10:54:42 PM    4   14.15    0.00    1.89    0.00    0.00    0.00    0.00    0.00   83.96
10:54:42 PM    5    1.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.00
10:54:42 PM    6    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
10:54:42 PM    7    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

এই কমান্ডটি মূল প্রশ্নের উত্তর দেয় না যদিও এটি কোনও নির্দিষ্ট প্রক্রিয়ার জন্য সিপিইউ কোর ব্যবহার প্রদর্শন করে না।


3
আমি মনে করি এটি আসলে প্রশ্নের উত্তর দেয় না। অন্য কোনও প্রক্রিয়া চলমান না থাকলে এটি কেবল একই জিনিস। এছাড়াও এটি কোয়াড কোর সিপিইউ বলে মনে হয় না, আরও আটটি কোরের মতো (সম্ভবত এইচটি সক্ষম করে কোয়াড)।
সোয়াইন

1
এটি এইচটি সক্ষম করে একটি কোয়াড কোর।
কামরান বিগডিলে

মূল প্রশ্নের উত্তর দেয় না। তবে আমার কাছ থেকে (-১) উল্লেখ না করার জন্য।
কেঘাটক

1
আমি @ কেঘাটকের সাথে একমত, এটি আসল প্রশ্নের উত্তর দেয় না -১
জোদাগ

41

আপনি ব্যবহার করতে পারেন ps
যেমন ডুয়াল কোর সিপিইউতে দুটি ব্যস্ত থ্রেড সহ পাইথন প্রক্রিয়া:

$ ps -p 29492 -L -o pid,tid,psr,pcpu
  PID   TID PSR %CPU
29492 29492   1  0.0
29492 29493   1 48.7
29492 29494   1 51.9

(পিএসআর হ'ল থ্রেডটি বর্তমানে নির্ধারিত সিপিইউ আইডি)

আপনি দেখতে পাচ্ছেন যে থ্রেডগুলি একই সিপিইউ কোরটিতে চলছে (জিআইএল এর কারণে)

একই অজগর স্ক্রিপ্টটি জাইথনে চলছে, আমরা দেখতে পাচ্ছি যে স্ক্রিপ্টটি উভয় কোরের ব্যবহার করছে (এবং আরও অনেক পরিষেবা রয়েছে বা যা কিছু থ্রেড রয়েছে যা প্রায় নিষ্ক্রিয়):

$ ps -p 28671 -L -o pid,tid,psr,pcpu
  PID   TID PSR %CPU
28671 28671   1  0.0
28671 28672   0  4.4
28671 28673   0  0.6
28671 28674   0  0.5
28671 28675   0  2.3
28671 28676   0  0.0
28671 28677   1  0.0
28671 28678   1  0.0
28671 28679   0  4.6
28671 28680   0  4.4
28671 28681   1  0.0
28671 28682   1  0.0
28671 28721   1  0.0
28671 28729   0 88.6
28671 28730   1 88.5

আপনি আউটপুটটি প্রক্রিয়া করতে পারবেন এবং প্রতিটি সিপিইউ কোরের জন্য মোট সিপিইউ গণনা করতে পারেন।

দুর্ভাগ্যক্রমে, এই পদ্ধতিরটি 100% নির্ভরযোগ্য বলে মনে হচ্ছে না, কখনও কখনও আমি দেখতে পাই যে প্রথম ক্ষেত্রে দুটি কার্যকরী থ্রেড প্রতিটি সিপিইউ কোরকে আলাদা করা হয়েছে বলে জানা গেছে, বা পরবর্তী ক্ষেত্রে দুটি থ্রেড চালু রয়েছে বলে জানা গেছে একই কোর ..


13

htop স্বতন্ত্র মূল ব্যবহারের একটি সুন্দর ওভারভিউ দেয়


4

psসমাধান ছিল আমি প্রায় কী প্রয়োজন ছিল এবং কিছু ব্যাশ মধ্যে ঠিক কি মূল প্রশ্ন জিজ্ঞাসা করে নিক্ষিপ্ত সঙ্গে প্রতি-কোর নির্দিষ্ট প্রক্রিয়ার ব্যবহার দেখতে

এটি বহু-থ্রেডযুক্ত প্রক্রিয়াগুলির প্রতি-কোর ব্যবহার দেখায় ।

যেমন ব্যবহার করুন: cpustat `pgrep প্রক্রিয়া নাম` pgrep otherprocessname` ...

#!/bin/bash

pids=()
while [ $# != 0 ]; do
        pids=("${pids[@]}" "$1")
        shift
done

if [ -z "${pids[0]}" ]; then
        echo "Usage: $0 <pid1> [pid2] ..."
        exit 1
fi

for pid in "${pids[@]}"; do
        if [ ! -e /proc/$pid ]; then
                echo "Error: pid $pid doesn't exist"
                exit 1
        fi
done

while [ true ]; do
        echo -e "\033[H\033[J"
        for pid in "${pids[@]}"; do
                ps -p $pid -L -o pid,tid,psr,pcpu,comm=
        done
        sleep 1
done

নোট: এই পরিসংখ্যান প্রক্রিয়া উপর ভিত্তি করে সারা জীবনের , না শেষ এক্স সেকেন্ডের যাতে আপনি পাল্টা রিসেট করতে আপনার প্রক্রিয়া পুনরায় চালু করতে হবে।


আপনি / সিইউবি ফাংশনগুলি পড়ুন () এবং খুলুন () সিউডো ফাইলগুলি / প্রোক / পিড / * এ খুলতে এবং আপনার প্রয়োজনীয় ডেটা পার্স করতে পারেন।
GL2014

2
dstat -C 0,1,2,3 

আপনাকে প্রথম 4 টি কোরের সিপিইউ ব্যবহারও দেবে। অবশ্যই, যদি আপনার কাছে 32 টি কোর থাকে তবে এই কমান্ডটি কিছুটা দীর্ঘতর তবে কার্যকর হবে যদি আপনি কেবল কয়েকটি কোরে আগ্রহী হন।

উদাহরণস্বরূপ, আপনি যদি কেবল কোর 3 এবং 7 তে আগ্রহী হন তবে আপনি তা করতে পারেন

dstat -C 3,7

এটি কীভাবে একক প্রক্রিয়ার সাথে প্রাসঙ্গিক হবে?
einpoklum

1

আমি শুধু এই সমস্যা এবং আমি একটি অনুরূপ উত্তর পাওয়া এখানে

পদ্ধতিটি হল আপনি topযেভাবে চান সেটি সেট করে এবং তারপরে W(মূলধন ডাব্লু) টিপুন । এটি সংরক্ষণ করেtop current HOME / .toprc এর একটি কনফিগারেশন ফাইলে বর্তমান লেআউটটিকে সংরক্ষণ করে

যদিও আপনি একাধিক চালাতে চান তবে এটি কাজ করতে পারে না top বিভিন্ন কনফিগারেশন সহ ।

সুতরাং আমি আপনার চারপাশের কোনও কাজ বিবেচনা করি তার মাধ্যমে আপনি নিম্নলিখিত কনফিগারেশন ফাইলগুলিতে লিখতে / নীচের একটি করে বিভিন্ন কনফিগারেশন ফাইল ব্যবহার করতে পারেন ...

1) বাইনারি নামকরণ

  ln -s /usr/bin/top top2
  ./top2

এখন .top2rc আপনার $ হোমতে লিখিত হতে চলেছে

২) alternative Home কে কিছু বিকল্প পথে সেট করুন, যেহেতু এটির কনফিগারেশন ফাইলটি $ HOME / .binary-name.rc ফাইলটিতে লিখবে

HOME=./
top

এখন .toprc বর্তমান ফোল্ডারে লিখিত হতে চলেছে।

উপরে বিভিন্ন ব্যবহারের অ্যাকাউন্টিং যুক্ত করতে অন্যান্য লোকের মন্তব্যে ব্যবহারের মাধ্যমে আপনি সেই তথ্যের জন্য একটি ব্যাচ আউটপুট তৈরি করতে পারেন এবং পরবর্তীটি কোনও স্ক্রিপ্টের মাধ্যমে তথ্যকে একত্রিত করে। আপনার স্ক্রিপ্টের মতো খুব সহজ নাও হতে পারে তবে আমাকে সমস্ত প্রক্রিয়া সরবরাহ করার জন্য আমি শীর্ষস্থান খুঁজে পেয়েছি যাতে পরে আমি দীর্ঘকালীন সময়ে একটি রাজ্য পুনরুদ্ধার করতে এবং ক্যাপচার করতে পারি যা আমি অন্যথায় মিস করতে পারি (বিপথগামী প্রক্রিয়াগুলির কারণে অব্যক্ত আকস্মিক সিপিইউ ব্যবহার)


1

আমি ভাবি perf stat আপনার যা দরকার।

আপনি কোনও --cpu=listবিকল্প নির্দিষ্ট করার সময় এটি কোনও প্রক্রিয়াটির একটি নির্দিষ্ট ব্যবহার দেখায় । perf stat --cpu=0-7 --no-aggr -- make all -jকমান্ড ব্যবহার করে একটি প্রকল্প তৈরির সিপিইউ ব্যবহার নিরীক্ষণের উদাহরণ এখানে । আউটপুটটি হ'ল:

CPU0         119254.719293 task-clock (msec)         #    1.000 CPUs utilized            (100.00%)
CPU1         119254.724776 task-clock (msec)         #    1.000 CPUs utilized            (100.00%)
CPU2         119254.724179 task-clock (msec)         #    1.000 CPUs utilized            (100.00%)
CPU3         119254.720833 task-clock (msec)         #    1.000 CPUs utilized            (100.00%)
CPU4         119254.714109 task-clock (msec)         #    1.000 CPUs utilized            (100.00%)
CPU5         119254.727721 task-clock (msec)         #    1.000 CPUs utilized            (100.00%)
CPU6         119254.723447 task-clock (msec)         #    1.000 CPUs utilized            (100.00%)
CPU7         119254.722418 task-clock (msec)         #    1.000 CPUs utilized            (100.00%)
CPU0                 8,108 context-switches          #    0.068 K/sec                    (100.00%)
CPU1                26,494 context-switches                                              (100.00%)
CPU2                10,193 context-switches                                              (100.00%)
CPU3                12,298 context-switches                                              (100.00%)
CPU4                16,179 context-switches                                              (100.00%)
CPU5                57,389 context-switches                                              (100.00%)
CPU6                 8,485 context-switches                                              (100.00%)
CPU7                10,845 context-switches                                              (100.00%)
CPU0                   167 cpu-migrations            #    0.001 K/sec                    (100.00%)
CPU1                    80 cpu-migrations                                                (100.00%)
CPU2                   165 cpu-migrations                                                (100.00%)
CPU3                   139 cpu-migrations                                                (100.00%)
CPU4                   136 cpu-migrations                                                (100.00%)
CPU5                   175 cpu-migrations                                                (100.00%)
CPU6                   256 cpu-migrations                                                (100.00%)
CPU7                   195 cpu-migrations                                                (100.00%)

বাম কলামটি নির্দিষ্ট সিপিইউ সূচক এবং ডানদিকের কলামটি সিপিইউর ব্যবহার। আপনি যদি --no-aggrবিকল্পটি নির্দিষ্ট না করেন তবে ফলাফলটি একত্রিত হবে। --pid=pidবিকল্প আপনি একটি চলমান প্রক্রিয়া নিরীক্ষণ করতে ইচ্ছুক সাহায্য করবে।

চেষ্টা করুন -a --per-coreবা -a perf-socketখুব বেশি, যা আরও শ্রেণিবদ্ধ তথ্য উপস্থাপন করবে।

ব্যবহার সম্পর্কে আরও perf statএই টিউটোরিয়ালে দেখা যেতে পারে: পারফেক্ট সিপিইউ স্ট্যাটিস্টিক , এছাড়াও perf help statঅপশনগুলির অর্থের জন্য সহায়তা করবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.