লিনাক্স - রিয়েল-ওয়ার্ল্ড হার্ডওয়্যার RAID কন্ট্রোলার টিউনিং (scsi এবং cciss)


29

আমি বেশিরভাগ লিনাক্স সিস্টেমগুলিতে বৈশিষ্ট্যযুক্ত হার্ডওয়্যার রাইড নিয়ন্ত্রকগুলি পরিচালনা করি (বেশিরভাগ এইচপি স্মার্ট অ্যারে )। তারা সবাই আরএইচইএল বা সেন্টোস চালাচ্ছে।

আমি এসএসএস ডিস্ক (স্মার্ট অ্যারে, পার্ক, এলএসআই, ইত্যাদি) এবং ব্যাটারি-ব্যাকযুক্ত বা ফ্ল্যাশ-ব্যাকযুক্ত ক্যাশে সহ হার্ডওয়্যার র‌্যাড কন্ট্রোলারগুলিকে অন্তর্ভুক্ত করে এমন সেটআপগুলির জন্য পারফরম্যান্স অনুকূল করতে সহায়তা করার জন্য আমি রিয়েল-ওয়ার্ল্ড টিউনবলের সন্ধান করছি। RAID 1 + 0 এবং একাধিক স্পিন্ডেল (4+ ডিস্ক) ধরে নিন।

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

Orতিহাসিকভাবে, আমি আমার / অ্যাপ্লিকেশনগুলির মধ্যে কর্মক্ষমতা উন্নত করার জন্য সি deadlineএবং noopশিডিয়ুলদের বেছে নিয়ে আই / ও সিডিউলিং লিফটে পরিবর্তন করেছি । আরএইচইএল সংস্করণগুলি যেমন এগিয়েছে, আমি আরও লক্ষ্য করেছি যে এসসিএসআই এবং সিসিআইএসএস ব্লক ডিভাইসের জন্য সংকলিত ডিফল্টগুলিও পরিবর্তিত হয়েছে। এটি সময়ের সাথে প্রস্তাবিত স্টোরেজ সাবসিস্টেম সেটিংসে প্রভাব ফেলেছে। যাইহোক, আমি কোনও সুস্পষ্ট প্রস্তাবনা দেখেছি এটি বেশ কিছুক্ষণ হয়ে গেছে। এবং আমি জানি যে ওএস ডিফল্ট অনুকূল নয়। উদাহরণস্বরূপ, মনে হচ্ছে সার্ভার-শ্রেণীর হার্ডওয়্যারে স্থাপনার জন্য 128kb এর ডিফল্ট রিড-ফরোয়ার্ড বাফার অত্যন্ত ছোট।

নিম্নলিখিত নিবন্ধগুলি ব্লক সারিগুলিতে পঠন-সামনের ক্যাশে এবং nr_requosts মানগুলি পরিবর্তন করার কার্যকারিতা প্রভাবগুলি অন্বেষণ করে ।

http://zackreed.me/articles/54-hp-smart-array-p410- নিয়ন্ত্রণকারী- ভাগ্যবান
http://www.overLive.net/t/515068/tuning-a-hp-smar-array-p400- সহ -লিনাক্স-কেন-সুর -করণ-সত্যই
http://yoshinorimatsunobu.blogspot.com/2009/04/linux-io-scheduler-queue-size-and.html

উদাহরণস্বরূপ, এইচপি স্মার্ট অ্যারে RAID কন্ট্রোলারের জন্য প্রস্তাবিত পরিবর্তনগুলি:

echo "noop" > /sys/block/cciss\!c0d0/queue/scheduler 
blockdev --setra 65536 /dev/cciss/c0d0
echo 512 > /sys/block/cciss\!c0d0/queue/nr_requests
echo 2048 > /sys/block/cciss\!c0d0/queue/read_ahead_kb

স্টোরেজ কর্মক্ষমতা উন্নত করতে আর কি নির্ভরযোগ্যভাবে সুর করা যেতে পারে?
আমি বিশেষত উত্পাদনের পরিস্থিতিতে সিসেক্টল এবং সিসফস বিকল্পগুলি সন্ধান করছি।

উত্তর:


38

আমি খুঁজে পেয়েছি যে যখন আমাকে কম লেটেন্সি বনাম থ্রুপুট টিউন করতে হয়েছিল, তখন আমি এর ডিফল্ট থেকে নীচে (নীচে 32 হিসাবে) সুর করেছি r ছোট ব্যাচ হওয়ায় ধারণাটি কম বিলম্বের সমান।

