د etcd لپاره د کافي فعالیت لپاره د fio سره ډیسک څنګه چیک کړئ

نوټ. ژباړه: دا مقاله د یوې کوچنۍ څیړنې پایله ده چې د IBM کلاوډ انجینرانو لخوا د etcd ډیټابیس عملیاتو پورې اړوند اصلي ستونزې ته د حل په لټه کې ترسره شوې. ورته کار زموږ لپاره اړین و، په هرصورت، د لیکوالانو د انعکاس او کړنو کورس ممکن په پراخه شرایطو کې په زړه پورې وي.

د etcd لپاره د کافي فعالیت لپاره د fio سره ډیسک څنګه چیک کړئ

د ټولې مقالې لنډ لنډیز: fio او etc

د etcd کلستر فعالیت خورا د زیرمو ذخیره کولو سرعت پورې اړه لري. etcd د فعالیت نظارت لپاره مختلف پرومیټیوس میټریک صادروي. یو له هغو څخه دی wal_fsync_duration_seconds. د etcd لپاره په اسنادو کې دا واييدا ذخیره په کافي اندازه ګړندۍ ګڼل کیدی شي که چیرې د دې میټریک 99 فیصده له 10 ms څخه ډیر نه وي ...

که تاسو په لینکس ماشینونو کې د etcd کلستر تنظیم کولو په اړه فکر کوئ او غواړئ ازموینه وکړئ چې ایا ډرایوونه (لکه SSDs) په کافي اندازه ګړندي دي ، موږ وړاندیز کوو چې د مشهور I/O ټیسټر کارولو وړاندیز وکړو. فای. دا د لاندې کمانډ چلولو لپاره کافی دی (ډائریکټوری test-data باید د ټیسټ شوي ډرایو نصب شوي برخې کې موقعیت ولري):

fio --rw=write --ioengine=sync --fdatasync=1 --directory=test-data --size=22m --bs=2300 --name=mytest

دا یوازې د محصول لیدلو لپاره پاتې دي او وګورئ چې ایا 99 فیصده فټ کیږي fdatasync په 10 ms کې که داسې وي، نو ستاسو ډرایو په کافي اندازه کار کوي. دلته د محصول مثال دی:

fsync/fdatasync/sync_file_range:
  sync (usec): min=534, max=15766, avg=1273.08, stdev=1084.70
  sync percentiles (usec):
   | 1.00th=[ 553], 5.00th=[ 578], 10.00th=[ 594], 20.00th=[ 627],
   | 30.00th=[ 709], 40.00th=[ 750], 50.00th=[ 783], 60.00th=[ 1549],
   | 70.00th=[ 1729], 80.00th=[ 1991], 90.00th=[ 2180], 95.00th=[ 2278],
   | 99.00th=[ 2376], 99.50th=[ 9634], 99.90th=[15795], 99.95th=[15795],
   | 99.99th=[15795]

یو څو یادونه:

  1. په پورته مثال کې، موږ پیرامیټونه تنظیم کړل --size и --bs د یوې ځانګړې قضیې لپاره. تر څو یوه معقوله نتیجه ترلاسه کړي fio، ستاسو د کارونې قضیې لپاره مناسب ارزښتونه مشخص کړئ. د دوی غوره کولو څرنګوالی به لاندې بحث وشي.
  2. یوازې د ازموینې پرمهال fio د ډیسک فرعي سیسټم بار کوي. په ریښتیني ژوند کې ، احتمال شتون لري چې نورې پروسې به ډیسک ته ولیکي (د هغه سربیره چې اړونده دي wal_fsync_duration_seconds). دا اضافي بار کولی شي زیاتوالی ومومي wal_fsync_duration_seconds. په بل عبارت، که د ازموینې څخه 99 فیصده وي fio، یوازې د 10 ms څخه لږ څه لږ ، یو ښه چانس شتون لري چې د ذخیره کولو فعالیت کافي نه وي.
  3. د ازموینې لپاره تاسو به نسخه ته اړتیا ولرئ fio له 3.5 څخه ټیټ نه ويځکه چې زړې نسخې ټولیز پایلې نه ورکوي fdatasync د سلنې په بڼه.
  4. پورته پایله د عمومي پایلې څخه یوازې یو کوچنی اقتباس دی fio.

