শক্তিমানরা strace
আমাকে হতাশ করেছে। এটা কিভাবে সম্ভব?
time foo
অনুষ্ঠান foo
ইউজার-স্পেস ( "ব্যবহারকারী") এবং কার্নেল ( "sys") উভয় রান ( "বাস্তব") বেশ কয়েকটি সেকেন্ড সময় লাগে, কিন্তু তুচ্ছ cpu 'র সময় ব্যবহার করে। উত্সাহীদের জন্য, foo
নীচে সংজ্ঞায়িত করা হয়েছে।
সুতরাং এটি বেশিরভাগ সময় সিপিইউ নির্দেশাবলী কার্যকর না করে অন্য কোনও কিছুর জন্য অপেক্ষা করতে ব্যয় করে। সাধারণত, আমি দেখতে পাচ্ছি যে এটি কীভাবে অপেক্ষা করছে strace
- অর্থাত্ কোন সিস্টেম কলটি দীর্ঘ সময়ের জন্য অবরুদ্ধ করছে। দুর্ভাগ্যক্রমে এই পদ্ধতির কাজ হয়নি।
strace -ttt -T -C -w foo
সিস্টেম কল, টাইমস্ট্যাম্পড এবং সিস্টেম কলগুলিতে ব্যয় করা (বাস্তব) সময়ের সংক্ষিপ্তসার দেখায়। তবে এই নির্দিষ্ট প্রক্রিয়াটি সিস্টেম কলের অভ্যন্তরে সামগ্রিক (বাস্তব) সময় ব্যয় করার মতো দেখায়।
foo
আসলে journalctl -b -u dev-hugepages.mount
। এটিকে পুনরুত্পাদন করার জন্য আমাকে সর্বশেষ যুক্তিটি প্রতিবার ভিন্ন সিস্টেমড ইউনিটে পরিবর্তন করতে হয়েছিল। অন্য কথায়, আমি যে বিলম্বটি তদন্ত করছি তা প্রথমবার হয়েছিল যখন আমি কোনও একটি সিস্টেমড ইউনিটের জন্য লগগুলি পাওয়ার চেষ্টা করি। সম্পাদনা : মূল প্রশ্নের উত্তর দেওয়ার পরে, আমি বিলম্বটি পুনরুত্পাদন করতে আমার এই সমস্যাটির কারণটিও উপলব্ধি করেছিলাম ।
এই প্রক্রিয়া দ্বারা ব্যয় করা সময়টি একটি নির্দিষ্ট সমস্যা, স্পষ্টতই এটি সমস্ত সিস্টেমে ঘটে না। https://github.com/systemd/systemd/issues/7963
journalctl
কেবল একটি প্রক্রিয়া চলে। আমার যে অনুভূতি আছে যে journalctl
কোনও কারণে একটি অতিরিক্ত থ্রেড ব্যবহার করেছে - iirc সেখানে একটি ক্লোন () কল ছিল। আমি মনে করি এর অর্থ আপনি প্রযুক্তিগতভাবে সঠিক, তবে এটি প্রযুক্তিগত দিক থেকেও প্রশ্নটির সাথে অপ্রাসঙ্গিক। time
প্রক্রিয়াটিকে সামগ্রিকভাবে দেখায় এবং দেখিয়েছে যে সামগ্রিকভাবে প্রক্রিয়াটি বরং নিদ্রাহীন (কোনও কিছুতে ব্লক করা)। strace
যথেষ্ট ঘুম দেখায় নি। দ্বিতীয় থ্রেডটি ঘুমাচ্ছে কিনা তা বিবেচ্য নয়, time
ফলাফলটি ব্যাখ্যা করতে মূল থ্রেডটিও খুব নিদ্রাহীন হতে হবে ।