আইওটিপটিতে 1.5 এমবি / সেকেন্ড ডিস্ক রাইটিং দেখাচ্ছে তবে সমস্ত প্রোগ্রামে 0.00 বি / গুলি রয়েছে have


18

আমি iotopআউটপুট বুঝতে পারি না : এটি disk 1.5 মেগাবাইট / s ডিস্ক রাইটিং (উপরের ডানদিকে) দেখায়, তবে সমস্ত প্রোগ্রামে 0.00 বি / গুলি থাকে। কেন?

এখানে চিত্র বর্ণনা লিখুন

কুবুন্টু 14.04.3 এলটিএস এক্স 64 এ আমি কয়েক মিলিয়ন ফাইল ব্যবহার করে কোনও ফোল্ডারের সামগ্রী মুছে perl -e 'for(<*>){((stat)[9]<(unlink))}'দিচ্ছিলাম বলেই ভিডিওটি নেওয়া হয়েছিল ।

iotopব্যবহার করে চালু করা হয়েছিল sudo iotop

উত্তর:


22

আইটপ দ্বারা প্রদর্শিত তথ্য পৃথক প্রক্রিয়া এবং পুরো সিস্টেমের জন্য একইভাবে সংগ্রহ করা হয় না। "প্রকৃত" বৈশ্বিক পরিসংখ্যানগুলি প্রতি-প্রক্রিয়া সংখ্যার যোগফল নয় (এটিই "মোট" যা)।

সমস্ত তথ্য সংগ্রহকারী ফাইল সিস্টেম থেকে সংগ্রহ করা হয় ।

  • প্রতিটি প্রক্রিয়াটির জন্য, আইটপ বিশেষত এবং মানগুলি থেকে ডেটা পড়ে । এই পাস বাইটের সংখ্যা হয় এবং সিস্টেম কল (তত্সহ যেমন ভ্যারিয়েন্টস , , , , ইত্যাদি)।/proc/PID/iorcharwcharreadwritereadvwritevrecvsend
  • বিশ্বব্যাপী "আসল" মানগুলি /proc/vmstatবিশেষত মান pgpginএবং pgpgoutমানগুলি থেকে পড়ে । এগুলি কার্নেল এবং হার্ডওয়্যারের মধ্যে বিনিময় হওয়া ডেটা পরিমাপ করে (আরও স্পষ্টভাবে, এটি সেই তথ্য যা কার্নেলের ব্লক ডিভাইস স্তর দ্বারা পরিবর্তিত হয়)।

প্রতি-প্রক্রিয়া ডেটা এবং ব্লক ডিভাইস স্তর ডেটা পৃথক করার জন্য অনেকগুলি কারণ রয়েছে। নির্দিষ্টভাবে:

  • ক্যাচিং এবং বাফারিং এর অর্থ হ'ল আমি / হে এক স্তরে ঘটছে একই সময়ে বা একই স্তরের একই স্তরে আর ঘটবে না। উদাহরণস্বরূপ, ক্যাশে থেকে পড়া ডেটা যে প্রক্রিয়াটি অ্যাক্সেস করে তা থেকে পঠন হিসাবে গণ্য করা হয়, তবে হার্ডওয়্যার থেকে কোনও সম্পর্কিত পঠন নেই (এটি ইতিমধ্যে ঘটেছে সম্ভবত সম্ভবত অন্য প্রক্রিয়ার পক্ষে)।
  • প্রক্রিয়া-স্তরের ডেটাতে পাইপ, সকেট এবং অন্যান্য ইনপুট / আউটপুট বিনিময় করা ডেটা অন্তর্ভুক্ত থাকে যা অন্তর্নিহিত ডিস্ক বা অন্যান্য ব্লক ডিভাইসকে জড়িত করে না।
  • প্রক্রিয়া-স্তরের ডেটা কেবল ফাইলের সামগ্রীর জন্য অ্যাকাউন্ট করে, মেটাডেটা নয়।

এই শেষ পার্থক্যটি আপনি এখানে যা দেখছেন তা ব্যাখ্যা করে। ফাইলগুলি সরানো কেবল ডেটা নয় মেটাডেটাকে প্রভাবিত করে, তাই প্রক্রিয়াটি কিছুই লিখছে না। ফাইলগুলি মুছতে তালিকাভুক্ত করার জন্য এটি ডিরেক্টরি বিষয়বস্তু পড়তে হতে পারে তবে এটি এতটা ছোট যে এটি নজরে না রেখে স্ক্রোল করতে পারে।

আমি মনে করি না লিনাক্স ফাইল মেটাডেটা আপডেটগুলি নিরীক্ষণের জন্য কোনও উপায় সরবরাহ করে। আপনি /sys/fsকিছু ফাইল সিস্টেমের জন্য এন্ট্রিগুলির মাধ্যমে প্রতি ফাইল সিস্টেম I / O পর্যবেক্ষণ করতে পারেন । আমি মনে করি না যে আপনি নির্দিষ্ট প্রক্রিয়াগুলির বিরুদ্ধে মেটাডেটা I / O হিসাবে অ্যাকাউন্ট করতে পারেন, সাধারণ ক্ষেত্রে এটি করা খুব জটিল হবে কারণ একাধিক প্রক্রিয়া একই মেটাডেটা পড়ার বা পরিবর্তনের কারণ হতে পারে।


1
বেশ সুন্দর উত্তর, ধন্যবাদ। আউটপুটটির বিবর্তন অনুসরণ করার জন্য আপনি কি আরও নির্ভরযোগ্য উপায়ের পরামর্শ দিতে চান?
রুই এফ রিবেইরো

1
@ রুইএফরিবিড়ো আপনি rm -rবর্তমানে কোন ফাইলটি straceএটির মাধ্যমে প্রক্রিয়াকরণ করছে তা দেখতে পারেন , তবে প্রতিটি ডিরেক্টরিতে ট্র্যাভারসাল ক্রমটি কিছুটা অপ্রত্যাশিত বলে এটি আপনাকে সম্পূর্ণ করার শতাংশের খুব কার্যকর অনুমান দেয় না। যদি সেই ফাইল সিস্টেমে কেবলমাত্র একটি বৃহত্তর অপারেশন চলছে, এবং এর সাথে খুব বেশি শক্ত লিঙ্ক জড়িত না রয়েছে, পর্যবেক্ষণ df -iআপনাকে জানায় যে কতগুলি ফাইল প্রক্রিয়া করা হয়েছে।
গিলস 'খারাপ' হওয়া বন্ধ করুন 'ডেস্ক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.