د fio او etc په اړه نور معلومات

د WALs etcd په اړه یو څو خبرې

عموما، ډیټابیسونه کاروي فعال ننوتل (د لیکلو مخکې ننوتل، WAL). etcd هم اغیزمن کیږي. د WAL په اړه بحث د دې مقالې له دائرې څخه بهر دی، مګر زموږ د موخو لپاره، هغه څه چې تاسو ورته اړتیا لرئ هغه دا دی چې د etcd کلستر هر غړی WAL په دوامداره ذخیره کې ذخیره کوي. etcd د ځینو کلیدي ارزښت ذخیره کولو عملیات (لکه تازه کول) د اجرا کولو دمخه WAL ته لیکي. که چیرې یو نوډ د سنیپ شاټونو تر مینځ خراب شي او بیا پیل شي، etcd کولی شي د WAL مینځپانګې پراساس د تیر سنیپ شاټ راهیسې لیږدونه بیرته ترلاسه کړي.

په دې توګه، هرکله چې یو پیرودونکی د KV پلورنځي ته کیلي اضافه کوي یا د موجوده کیلي ارزښت تازه کوي، etcd د عملیاتو توضیحات WAL ته اضافه کوي، کوم چې په دوامداره پلورنځي کې منظم فایل دی. etcd باید 100٪ ډاډه وي چې د WAL ننوتل واقعیا مخکې له مخکې خوندي شوي. په لینکس کې د دې ترلاسه کولو لپاره ، دا د سیسټم کال کارولو لپاره کافي ندي writeځکه چې د لیکلو عملیات پخپله فزیکي رسنیو ته ځنډول کیدی شي. د مثال په توګه، لینکس ممکن د یو څه وخت لپاره په حافظه کې د کرنل کیچ (د مثال په توګه د پاڼې کیچ کې) کې د WAL داخله وساتي. د دې لپاره چې ډاډ ترلاسه شي چې ډاټا میډیا ته لیکل شوي، د لیکلو وروسته د سیسټم زنګ باید وغوښتل شي fdatasync - دا په حقیقت کې هغه څه دي چې etcd کوي (لکه څنګه چې تاسو په لاندې محصول کې لیدلی شئ strace; دلته 8 - د WAL فایل توضیح کوونکی):

21:23:09.894875 lseek(8, 0, SEEK_CUR)   = 12808 <0.000012>
21:23:09.894911 write(8, ".20210220361223255266632$1020103026"34"rn3fo"..., 2296) = 2296 <0.000130>
21:23:09.895041 fdatasync(8)            = 0 <0.008314>

له بده مرغه، دوامداره ذخیره کولو ته لیکل یو څه وخت نیسي. د fdatasync تلیفونونو اوږدمهاله اجرا کول د etcd فعالیت اغیزه کولی شي. د ذخیره کولو اسنادو کې اشاره وکړه، چې د کافي فعالیت لپاره دا اړینه ده چې د ټولو تلیفونونو د مودې 99 فیصده وي fdatasync کله چې د WAL فایل ته لیکل د 10 ms څخه کم وو. د ذخیره کولو پورې اړوند نور میټریکونه شتون لري، مګر دا مقاله به پدې تمرکز وکړي.

د fio سره د ذخیره کولو ارزښت

تاسو کولی شئ ارزونه وکړئ چې ایا یو ځانګړی ذخیره د etcd سره د کارونې کارولو لپاره مناسبه ده فای - یو مشهور I/O ټیسټر. په یاد ولرئ چې ډیسک I/O کیدای شي په ډیری بیلابیلو لارو پیښ شي: sync/async، ډیری مختلف سیسکال ټولګي، او داسې نور. د سکې بل اړخ دا دی fio کارول خورا ستونزمن. افادیت ډیری پیرامیټونه لري، او د دوی د ارزښتونو مختلف ترکیبونه په بشپړه توګه مختلف پایلو ته الر پیدا کوي. د دې لپاره چې د etcd لپاره مناسب اټکل ترلاسه کړئ، تاسو اړتیا لرئ ډاډ ترلاسه کړئ چې د فیو لخوا رامینځته شوی د لیکلو بار د etcd د WAL فایل لیکلو بار ته څومره چې ممکنه وي نږدې وي:

  • دا پدې مانا ده چې تولید شوی fio بار باید لږترلږه فایل ته د پرله پسې لیکنو لړۍ وي ، چیرې چې هره لیکنه د سیسټم کال لري writeور پسی fdatasync.
  • د ترتیب لیکلو وړ کولو لپاره، تاسو باید بیرغ مشخص کړئ --rw=write.
  • چې fio د تلیفونونو په کارولو سره لیکل write (د نورو سیسټمونو په پرتله - د مثال په توګه، pwrite)، بیرغ وکاروئ --ioengine=sync.
  • په پای کې، بیرغ --fdatasync=1 دا د هر یو لپاره تضمین کوي write باید د fdatasync.
  • زموږ په مثال کې نور دوه پیرامیټونه دي: --size и --bs - ممکن د ځانګړي کارونې قضیې پورې اړه ولري. راتلونکی برخه به د دوی تشکیلات تشریح کړي.

