আমি ভিএইচডিএলে নিজের সিরিয়াল-এটিএ হোস্ট-বাস-অ্যাডাপ্টার (এইচবিএ) প্রয়োগ করেছি এবং এফপিজিএতে প্রোগ্রাম করেছি। একটি এফপিজিএ হ'ল চিপ যা কোনও ডিজিটাল সার্কিট দিয়ে প্রোগ্রাম করা যেতে পারে। এটি এসটিএ বা পিসিআইয়ের জন্য উচ্চ গতির সংকেত তৈরি করতে সিরিয়াল ট্রান্সসিভারগুলিও সজ্জিত।
এই 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 হয় তবে লিনাক্সের এএইচসিআই ড্রাইভার কি কোয়েড-ডিএমএ - ** বা ডিএমএ - ** কমান্ড ব্যবহার করছে?
- এনসিকিউ অক্ষম আছে কিনা তা আমি কীভাবে চেক করতে পারি, কারণ পরিবর্তনের
/sys/block/sdX/device/queue_depth
বিষয়ে রিপোর্ট করা হয়নিdmesg
?
> dd if=/dev/zero of=/dev/sdb bs=32M count=32
ডুনো আপনি এটির সাথে কী করতে চেয়েছিলেন; তবে এটি এমবিআর এবং গাজিলিয়নের ব্লক erase
উভয়ই ছাড়িয়ে যাবে। এটিতে চালিত মূল সিস্টেমটি দিয়ে একটি ড্রাইভে এটি করা (এবং আমার ক্ষেত্রে যেমন এমবিআর ইনস্টল করা) মোটামুটি বিপজ্জনক হবে;) ভেবেছিলাম কিছু কম অভিজ্ঞ লোকজন যাতে পরীক্ষা-নিরীক্ষা করতে না পারে সেজন্য আমি এটি মন্তব্য হিসাবে এখানে লিখছি ought আপনার "দুর্দান্ত" লাইন ...;)grub
libata.force=noncq
?