এছাড়াও read_ahead_kb এর জন্য আমি খুঁজে পেয়েছি যে ক্রমবর্ধমান পাঠ / লেখার জন্য, এই মানটি বাড়ানো আরও ভাল থ্রুপুট সরবরাহ করে তবে আমি খুঁজে পেয়েছি যে এই বিকল্পটি আপনার কাজের চাপ এবং আইও প্যাটার্নের উপর নির্ভর করে। উদাহরণস্বরূপ এমন একটি ডাটাবেস সিস্টেমে যা আমি সম্প্রতি টিউন করেছি আমি এই মানটি একটি একক ডিবি পৃষ্ঠার সাথে মেলে যা পঠনের প্রবণতা হ্রাস করতে সহায়তা করে match এই মূল্য ছাড়িয়ে বাড়াতে বা হ্রাস করা আমার ক্ষেত্রে পারফরম্যান্সের ক্ষতি করতে প্রমানিত।

ব্লক ডিভাইস সারিগুলির জন্য অন্যান্য বিকল্প বা সেটিংস হিসাবে:

max_sectors_kb = হার্ডওয়্যার একক স্থানান্তরের জন্য যা অনুমতি দেয় তা মেলানোর জন্য আমি এই মানটি সেট করেছি (কী অনুমতি দেওয়া হয়েছে তা দেখতে সিসফেসে সর্বোচ্চ_ hw_sectors_kb (আরও) ফাইলের মান পরীক্ষা করুন)

nomerges = এটি আপনাকে অনুরোধগুলি মার্জ করার জন্য লজিক যুক্তিকে অক্ষম বা সামঞ্জস্য করতে দেয়। (এটি বন্ধ করা আপনাকে কিছু সিপিইউ চক্র বাঁচাতে পারে তবে আমার সিস্টেমগুলির জন্য এটি পরিবর্তন করার সময় আমি কোনও লাভ দেখিনি, তাই আমি এটি ডিফল্ট রেখেছি)

rq_affinity = আমি এটি এখনও চেষ্টা করি নি, তবে কার্নেল ডক্স থেকে এর পিছনে ব্যাখ্যা এখানে দেওয়া হয়েছে

এই বিকল্পটি যদি '1' হয়, তবে ব্লক স্তরটি অনুরোধটি সম্পূর্ণরূপে অনুরোধটি জমা দেওয়া সিপিইউ "গোষ্ঠী" তে স্থানান্তর করবে submitted কিছু কাজের চাপের জন্য এটি ক্যাচিং এফেক্টের কারণে সিপিইউ চক্রের উল্লেখযোগ্য হ্রাস সরবরাহ করে।
স্টোরেজ কনফিগারেশনের জন্য যা সম্পূর্ণকরণ প্রসেসিংয়ের বিতরণকে সর্বাধিকীকরণ করা প্রয়োজন এই বিকল্পটিকে '2' এ সেট করে অনুরোধ সিপিইউতে "" গ্রুপ "একীকরণের যুক্তিকে বাইপাস করে" সমাপ্তিকে বাধ্য করে "

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

NOOP ভাল পারফরম্যান্স করেছে, তবে আমাদের ডাটাবেস সার্ভারের জন্য আমি সময়সীমার সময়সূচী সামঞ্জস্য করে আরও ভাল পারফরম্যান্স অর্জন করতে সক্ষম হয়েছি।

/ সিস / ব্লক / d এসডি, সিসিস, ডিএম -} * / সারি / আইওএসচেড / এর আওতায় থাকা ডেডলাইন শিডিয়ুলারের বিকল্পসমূহ:

ফিফো_বাচ = প্রকারের মতো এনআর_আরওয়েস্ট তবে শিডিয়ুলারের জন্য নির্দিষ্ট। থাম্বের নিয়মটি নীচে স্থির হওয়ার জন্য বা থ্রুপুটটির জন্য এই টিউন করে। অনুরোধের পড়া এবং লেখার ব্যাচের আকার নিয়ন্ত্রণ করে।

Writ_expire = ব্যাচ লেখার জন্য মেয়াদ শেষ হওয়ার সময় নির্ধারণ করে ডিফল্ট 5000ms। আবার এই মান হ্রাস হ্রাস আপনার লেখার বিলম্ব কমে যখন মান বৃদ্ধি মাধ্যমে আউটপুট বৃদ্ধি।

read_expire = পড়ার ব্যাচগুলির জন্য মেয়াদ শেষ হওয়ার সময় নির্ধারণ করে ডিফল্ট 500 মিমি। একই বিধি এখানে প্রয়োগ।

