ইনোডাব_ফ্লুশ_মোথোড = ও_ডিআরইটি বনাম ও_ডিএসওয়াইএনসি পারফরম্যান্সের প্রভাব এলভিএম ডিস্ক পার্টিশনের সাথে ext3 এ


12

আমার এক উত্পাদন পরিবেশে, আমাদের দুটি রেডহ্যাট ক্লাস্টারে চলছে, যার একটি উত্পাদন ক্লাস্টারের সাথে যুক্ত।

আমাদের ২৪ জি ইনোডিবি বাফার পুলের সাথে ইনজিন্ট ১ এবং ১২ জি দখল দখল করে ১২২ জি মেইন মেমোরি রয়েছে, যা রেডহ্যাট ক্লাস্টারের সাথে সম্পর্কিত নয়। ডেটা এবং লেনদেন উভয় লগই একটি এক্স 3 ফাইল সিস্টেমের সাথে এলভিএম ডিস্ক বিভাজনে অবস্থিত।

একটি পারফরম্যান্স বাড়াতে এবং আরও উন্নত করার জন্য আমি / ও থ্রুপুট থেকে পরিবর্তন innodb_flush_methodকরার সিদ্ধান্ত নিয়েছি O_DIRECT

মাইএসকিউএল ডকুমেন্টেশনের প্রসঙ্গে:

কোথায় InnoDB ডেটা এবং লগ ফাইল একটি সান অবস্থিত হয়, এটা পাওয়া গেছে যে সেটিং innodb_flush_methodকরার O_DIRECTসহজ কর্মক্ষমতা জমিতে করতে SELECTতিনটি একটি গুণক দ্বারা বিবৃতি।

উচ্চ কার্যকারিতা মাইএসকিউএল ভের 2 এবং 3 উল্লেখ করে এটিতে বর্ণিত হয়েছে যে InnoDB বিকাশকারীরা ব্যাগগুলি খুঁজে পেয়েছিলেন innodb_flush_method=O_DSYNCO_SYNCএবং O_DSYNCএর মতো fsync()এবং fdatasync(): O_SYNCউভয় ডেটা এবং মেটাডেটা O_DSYNCসিঙ্ক করে , যেখানে কেবলমাত্র ডেটা সিঙ্ক করে।

যদি সেগুলি কোনও পরামর্শ ছাড়াই অনেকগুলি ব্যাখ্যার মতো মনে হয়, তবে পরামর্শটি এখানে দেওয়া হয়েছে:

আপনি যদি ইউনিক্স-এর মতো অপারেটিং সিস্টেম ব্যবহার করেন এবং আপনার রেড কন্ট্রোলারের ব্যাটারি-ব্যাকযুক্ত রেকিচি থাকে, আমরা আপনাকে সুপারিশ করছি যে আপনি ব্যবহার করুন O_DIRECT। যদি তা না হয় তবে O_DIRECTআপনার অ্যাপ্লিকেশনটির উপর নির্ভর করে ডিফল্ট বা সম্ভবত সেরা পছন্দ হবে।

গুগল করে, আমি এই বেঞ্চমার্ক রিপোর্ট পেয়েছি : O_DSYNCবনাম উপর onO_DIRECT

বেঞ্চ মার্ক রিপোর্ট:
===================
1 বি রো কমপ্লেক্স লেনদেন পরীক্ষা, threads৪ টি থ্রেড

 * সান ও_ডিআরসিটি: অনুরোধগুলি পড়ুন / লেখুন: 31560140 (প্রতি সেকেন্ডে 8766.61)
 * সান ও_ডিএসইএনসি: পড়ার / লেখার অনুরোধগুলি: 5179457 (প্রতি সেকেন্ডে 1438.52)
 * সান এফড্যাটাসেন্স: পড়ার / লেখার অনুরোধগুলি: 9445774 (সেকেন্ডে 2623.66)
 * স্থানীয়-ডিস্ক O_DIRECT: পড়ুন / লেখার অনুরোধগুলি: 3258595 (সেকেন্ডে 905.06)
 * স্থানীয়-ডিস্ক ও_ডিএসওয়াইএনসি: পড়ার / লেখার অনুরোধগুলি: 3494632 (প্রতি সেকেন্ডে 970.65)
 * লোকাল-ডিস্ক fdatasync: পড়ুন / লেখার অনুরোধগুলি: 4223757 (1173.04 প্রতি সেকেন্ডে)

তবে O_DIRECTওএস স্তরের ক্যাশে অক্ষম করে, যেখানে ডাবল ক্যাচিং অক্ষম করা যায় যা কিছু ভাল I / O থ্রুটপুট দেখায়।

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

আমি পোস্টে রোল্যান্ডো আপডেট দেখতে পেলাম :

এখনও এই দুটি পরামিতি নিয়ে সামান্য বিভ্রান্তি রয়েছে। যেখানে আমি বেশিরভাগ প্রোডাকশন কনফিগার টেমপ্লেটগুলি ব্যবহার করে দেখতে পেলাম O_DIRECT, সেখানে সুপারিশ করার কোনও অংশ আমি দেখিনি O_DSYNC

পদ্ধতি

  • মাইএসকিউএল 5.1.51-এন্টারপ্রাইজ-জিপিএল-প্রো-লগ
  • Red Hat Enterprise Linux সার্ভার 5.5 প্রকাশ করে
  • রাইড কন্ট্রোলারের সাথে ডিলল ডিআরএসি ব্যাটারি লেখার পিছনে ক্যাশে 512 এমবি রয়েছে
  • ব্যাটারি ব্যাক-আপ ইউনিট (বিবিইউ) সহ ডেল পিইআরসি নিয়ন্ত্রণকারী H700।

অতিরিক্ত তথ্য

