কীভাবে (সত্যই) লিনাক্সে এনসিকিউ অক্ষম করা যায়


13

আমি ভিএইচডিএলে নিজের সিরিয়াল-এটিএ হোস্ট-বাস-অ্যাডাপ্টার (এইচবিএ) প্রয়োগ করেছি এবং এফপিজিএতে প্রোগ্রাম করেছি। একটি এফপিজিএ হ'ল চিপ যা কোনও ডিজিটাল সার্কিট দিয়ে প্রোগ্রাম করা যেতে পারে। এটি এসটিএ বা পিসিআইয়ের জন্য উচ্চ গতির সংকেত তৈরি করতে সিরিয়াল ট্রান্সসিভারগুলিও সজ্জিত।

এই Sata নিয়ামকটি SATA 6 Gb / s লাইন রেটগুলিকে সমর্থন করে এবং ডিভাইসটিতে এবং 32 মাইবি অংশগুলিতে ডেটা স্থানান্তর করতে এটি -8 ডিএমএ-ইন / আউট কমান্ড ব্যবহার করে। নকশাটি সর্বোচ্চ গতিতে কাজ করার জন্য প্রমাণিত (যেমন স্যামসাং এসএসডি 840 প্রো -> 550 মাইবি / সেকেন্ডের বেশি)।

বেশ কয়েকটি এসএসডি এবং এইচডিডি ডিভাইসগুলির সাথে কিছু পরীক্ষার পরে, আমি একটি নতুন সিগেট 6 টিবি আর্কাইভ এইচডিডি ( ST6000AS0002 ) কিনেছি । এই এইচডিডিটি 190 টি এমআইবি / গুলি পড়ার পারফরম্যান্স পর্যন্ত পৌঁছেছে, তবে কেবল 30 থেকে 40 এমআইবি / গুলি রাইটিং পারফরম্যান্স!

সুতরাং আমি গভীর খনন করেছি এবং সংক্রমণিত ফ্রেমগুলি পরিমাপ করেছি (হ্যাঁ এফপিজিএ ডিজাইনের মাধ্যমে এটি সম্ভব)। যতদূর আমি বলতে পারি, সিগেট এইচডিডি এক টুকরোতে স্থানান্তরের প্রথম 32 এমআইবি পেতে প্রস্তুত। এই স্থানান্তরটি 580 এমআইবি / সেকেন্ডের সর্বোচ্চ লাইনের গতিতে ঘটে। এর পরে, এইচডিডি 800 বয়সের বেশি বাকী বাইটগুলি স্টল করে ! তারপরে এইচডিডি পরবর্তী 32 টি এমআইবি পেতে প্রস্তুত এবং 800 স্টোরের জন্য আবার স্টল দেয়। সমস্ত 1 জিআইবি স্থানান্তরের 30 সেকেন্ডের বেশি প্রয়োজন, যা প্রায় 35 এমআইবি / সেকেন্ডের সমান।

আমি ধরে নিই যে এই এইচডিডির একটি 32 এমআইবি রাইট ক্যাশে রয়েছে যা বিস্ফোরণ চক্রের মধ্যে ফেলা হয়। 32 এমআইবির কম সংখ্যক ডেটা স্থানান্তরগুলি এই আচরণটি দেখায় না।

আমার কন্ট্রোলার ডেটা স্থানান্তর করতে DMA-IN এবং DMA-OUT কমান্ড ব্যবহার করে। আমি কোয়েড-ডিএমএ-ইন এবং কোয়েড-ডিএমএ-আউট কমান্ডটি ব্যবহার করছি না, যা এনসিকিউ সক্ষম এএইচসিআই নিয়ন্ত্রণকারীরা ব্যবহার করে। এফসিজিএ প্ল্যাটফর্মে এএইচসিআই এবং এনসিকিউ ইনপ্লেমেন্ট করা খুব জটিল এবং আমার অ্যাপ্লিকেশন স্তরটির প্রয়োজন হয় না।