সামনের_স্রাবগুলি = আমি এটি বন্ধ করার প্রবণতা রেখেছি এবং এটি ডিফল্টরূপে চালু আছে। আমি সিপিইউ চক্রগুলি মার্জ আইও অনুরোধগুলির সামনে চেষ্টা করার নষ্ট করার সময়সূচীর প্রয়োজন দেখছি না।

রাইটস_স্টার্ভেড = যেহেতু সময়সীমাটি ডিফল্ট পড়ার দিকে ততক্ষণ থাকে তাই এখানে একটি লিখন ব্যাচ প্রক্রিয়া করার আগে 2 টি পঠিত ব্যাচ প্রক্রিয়া করা হয়। আমার কাজের চাপের জন্য ভাল হতে আমি 2 এর ডিফল্ট পেয়েছি।


7
... এবং এভাবেই আপনি কোনও সাইটের প্রথম উত্তর পোস্ট করেন। সাবাশ!
জেফ ফেরল্যান্ড

1
এটি একটি ভাল শুরু এবং নিয়ন্ত্রিত পরিস্থিতিতে পুনরাবৃত্তি পরীক্ষা চালানো আমাকে অ্যাপ্লিকেশন কর্মক্ষমতাটিকে কিছুটা সামলিয়ে নিতে সহায়তা করেছে। আমি কীভাবে সাধারণ কাজের চাপের প্রবণতার জন্য স্টোরেজ টিউন করতে পারি তা দেখতে এটি সহায়ক।
ew white

4

যে কোনও কিছুর চেয়ে বেশি, সমস্ত কিছুই আপনার কাজের চাপের উপর নির্ভর করে।

read_ahead_kbযদি ভিডিও স্ট্রিম করার মতো কিছু সময় আগে কিছু ফাইল থেকে প্রচুর ডেটা পড়া সত্যিই সহায়ক হয় তবে আপনাকে সহায়তা করতে পারে। কখনও কখনও এটি আপনাকে খারাপভাবে আঘাত করতে পারে। হ্যাঁ, ডিফল্ট 128 কেবি ছোটের মতো শোনাতে পারে তবে পর্যাপ্ত পরিমাণের সাথে এটি বড় আকারের শোনাতে শুরু করে! অন্যদিকে, কোনও ভিডিও এনকোডিং সার্ভারের মতো একটি সার্ভারের সাথে যা কেবলমাত্র ফর্ম্যাট থেকে অন্য ভিডিওতে রূপান্তর করে, এটি টিউন করা খুব ভাল ধারণা হতে পারে।

nr_requests, যখন অত্যুজ্জ্বলিত হয়, সহজেই আপনার রেড কন্ট্রোলারকে প্লাবন করতে পারে, যা আবার কর্মক্ষমতাতে ব্যাঘাত ঘটায়।

বাস্তব বিশ্বে আপনার বিলম্বগুলি দেখতে হবে । আপনি San সাথে যুক্ত থাকেন, সঙ্গে কটাক্ষপাত iostat, sarব্যবহার করতে চান, বা যতটুকু আপনি, এবং যদি ইনপুট / আউটপুট অনুরোধ সেবা বার ছাদ মাধ্যমে হয় দেখুন। অবশ্যই এটি স্থানীয় ডিস্কগুলির সাথেও সহায়তা করে: যদি বিলম্বগুলি খুব বড় হয় তবে আপনার আই / ও লিফট সেটিংসটি ম্যাক্স_রেইকায়েস্টগুলি এবং অন্যান্য সেটিংস ডাউনগ্রেড করে বিবেচনা করুন।


অন্য কোন সেটিংস?
ইয়েওয়াইট

4

অবগতির জন্য read_ahead_kbএবং blockdev --setraমাত্র হয় বিভিন্ন ইউনিট ব্যবহার করে একই সেটিংটি সেট বিভিন্ন উপায় (কিলোবাইট সেক্টর বনাম):

foo:~# blockdev --setra 65536 /dev/cciss/c0d0
foo:~# blockdev --getra /dev/cciss/c0d0
65536
foo:~# cat /sys/block/cciss\!c0d0/queue/read_ahead_kb
32768
foo:~# echo 2048 > /sys/block/cciss\!c0d0/queue/read_ahead_kb
foo:~# cat /sys/block/cciss\!c0d0/queue/read_ahead_kb
2048
foo:~# blockdev --getra /dev/cciss/c0d0
4096

তাহলে

blockdev --setra 65536 /dev/cciss/c0d0

আপনার উদাহরণে কোনও প্রভাব নেই।

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