mysql> 'innodb_thread_concurrency' এর মত চলক দেখান; 

+ + --------------------------- + + ------- + +
| পরিবর্তনশীল_নাম | মান |
+ + --------------------------- + + ------- + + 
| ইনোডব_থ্রেড_কেনচার্সি | 96 |
+ + --------------------------- + + ------- + + 
1 সারি সেট (0.00 সেকেন্ড) 

mysql> 'ইনোডাব_ড্রেড_আইও_থ্রেডস' এর মত চলক দেখান; 
খালি সেট (0.00 সেকেন্ড) 

mysql> 'ইনোডাব_রাইট_আইও_থ্রেডস' এর মতো ভেরিয়েবলগুলি দেখান; 
খালি সেট (0.00 সেকেন্ড)

আমরা ডিফল্ট প্লাগইন ব্যবহার করছি, সুতরাং আমি InnoDB স্থিতি থেকে তথ্য পোস্ট করেছি:

mysql> নির্বাচন করুন * প্লাগইন থেকে যেখানে প্লাগইনকে '% ইন্নাডব%' এবং প্লাগইনওয়াইপিকে 'স্টোরেজ ইঞ্জিন' \ জি পছন্দ হয়
*************************** 1. সারি ******************** *******
           PLUGIN_NAME: InnoDB
        প্লাগজিভারভিশন: 1.0
         প্লাগজিস্ট্যাটাস: অ্যাক্টিভ
           প্লাগিন_ওয়াইপি: স্টোর ইঞ্জিন
   PLUGIN_TYPE_VERSION: 50151.0
        প্লাগজিটলিবারি: শূন্য
PLUGIN_LIBRARY_VERSION: NULL
         প্লাগজিএথথর: ইনোব্যাস ওওয়াই
    প্লাগজিডেসিফিকেশন: লেনদেন, সারি-স্তরের লকিং এবং বিদেশী কীগুলি সমর্থন করে
        PLUGIN_LICENSE: জিপিএল
1 সারি সেট (0.00 সেকেন্ড)

উত্তর:


7

২১ শে জানুয়ারী, ২০০৯-এ পিটার জায়েत्সেভ মাইসকিপ্লারফরমেশনব্লগ.কম- এ নিম্নলিখিত কথা বলেছেন

অ্যাকশনের আহ্বান হিসাবে - আমি অবশ্যই চাইব যে কেউ লিনাক্সের জন্য এখন পর্যন্ত সবচেয়ে সাধারণ ফাইল সিস্টেম হিসাবে এটি প্রসঙ্গে EXT3 ঠিক করা যায় কিনা see মাইএসকিউএল পক্ষ থেকে কিছু করা যায় কিনা তাও খতিয়ে দেখার বিষয় - O_DSYNCযদি sync_binlog=1ফ্লাইঙ্ক ব্যবহারের পরিবর্তে ফিনসিঙ্ক ব্যবহার করা সাহায্য করবে তবে বেনলগ খুলতে পারে? বা বেনলগ হতে পারে প্রাক বরাদ্দ ভাল সমাধান হতে পারে।

এখনও হিসাবে, আমি জানি যে কেউ এই বিষয়টি স্পর্শ করেনি। O_DSYNCডিফল্ট হিসাবে একটি আবেদনকারী সম্ভাবনা নয় তবে দ্রুত লেখার সাথে সামঞ্জস্য করে যা সত্যিই যাচাই করা হয় না। চারপাশে এত হাইপ আছে কেন O_DIRECT

আমি আপনাকে বলতে পারি যে InnoDB প্লাগইন ইনস্টল করা নেই। InnoDB প্লাগইন সহ, বেশ কয়েকটি ভেরিয়েবলের উপস্থিতি থাকা উচিত।

আপনার দুটি পদ্ধতির একটিতে InnoDB আপগ্রেড করা উচিত:

একবার আপনি এটি করার পরে, আপনি InnoDB এ উন্নত করতে পারেন

  • আরও সিপিইউ এবং কোর অ্যাক্সেস করুন
  • আই / ও থ্রেড পড়া এবং লিখতে বৃদ্ধি করুন
  • I / O ক্ষমতা স্কেল করুন (এটি বিশেষত বিভিন্ন স্টোরেজ মিডিয়ার জন্য প্রয়োজন)

সেটিংসে আমার পূর্ববর্তী পোস্টগুলি এখানে আপনি এতে পরিবর্তন করতে পারেন:


1

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

এছাড়াও, বিশেষজ্ঞদের জন্য প্রশ্ন: সামগ্রিক পারফরম্যান্সে লক্ষণীয় অবক্ষয়ের fsync()জন্য অতিরিক্ত কলগুলি করার জন্য O_DIRECT, বা এটি নগন্য নয় কি? আমি এখনও বেঞ্চমার্কগুলি এটি দেখিনি।

এছাড়াও, নোট করুন যে পারকোনা সেট করার ক্ষমতা সক্ষম করেছে innodb_flush_method=ALL_O_DIRECT, যা কেবল ইনোডিবি ডেটা ফাইলগুলিতেই নয়, একই সাথে ইনোডিবি লেনদেন লগগুলিতেও সরাসরি আই / ও সরবরাহ করে।


2
২০১২ সালে ফিরে বাফার পুলটি বিশাল র‍্যামের জন্য ভালভাবে স্কেল করেনি, সুতরাং যখন ওএস ক্যাশে ইনোডাব বাফার পুলের চেয়ে অনেক বড় হয় তখন ডাবল বাফারিংয়ের ক্ষেত্রে এটি ভাল। 5.6 এবং উপরে হিসাবে - আমি বলছি আপনার উত্তর সম্পূর্ণরূপে বৈধ।
noonex
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.