ولې موږ فیو غوره کړه او موږ څنګه زده کړل چې دا څنګه تنظیم کړو

دا یادښت د یوې ریښتینې قضیې څخه راځي چې موږ ورسره مخ شوي یو. موږ په Kubernetes v1.13 کې د پرومیټیوس د څارنې سره کلستر درلود. SSDs د etcd v3.2.24 لپاره د ذخیره کولو په توګه کارول شوي. د Etcd میټریک خورا لوړ ځنډ ښودلی fdatasyncحتی کله چې کلستر بې کاره و. زموږ لپاره، دا میټریکونه خورا مشکوک ښکاري، او موږ ډاډه نه یو چې دوی په ریښتیا څه استازیتوب کوي. سربیره پردې، کلستر د مجازی ماشینونو څخه جوړ شوی و، نو دا ممکنه نه وه چې ووایو ایا ځنډ د مجازی کولو له امله و یا SSD ملامت و.

سربیره پردې ، موږ د هارډویر او سافټویر ترتیب کې مختلف بدلونونه په پام کې نیولي ، نو موږ د دوی ارزولو لپاره یوې لارې ته اړتیا درلوده. البته، دا به ممکنه وي چې په هر ترتیب کې etcd چل کړئ او اړونده پرومیتیس میټریک وګورئ، مګر دا به د پام وړ هڅې ته اړتیا ولري. هغه څه چې موږ ورته اړتیا درلوده د ځانګړي ترتیب ارزولو لپاره یوه ساده لار وه. موږ غوښتل د پرومیټیوس میټریکونو په اړه زموږ پوهه ازموینه وکړو چې له etcd څخه راځي.

دا د دوو ستونزو حل ته اړتیا لري:

  • لومړی، د WAL فایلونو لیکلو په وخت کې د etcd لخوا تولید شوي I/O بار څه ډول ښکاري؟ کوم سیسټم زنګونه کارول کیږي؟ د ریکارډ بلاکونو اندازه څومره ده؟
  • دوهم، راځئ چې ووایو موږ پورتنیو پوښتنو ته ځوابونه لرو. د اړوند بار سره د بیا تولید کولو څرنګوالی fio؟ وروسته له هر څه fio - د ډیری پیرامیټونو سره خورا انعطاف وړ اسانتیا (دا د تایید لپاره اسانه ده، د بیلګې په توګه، دلته - نږدې ژباړه.).

موږ دواړه ستونزې د ورته قوماندې پراساس چلند سره حل کړې lsof и strace:

  • د مرستې په مرسته lsof تاسو کولی شئ د پروسې لخوا کارول شوي ټول فایل توضیح کونکي وګورئ ، او همدارنګه هغه فایلونه چې دوی ورته اشاره کوي.
  • د مرستې په مرسته strace تاسو کولی شئ دمخه روانه پروسه تحلیل کړئ یا پروسه پرمخ وړئ او وګورئ. کمانډ د دې پروسې لخوا رامینځته شوي ټول سیسټم زنګونه ښیې او که اړتیا وي ، د هغې اولادونه. وروستی د هغو پروسو لپاره مهم دی چې فورک کوي، او etcd یو داسې پروسه ده.

لومړی شی چې موږ یې کارولی و strace د کوبرنیټس کلستر کې د etcd سرور معاینه کول پداسې حال کې چې دا بې کاره و.

