ডিবাগিং লিনাক্স আই / ও ল্যাটেন্সি


13

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

আমার প্রশ্ন: কেন এটি ঘটে তা আমি কীভাবে জানতে পারি? আমি যা চাই তা হল এমন একটি সরঞ্জাম যা আমাকে বলতে পারে যে প্রশ্নগুলির প্রক্রিয়াগুলি কার্নেলের মাধ্যমে কীভাবে অবরুদ্ধ রয়েছে এবং কেন তারা যে ঘুমায় তাতে ব্যস্ত থাকে, এটির সাথে কী ঘটছে এবং এই জাতীয় জিনিসগুলি। এমন কোনও সরঞ্জাম আছে, বা কী ঘটেছিল ডিবাগ করার চেষ্টা করার অন্য কোনও উপায় আছে?

বিকল্পভাবে, অবশ্যই, আসলে কী ঘটছে সে সম্পর্কে আপনার যদি কোনও ধারণা থাকে তবে কীভাবে এড়ানো যায়?

রেকর্ডের জন্য, আমি যে ফাইল সিস্টেমটি ব্যবহার করি তা হ'ল এক্সএফএস।

উত্তর:


14

এখন যথাসময়ে, আমি নিজেই এটি সমাধান করতে পেরেছি, সুতরাং আমি অন্ততপক্ষে উত্তরসূরিদের জন্য নিজে এটি অনুসরণ করতে পারি।

দুর্ভাগ্যক্রমে, আমি কার্নেল আপগ্রেডে মূল সমস্যাটি হারিয়েছি, তবে পরিবর্তে একটি নতুন সমস্যা অর্জন করেছি, কর্মক্ষমতা থেকেও খারাপ, এবং ঠিক ততটা খুঁজে পাওয়া শক্ত। আমি যে কৌশলগুলি পেয়েছি সেগুলি নিম্নলিখিত ছিল:

প্রথমত, blktrace/ blkparseএকটি সরঞ্জাম যা আমি বেশ সহায়ক বলে মনে করি। এটি অনেক সহায়ক বিশদ যেমন স্বতন্ত্র আই / ও অনুরোধগুলির অগ্রগতির সন্ধানের অনুমতি দেয়, যেমন অনুরোধটি জমা দেওয়ার প্রক্রিয়া। আউটপুটটি চালিত করা সহায়ক tmpfs, যাতে ট্রেসের স্টোরেজ হ্যান্ডলিং নিজেই ট্রেসিং শুরু না করে।

এটি কেবলমাত্র এখনও পর্যন্ত সহায়তা করেছে, তাই আমি আরও ডিবাগিং কার্যকারিতা সহ একটি কার্নেল সংকলন করেছি। বিশেষত, আমি ftraceবেশ সহায়ক পেয়েছি , যেহেতু এটি আমাকে কার্নেল স্পেসের মধ্যে খারাপভাবে সম্পাদন করার প্রক্রিয়াটি সন্ধান করার অনুমতি দিয়েছে, এটি কী করেছে এবং এটি কোথায় আটকেছে তা দেখার জন্য। একটি ডিবাগ কার্নেল সংকলন এছাড়াও কার্যক্ষম WCHANআউটপুট সরবরাহ করে ps, যা কার্নেলের ভিতরে কোনও প্রক্রিয়া কী করছে তা দেখার সহজ উপায় হিসাবে কাজ করতে পারে, কমপক্ষে সহজ ক্ষেত্রেও for

আমিও প্রত্যাশা করেছিলাম যে লেটেন্সিটপটি কার্যকর হবে, তবে আমি এটি বেশ কৃপণভাবে খুঁজে পেয়েছি এবং এটিও যে দুর্ঘটনাক্রমে, খুব বেশি "উচ্চ-স্তরের" ছিল এমন বিলম্বিত কারণগুলি প্রদর্শন করেছে।

এছাড়াও, আমি খুব কাছাকাছি বিরতিতে iostatকেবল এই জাতীয় বিষয়বস্তু দেখার চেয়ে আরও সহায়ক বলে মনে করেছি /sys/block/$DEVICE/stat:

while :; do cat /sys/block/sda/stat; sleep .1; done