আমি আমার লিনাক্স পিসিতে এই দৃশ্যটি পুনরুত্পাদন করতে চাই, তবে লিনাক্স এএইচসিআই ড্রাইভারটি এনসিকিউ ডিফল্টরূপে সক্ষম করেছে। আমাকে এনসিকিউ নিষ্ক্রিয় করা দরকার, সুতরাং এনসিকিউকে কীভাবে অক্ষম করা যায় তা বর্ণনা করার জন্য আমি এই ওয়েবসাইটটি পেয়েছি , তবে এটি কার্যকর হয় না।

লিনাক্স পিসি এখনও 190 মাইবি / গুলি রাইটিং পারফরম্যান্সে পৌঁছেছে।

> dd if=/dev/zero of=/dev/sdb bs=32M count=32
1073741824 bytes (1.1 GB) copied, 5.46148 s, 197 MB/s

আমি মনে করি উপরের দিক থেকে নিবন্ধটিতে একটি ত্রুটি রয়েছে: এনসিকিউ-র সারির গভীরতা 1-এ হ্রাস করা এনসিকিউকে অক্ষম করে না। এটি ওএসকে কেবলমাত্র একটি সারি ব্যবহারের অনুমতি দেয়। এটি এখনও স্থানান্তরের জন্য কোয়েড-ডিএমএ - ** কমান্ড ব্যবহার করতে পারে। ড্রাইভারকে ডিএমএ-ইন / আউট কমান্ডগুলি ডিভাইসে ইস্যু করার সাথে সাথে আমাকে এনসিকিউ নিষ্ক্রিয় করতে হবে।

সুতরাং এখানে আমার প্রশ্নগুলি:

  1. কীভাবে আমি এনসিকিউ অক্ষম করতে পারি?
  2. যদি এনসিকিউ কিউয়ের গভীরতা = 1 হয় তবে লিনাক্সের এএইচসিআই ড্রাইভার কি কোয়েড-ডিএমএ - ** বা ডিএমএ - ** কমান্ড ব্যবহার করছে?
  3. এনসিকিউ অক্ষম আছে কিনা তা আমি কীভাবে চেক করতে পারি, কারণ পরিবর্তনের /sys/block/sdX/device/queue_depthবিষয়ে রিপোর্ট করা হয়নি dmesg?

3
কার্নেল প্যারামিটার libata.force=noncq?
frostschutz

ধন্যবাদ, এনসিকিউ সম্পূর্ণরূপে অক্ষম করতে এটি অনেক সাহায্য করেছিল। আমি লেখার পারফরম্যান্সের সমস্যাটিও সমাধান করেছি।
পাবেলস

1
> dd if=/dev/zero of=/dev/sdb bs=32M count=32ডুনো আপনি এটির সাথে কী করতে চেয়েছিলেন; তবে এটি এমবিআর এবং গাজিলিয়নের ব্লক eraseউভয়ই ছাড়িয়ে যাবে। এটিতে চালিত মূল সিস্টেমটি দিয়ে একটি ড্রাইভে এটি করা (এবং আমার ক্ষেত্রে যেমন এমবিআর ইনস্টল করা) মোটামুটি বিপজ্জনক হবে;) ভেবেছিলাম কিছু কম অভিজ্ঞ লোকজন যাতে পরীক্ষা-নিরীক্ষা করতে না পারে সেজন্য আমি এটি মন্তব্য হিসাবে এখানে লিখছি ought আপনার "দুর্দান্ত" লাইন ...;)grub
সিনট্যাক্সারর

@ সাইন্ট্যাক্সেরর এইচডিডি একটি এফপিজিএ বোর্ডের সাথে সংযুক্ত। এই জাতীয় পরিবেশে হার্ডওয়্যার রুটিনগুলি লিখতে পারা অনেক জটিল যা এমবিআর এবং ফাইল সিস্টেমের অ্যাকেসিসগুলি পুরোপুরি পরিচালনা করে। সুতরাং আমি উভয় পক্ষের এইচডিডি একটি কাঁচা মিডিয়া হিসাবে ব্যবহার করছি। এফপিজিএ ভিউতে এটি একটি বড় রৈখিক স্মৃতি। লিনাক্সে আমি চালিয়ে যাওয়া ডেটা পড়তে ও লিখতে / dev / sdg এবং একটি সি প্রোগ্রামাম ব্যবহার করছি।
Paebbels

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