نو دا معلومه شوه چې د WAL ریکارډ بلاکونه خورا په کثافاتو سره ډله ایز دي، د اکثریت اندازه د 2200-2400 بایټ په حد کې وه. له همدې امله د دې مقالې په پیل کې کمانډ بیرغ کاروي --bs=2300 (bs د هر لیکلو بلاک په بایټ کې اندازه ده fio).

مهرباني وکړئ په یاد ولرئ چې د etcd لیکلو بلاکونو اندازه ممکن د نسخې ، ځای پرځای کولو ، پیرامیټرو ارزښتونو او نورو پورې اړه ولري. - دا په موده اغیزه کوي fdatasync. که تاسو د ورته کارونې قضیه لرئ، تحلیل کړئ strace د نوي ارزښتونو ترلاسه کولو لپاره ستاسو etcd پروسې.

بیا ، د دې لپاره چې د فایل سیسټم سره etcd څنګه کار کوي د روښانه او هراړخیز نظر ترلاسه کولو لپاره ، موږ یې له لاندې څخه پیل کړ strace د بیرغونو سره -ffttT. دې کار دا ممکنه کړه چې د ماشوم پروسې نیول او د هر یو محصول جلا فایل ته ولیکئ. سربیره پردې، د هر سیسټم کال د پیل وخت او مودې په اړه مفصل معلومات ترلاسه شوي.

موږ هم کمانډ وکاروو lsofد محصول په اړه ستاسو د پوهیدو تصدیق کولو لپاره strace په دې شرایطو کې چې د کوم فایل تشریح کونکی د کوم هدف لپاره کارول شوی و. ما پایله ترلاسه کړه strace، پورته ورته ورته. د همغږي کولو وختونو سره احصایوي لاسوهنې تایید کړه چې میټریک wal_fsync_duration_seconds د etcd میچ کالونو څخه fdatasync د WAL فایل توضیح کونکو سره.

سره پیدا کول fio د etcd څخه ورته ورته کاري بار، د کارونې اسناد مطالعه شوي او زموږ د دندې لپاره مناسب پیرامیټونه غوره شوي. موږ تایید کړه چې د سیسټم سمې غوښتنې په پرمختګ کې دي او د چلولو له لارې یې د دوی موده تایید کړه fio د strace (لکه څنګه چې دا د etcd په صورت کې ترسره شوی و).

د پیرامیټر ارزښت ټاکلو ته ځانګړې پاملرنه شوې --size. دا د ټول I/O بار استازیتوب کوي چې د fio یوټیلیټ لخوا رامینځته شوی. زموږ په قضیه کې، دا میډیا ته د لیکل شوي بایټونو مجموعه ده. دا په مستقیم ډول د تلیفونونو شمیر سره متناسب دی write (او fdatasync). د ځانګړي لپاره bs د زنګ وهلو شمیر fdatasync مساوي size / bs.

څرنګه چې موږ په فیصدي کې علاقه درلوده، موږ غوښتل چې د نمونو شمیر دومره لوی وي چې د احصایې له پلوه مهم وي. او دا پریکړه وکړه 10^4 (کوم چې د 22 MB اندازې سره مطابقت لري) به کافي وي. کوچني پیرامیټر ارزښتونه --size ډیر څرګند شور ورکړ (د مثال په توګه، زنګونه fdatasync، کوم چې د معمول څخه ډیر وخت نیسي او 99 فیصده اغیزه کوي).

په تاسو پورې اړه لري

مقاله ښیې چې څنګه کارول کیږي fio یو څوک کولی شي قضاوت وکړي چې ایا میډیا د etcd سره د کارولو لپاره کافي ګړندۍ ده. اوس دا تاسو پورې اړه لري! تاسو کولی شئ په خدمت کې د SSD میشته ذخیره کولو سره مجازی ماشینونه وپلټئ د IBM کلاز.

PS د ژباړونکي څخه

د چمتو شوي استعمال قضیې سره fio د نورو کارونو لپاره، وګورئ اسناد یا مستقیم ته د پروژې ذخیره (په اسنادو کې د ذکر شوي څخه ډیر نور شتون لري).

د ژباړونکي څخه PPS

زموږ په بلاګ کې هم ولولئ:

سرچینه: www.habr.com

Add a comment