এমন কোনও সরঞ্জাম আছে যা একটি একক প্রক্রিয়ার ব্যান্ডউইথ ব্যবহার পর্যবেক্ষণ করতে পারে?


15

আমি একটি দুর্দান্ত মনিটর পেয়েছি যা আমাকে একক প্রক্রিয়ার বিভিন্ন রানটাইম ডেটা লগ করতে দেয় to আমি এমন একটি সমতুল্যের সন্ধান করছি যা ব্যান্ডউইথের ব্যবহারের জন্য একই রকম হয়। আদর্শভাবে, কমান্ডটি দেখতে হবে bwmon --pid 1 --log init.log। এমন কি আছে? এটি অ্যাডমিন সুবিধা ছাড়াই চালানো যেতে পারে?


1
সম্পর্কিত: superuser.com/questions/189128/…
আকির

উত্তর:


3

আপনাকে শুরু করার জন্য কিছু (যদি আপনি নিজে এটি লিখতে চান তবে):

#!/bin/bash
#
# usage: bwmon PID

IN=0; OUT=0; TIME=0

get_traffic() {
    t=`awk '/eth0:/ { printf("%s,%d,%d\n",strftime("%s"),$2,$10); }' < /proc/$1/net/dev`
    IN=${t#*,}; IN=${IN%,*}
    OUT=${t##*,};
    TIME=${t%%,*};
}

get_traffic $1
while true
do
    _IN=$IN; _OUT=$OUT; _TIME=$TIME
    get_traffic $1
    echo "$TIME,$(( $TIME - $_TIME )),$IN,$(( $IN - $_IN )),$OUT,$(( $OUT - $_OUT))"
    sleep 1
done

মন্তব্য করেছেন:

  • কেবলমাত্র এথ0 পরীক্ষা করে
  • প্রতি 1 সেকেন্ডে চেক করে
  • শুধুমাত্র লিনাক্সের অধীনে কাজ করে, তবে অন্যান্য ইউনিক্সগুলি একই রকম কাজ করে (প্রোফস বা যাই হোক না কেন)
  • আউটপুট একটি sqlite.db সঙ্গে সংরক্ষণ করা যেতে পারে stat --printf="%N\n" /proc/PID/exe | cut -d ' ' -f 3

11
আমি মনে করি না এটি আসলে প্রতি-প্রক্রিয়া পাল্টা; আমি মনে করি এটি প্রক্রিয়াটির দৃষ্টিকোণ থেকে মোট ইন্টারফেস গণনা। আমি ncলোকালহোস্টের উপরে ক্লায়েন্ট / সার্ভারের জুড়ি চালিয়ে প্রতি সেকেন্ডে একটি বাইট প্রেরণ করেছি এবং দেখেছি /proc/<listening-nc-pid>/net/dev। তারপরে আমি ncসর্বাধিক হারে পাঠিয়ে একটি দ্বিতীয় জুটি চালালাম। আমি যে ফাইলটি দেখছিলাম তা প্রথম জোড়ের সাথে দ্বিতীয় জুটির ডেটা খুব স্পষ্টভাবে গণনা করেছে। লিনাক্স ২.6.৩২ এ চলছে।
জন্ডার

আমার একটি ত্রুটি ছিল function strftime never defined; এটি গাক ইনস্টল করে ঠিক করা হয়েছিল ।
tspang

4
@ জেন্ডার এটি সঠিক, /proc/<pid>/net/devএবং /proc/net/devএখানে একই বিষয়বস্তু আছে। সুতরাং স্কিপটি শুধুমাত্র প্রদত্ত প্রক্রিয়াটির জন্য নয়, বরং এথ0-এর ট্র্যাফিকের প্রতিবেদন করে।
স্কাই

1
নিশ্চিত হওয়া যে এটি কোনও উত্তর নয়। এটি eth0প্রক্রিয়াটির দ্বারা দেখা হিসাবে, ইন্টারফেস কাউন্টারে পরিমাপ করে । এটি সেই ইন্টারফেসের মাধ্যমে প্রক্রিয়া দ্বারা প্রেরিত ডেটা গণনা করে না
নবীন

@ নবীন উত্তর একটি উত্তর যা প্রশ্নের উত্তর দেওয়ার চেষ্টা করে। একটি ভুল উত্তর এখনও একটি উত্তর। যদি এটি ভুল হয় তবে আপনি এটিকে কমিয়ে দিতে পারেন তবে এটি এখনও একটি উত্তর।
টেরডন

6

আপনি যদি ব্যবহৃত সাধারণ I / O ব্যান্ডউইথ দিয়ে সন্তুষ্ট হন (বা যদি আপনার প্রোগ্রামটি পুরোপুরি নেটওয়ার্ক I / O করে তবে) আপনি /proc/<pid>/ioফাইলটি দেখতে পারবেন । আপনি ক্ষেত্র rcharএবং wcharক্ষেত্র চান । আপনি বিয়োগ করতে চান read_bytesএবং write_bytes, যেহেতু তারা স্টোরেজ স্তরটিতে পড়ার এবং লেখার প্রতিনিধিত্ব করে। Http://www.kernel.org/doc/Docamentation/files systemms/proc.txt এর ৩.৩ বিভাগ দেখুন ।

আপনার যদি আরও রেজোলিউশনের প্রয়োজন হয় .... আপনি সম্ভবত এটি ব্যবহার করে স্ক্রিপ্ট করতে পারেন lsofএবং straceযদিও সমস্ত কোণার কেসগুলি সঠিকভাবে পাওয়া বেদনাদায়ক হবে। মৌলিক ধারণা আউটপুট পার্স করতে হয় strace -p <pid>, প্রথম প্যারামিটার দখল (= ফাইল বর্ণনাকারী) থেকে ফেরত মান (= বাইটের সংখ্যা) read(), write(), send(), এবং recv()কল ( উল্লেখ্য আমি আশ্রয়স্থল '; বেশ কিছু আরো syscalls করার জন্য কান রাখে t তাদের সকলকে অনুসরণ করে)। নেতিবাচক মানগুলি ত্যাগ করুন; তারা ত্রুটিগুলি নির্দেশ করে। ব্যবহারের lsof -p <pid>চিত্র যা আউট ফাইল বর্ণনাকারী বিভিন্ন TCP / এর ফলে UDP সকেট, এবং FD প্রতি গন্য আপ যোগ করুন। আপনি যে প্রক্রিয়াটি পরিদর্শন করছেন তার মালিক হওয়ার পরেও এই কৌশলটি মূলের প্রয়োজন হয় না তবে এটি লিখতে সত্যিই লোমশ হবে, ভাল লিখতে দেওয়া যাক।


3

নেট চেষ্টা করুন :

নেট হগস একটি ছোট 'নেট শীর্ষ' সরঞ্জাম। বেশিরভাগ সরঞ্জামের মতো প্রতি প্রোটোকল বা প্রতি সাবনেট ট্র্যাফিক ভাঙ্গার পরিবর্তে এটি প্রক্রিয়া অনুসারে ব্যান্ডউইথকে দলবদ্ধ করে। নেট হগগুলি লোড হওয়ার জন্য একটি বিশেষ কার্নেল মডিউল নির্ভর করে না। যদি হঠাৎ করে অনেকগুলি নেটওয়ার্ক ট্র্যাফিক হয়, আপনি নেট হগগুলিকে গুলি করতে পারেন এবং তাত্ক্ষণিকভাবে দেখতে পান যে কোন পিআইডি এটির কারণ হয়ে উঠছে। এটি এমন প্রোগ্রামগুলিকে সনাক্ত করতে সহজ করে যা বন্য হয়ে গেছে এবং হঠাৎ করে আপনার ব্যান্ডউইথ গ্রহণ করছে।

2
দুঃখের বিষয়, এটি কোনও একক প্রক্রিয়া পর্যবেক্ষণ করতে পারে না এবং এটি লগ হয় না। দ্বিতীয় প্রয়োজনীয়তা (লগিং) প্রথমটি যদিও এটি অনেক বেশি গুরুত্বপূর্ণ। ওহ, এবং এটি অ্যাডমিন সুবিধাগুলি ছাড়া চলবে না :(
শেশপাং

1
এর জন্য আপনাকে অবশ্যই অবশ্যই মূল অধিকারগুলির প্রয়োজন হবে।
ফালমারি

আপনি -t পতাকা (ট্রেসমোড) দিয়ে নেটগাগগুলি ব্যবহার করার চেষ্টা করতে পারেন। ফলস্বরূপ আউটপুটটি আপনার আগ্রহী একক প্রক্রিয়াটির ট্র্যাফিক বের করার জন্য বিশ্লেষণ করা যাবে
Valerio Schiavoni
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.