উত্তর:


11

@ ফ্রস্টসচুটজকে ধন্যবাদ, আমি এনসিকিউ বৈশিষ্ট্য ছাড়াই লিনাক্সের লেখার পারফরম্যান্সটি পরিমাপ করতে পারি। কার্নেল বুট পরামিতি libata.force=noncqNCQ সম্পূর্ণরূপে অক্ষম করেছে।

আমার সিগেট 6 টিবি লেখার পারফরম্যান্স সমস্যা সম্পর্কে, গতিতে কোনও পরিবর্তন হয়নি। লিনাক্স এখনও 180 মাইবি / সেকেন্ডে পৌঁছেছে।

তবে তারপরে আমার আরেকটি ধারণা ছিল:
লিনাক্স ড্রাইভার 32 এমআইবি খণ্ডের স্থানান্তর ব্যবহার করে না। কার্নেল বাফারটি অনেক ছোট, বিশেষত 32 টি সারি সহ এনসিকিউ সক্ষম করা থাকলে (32 টি সারি * 32 এমআইবি => 1 জিআইএইচএইচসিআই বাফার)।

সুতরাং আমি 256 কিবি স্থানান্তর এবং ভয়েলি সহ আমার এসএটিএ নিয়ামকটি পরীক্ষা করেছি, 185 এমবি / সেকেন্ডে পৌঁছানো সম্ভব।

সুতরাং আমি অনুমান করি সিগেট ST6000AS0002 ফার্মওয়্যার বড় এটিএ বিস্ফার স্থানান্তর পরিচালনা করতে সক্ষম নয়। এটিএ স্ট্যান্ডার্ডটি 65.536 লজিক্যাল ব্লক পর্যন্ত অনুমতি দেয়, যা 32 এমআইবি সমান।

এসএমআর - দ্য চৌম্বকীয় রেকর্ডিং

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


1
আমার অভিজ্ঞতায়, এনসিকিউ অক্ষম করা পারফরম্যান্সে একটি বড় উত্সাহ দেয়। আমি এটি ডেস্কটপ সিস্টেমগুলিতে চেষ্টা করেছি, সার্ভারগুলি, আপনি এটির নাম দিন। এমনকি 100% "সার্ভার" উচ্চ-পারফরম্যান্স হার্ডওয়্যার ব্যবহার করা যা আপনি ভাবেন যে এনসিকিউ থেকে উপকৃত হবে। না, এটিকে কেবল অক্ষম করার চেয়ে সব থেকে খারাপ worst আইএমএইচও এনসিকিউ হ'ল হার্ড-ড্রাইভগুলির মধ্যে সবচেয়ে খারাপ ঘটনা ঘটে। আমি কখনও কখনও এটি কোনও পরিস্থিতিতে কোনও উপকার সরবরাহ করতে দেখিনি, এটি নিবেদিত রেড কার্ড হোক বা বোর্ডে চিপসেট হোক।
সিআর

আপনি কি বিস্ফোরণ অপারেশন করেছেন বা এলোমেলো অ্যাক্সেস করেছেন? NCQ এর বিস্ফোরণ অভিযানের উপর কোনও প্রভাব নেই তবে এলোমেলো অ্যাক্সেসের উন্নতি করে।
পায়েবেলস

দুঃখিত, তবে আপনি আমার প্রশ্নের উত্তর দেন নি। আরেকটি প্রশ্ন হ'ল আপনি কোন হার্ডওয়ারটি একটি সাধারণ গ্রাহক মেইনবোর্ড বা একটি ওয়ার্কস্টেশন / সার্ভার মাইনবোর্ড বা উত্সর্গীকৃত RAID নিয়ামক ব্যবহার করেছেন। অনেক বাস্তবায়ন এনসিকিউ / এএইচসিআই দ্বারা নকশাকৃত অনেক অসামান্য অনুরোধগুলিকে সমর্থন করে না।
পাবেলস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.