ফাইলের Documentation/iostats.txtবিন্যাসের জন্য কার্নেল উত্স ট্রিটিতে দেখুন stat। কাছাকাছি সময়ে এটিকে দেখার ফলে I / O বিস্ফোরণগুলির সঠিক সময় এবং আকার এবং এ জাতীয় জিনিসগুলি দেখতে পেতাম।

শেষ পর্যন্ত, আমি জানতে পেরেছিলাম যে কার্নেল আপগ্রেড করার পরে আমার যে সমস্যাটি হয়েছিল স্থিতিশীল পৃষ্ঠাগুলির কারণে হয়েছিল , এটি লিনাক্স 3.0.০-এ প্রবর্তিত একটি বৈশিষ্ট্য, যার ফলে বার্কলে ডিবি এমএমপড পৃষ্ঠাগুলিকে নোংরা করার সময় বর্ধিত সময়কালের জন্য থামবে to অঞ্চল ফাইল। যদিও এই বৈশিষ্ট্যটি প্যাচ করা সম্ভব বলে মনে হচ্ছে এবং লিনাক্স ৩.৯-এ এটির সমস্যাগুলিও সংশোধন করা যেতে পারে, বার্কলে ডিবি প্যাচ করে আমার এখনকার সবচেয়ে খারাপ সমস্যাটি সমাধান করেছি যাতে আমাকে এর অঞ্চলের ফাইলগুলি অন্য একটি ডিরেক্টরিতে রাখার সুযোগ দেয় I (আমার ক্ষেত্রে /dev/shm), আমাকে পুরোপুরি সমস্যা এড়াতে দেয়।


3

আমার অভিজ্ঞতা অনুসারে রহস্যজনক সিস্টেমের পারফরম্যান্স সম্পর্কিত সমস্যাগুলি সনাক্ত করতে আপনি ইনস্টল করতে পারেন এমন সহজ এবং সর্বাধিক বিস্তারিত পরিসংখ্যান সরঞ্জামটি হ'ল http://freecode.com/projects/sysstat ওরফে। sAR

নিশ্চিতভাবে আপনি iostat কমান্ড আউটপুটটিও দেখতে চান, বিশেষত আপনার% iowait কতটা সাধারণ সিস্টেম লোডের নিচে 5-10% এর নীচে হওয়া উচিত (1.0 বা তার বেশি)।

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

সর লগ চেক করুন এবং যদি এর আগে কখনও ঘটে যায় শিখুন এবং ডিস্কের নিবিড় ক্রোন কাজের সাথে সেই সময়টির সাথে মেলে ধরার চেষ্টা করুন যেমন নেটওয়ার্কের মাধ্যমে ব্যাকআপ

আপনি আপনার ডিস্কের পারফরম্যান্সকে বনি ++ দিয়ে বেনমার্ক করতে পারেন


3

ভেবেছি আমি স্ট্রেসের কথা উল্লেখ করব যদিও এই প্রশ্নটি এখন কয়েক মাস পুরাতন। এটি অনুরূপ সমস্যাযুক্ত কাউকে এই পৃষ্ঠাটি খুঁজে পেতে সহায়তা করতে পারে।

চেষ্টা করুন।

strace "application"

আপনি করতে পারেন

strace -e read,write "application"

শুধু পড়ার / ইভেন্ট লিখতে দেখায়।

অ্যাপ্লিকেশনটি স্বাভাবিক হিসাবে লোড হবে (প্রবর্তন করতে কিছুটা ধীর হলেও) এবং সমস্যাটি ট্রিগার করার জন্য আপনি এটিকে স্বাভাবিক হিসাবে ব্যবহার করতে পারেন। আউটপুট শেলটিতে উপস্থিত হবে যা আপনি স্ট্রেস চালু করতে ব্যবহার করেছিলেন।

স্ট্রেস সম্পর্কে ভাল কথাটি হ'ল অ্যাপ্লিকেশনটি স্লোডাউন শুরু করার সময় আপনি সর্বাধিক সাম্প্রতিক ফাংশন / কার্নেল কল দেখতে পারবেন। আপনি দেখতে পাচ্ছেন যে যদি আপনার /homeঅ্যাকাউন্টগুলি এনএফএসে থাকে তবে অ্যাপ্লিকেশনটিকে কোনও কারণে এনএফএসের মাধ্যমে ফাইল আই / ও দিয়ে কিছুটা সমস্যা হচ্ছে।

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