লিনাক্স - আমি কীভাবে দেখতে পাচ্ছি ডিস্ক আইওয়ের জন্য অপেক্ষা করছে


42

আমার কাছে এমন একটি সার্ভার রয়েছে যা সত্যিই বেশি লোড করেছে। সিপিইউ ব্যবহারের দিক দিয়ে আমার কাছে কিছুই লাফিয়ে উঠছে না, এবং এটি অদলবদল হচ্ছে না।

আমি মনে করি এটির কারণেই কিছু প্রক্রিয়া ডিস্ক আইওয়ের জন্য অপেক্ষা করছে এবং আমি কী অপেক্ষা করছে তা দেখতে চাই।

এমন কোনও প্রোগ্রাম আছে যা আমাকে দেখায় যে কী প্রক্রিয়াগুলি আইওয়ের জন্য অপেক্ষা করছে? আমি জানি iotopতবে এটি বর্তমানে আইও কী করছে তা দেখায়।

নাকি এটি একটি নির্বোধ প্রশ্ন? (তা হলে কীভাবে বুঝাবেন :))

উত্তর:


47

আপনি আইওটপের মতো আই / ও মনিটর ব্যবহার করতে পারেন তবে এটি আপনাকে কেবল বর্তমান আই / ও ক্রিয়াকলাপগুলির সাথে প্রক্রিয়া বা থ্রেড প্রদর্শন করবে।

আপনার যদি I / O এর জন্য অপেক্ষা করা প্রক্রিয়াগুলি ব্রাউজ করতে হয় তবে নীচের মত STAT পতাকা 'ডি' সহ প্রক্রিয়াগুলি পর্যবেক্ষণ করতে ঘড়ি ব্যবহার করুন:

watch -n 1 "(ps aux | awk '\$8 ~ /D/  { print \$0 }')"

মিষ্টি। এটি আমাকে সুন্দরভাবে সাহায্য করেছে।
স্টু থম্পসন

2
বিকল্পভাবে, আপনি 'iotop -o' কমান্ডটি ব্যবহার করতে পারেন যা কেবলমাত্র 'প্রক্রিয়া বা থ্রেডগুলি দেখায় iotop --help অনুসারে আসলে I / O' করছে।
রায়ান 1

1
@ রায়ান পাশাপাশি এ থেকে প্রয়োজনীয় তথ্য সরবরাহ না করে উন্নততর সুবিধাদি প্রয়োজন। , এবং কেবল প্রয়োজনীয় তথ্য দিন এবং উন্নততর সুবিধার দরকার নেই। iowaitiotopwatchpsawk
ধনী

4
আমি psএর পসিক্স পতাকা ব্যবহার করতাম এবং awkএটিকে আলাদাভাবে সম্পাদনা করতাম: watch "(ps -eo stat,pid,comm|awk '(NR==1)||(\$1~/D/){print}')"- এইভাবে আপনি কলাম শিরোনাম এবং স্ট্যাট, পিড এবং কমান্ডটি পাবেন।
ধনী

18

ps axuএবং "ডি" অবস্থায় থাকা প্রক্রিয়াগুলি সন্ধান করুন। PS (1) ম্যানপেজের ভিত্তিতে , ডি অবস্থার মধ্যে থাকা প্রক্রিয়াগুলি নিরবচ্ছিন্ন ঘুমে থাকে, যার প্রায়শই অর্থ 'IO এর জন্য অপেক্ষা করা' means দুর্ভাগ্যক্রমে, এই প্রক্রিয়াগুলি হত্যার পক্ষে সাধারণত সম্ভব হয় না।


16

আইও-র জন্য কী অপেক্ষা করছে তা জানার জন্য জাঞ্চির উত্তরটি আমি সবচেয়ে ভাল।

যখন আপনি বলছেন যে আপনার সার্ভারটি উচ্চ লোডের নিচে রয়েছে, আপনি এর অর্থ কী? বিশেষভাবে কিছু সাড়া করতে ধীর?

আপনি যদি ভাবছেন যে আপনার ডিস্ক আইওটি যদি বাধা হয়ে থাকে তবে ডিস্কটি আসলে ভারী বোঝার মধ্যে রয়েছে কিনা তা দেখার জন্য আমি আইওস্ট্যাট কমান্ড (সিসট্যাট প্যাকেজের অংশ) ব্যবহার করব।

উদাহরণ:

[kbrandt@kbrandt-opadmin: ~] iostat -x 1 3                                                                                           

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.38   34.71    2.64    1.18    0.00   59.21 
Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.11    17.35    2.21   20.31    46.57   301.40    15.45     2.27  100.66   1.48   3.34
sda1              0.10    17.31    2.21   20.31    46.48   301.10    15.44     2.27  100.66   1.48   3.34
sda2              0.00     0.00    0.00    0.00     0.00     0.00     3.50     0.00   30.00  30.00   0.00
sr0               0.00     0.00    0.00    0.00     0.00     0.00    18.44     0.00  677.67 512.61   0.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           6.22    0.00    4.31    0.00    0.00   89.47   
Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sda1              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sda2              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sr0               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00

1
আইওস্টাটের আউটপুটকে কীভাবে ব্যাখ্যা করতে হয় তা বোঝাতে সহায়ক হবে "এটি দেখতে যে ডিস্কটি আসলে ভারী চাপের মধ্যে রয়েছে কিনা।"
স্কট বুচানান

0

ব্লক রিড / রাইটিং অপারেশনগুলি কী প্রক্রিয়াগুলি করছে তাতে ব্লক_ডাম্প লগিং সক্ষম করুন :

echo 1 > /proc/sys/vm/block_dump
tail -f /var/log/syslog

হয়ে গেলে, ট্রেসিংটি অক্ষম করুন যাতে আপনি নিজের লগ ফাইলগুলিকে স্প্যাম না করেন:

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