ስለ fio እና ወዘተ አጭር ታሪክ
የክላስተር አፈጻጸም
fio --rw=write --ioengine=sync --fdatasync=1 --directory=test-data --size=22m --bs=2300 --name=mytest
ውጤቱን ብቻ ማየት እና የቆይታ ጊዜውን 99 ኛ ፐርሰንታይል ማረጋገጥ ያስፈልግዎታል
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]
ማስታወሻዎች
- ለኛ ልዩ ሁኔታ የ --መጠን እና --bs አማራጮችን አዘጋጅተናል። ከ fio ጠቃሚ ውጤት ለማግኘት የራስዎን እሴቶች ያቅርቡ። የት ማግኘት ይቻላል? አንብብ
fio ን ማዋቀር እንዴት እንደተማርን . - በሙከራ ጊዜ ሁሉም የI/O ጭነት የሚመጣው ከ fio ነው። በእውነተኛ ህይወት ሁኔታ፣ ከwal_fsync_duration_ሰከንዶች በተጨማሪ ወደ ማከማቻው የሚመጡ ሌሎች የመፃፍ ጥያቄዎች ሊኖሩ ይችላሉ። ተጨማሪው ጭነት የwal_fsync_duration_ሴኮንዶች ዋጋ ይጨምራል። ስለዚህ 99ኛው ፐርሰንታይል ወደ 10ms የሚጠጋ ከሆነ ማከማቻዎ ፍጥነት እያለቀ ነው።
- ስሪቱን ይውሰዱ
fio ከ 3.5 በታች አይደለም (የቀደሙት የfdatasync ቆይታ መቶኛዎችን አያሳዩም)። - ከላይ የ fio ውጤቶች ቅንጭብጭብ ብቻ ነው።
ስለ fio እና ወዘተ ረጅም ታሪክ
ወዘተ ውስጥ WAL ምንድን ነው?
አብዛኛውን ጊዜ የውሂብ ጎታዎች ይጠቀማሉ
ደንበኛ በቁልፍ ዋጋ ማከማቻው ላይ ቁልፍ ሲጨምር ወይም የነባር ቁልፍን ዋጋ ሲያዘምን ወዘተ በWAL ውስጥ ያለውን ስራ ይመዘግባል፣ይህም ቋሚ ማከማቻ ውስጥ ያለ መደበኛ ፋይል ነው። etcd ሂደቱን ከመቀጠልዎ በፊት የWAL ግቤት በትክክል መከሰቱን ሙሉ በሙሉ እርግጠኛ መሆን አለበት። በሊኑክስ ላይ አንድ የስርዓት ጥሪ ለዚህ በቂ አይደለም።
21:23:09.894875 lseek(8, 0, SEEK_CUR) = 12808 <0.000012>
21:23:09.894911 write(8, ". 20210220361223255266632$10 20103026"34"rn3fo"..., 2296) = 2296 <0.000130>
21:23:09.895041 fdatasync(8) = 0 <0.008314>
እንደ አለመታደል ሆኖ ወደ ቋሚ ማከማቻ መፃፍ ወዲያውኑ አይከሰትም። የfdatasync ጥሪ ቀርፋፋ ከሆነ የ etcd ስርዓቱ አፈጻጸም ይጎዳል።
ማከማቻን በ fio መገመት
ማከማቻዎ ለ etcd ተስማሚ መሆኑን መገምገም ከፈለጉ በጣም ታዋቂ የሆነውን የI/O ጭነት መሞከሪያ መሳሪያ ይጠቀሙ። የዲስክ አሠራሮች በጣም የተለያዩ ሊሆኑ እንደሚችሉ መታወስ አለበት-የተመሳሰለ እና የማይመሳሰል ፣ ብዙ የስርዓት ጥሪዎች ፣ ወዘተ. በውጤቱም ፣ fio ለመጠቀም በጣም ከባድ ነው። እሱ ብዙ መመዘኛዎች አሉት ፣ እና የእሴቶቻቸው የተለያዩ ጥምረት በጣም የተለያዩ የ I/O የስራ ጫናዎችን ይፈጥራሉ። ለ etcd የሚሆን በቂ አሃዞችን ለማግኘት የWAL ፋይሎችን በሚጽፉበት ጊዜ ከ fio የመፃፍ ጭነት በተቻለ መጠን ከ etcd ትክክለኛ ጭነት ጋር ቅርብ መሆኑን ማረጋገጥ አለብዎት።
ስለዚህ, fio ቢያንስ, በፋይሉ ላይ ተከታታይ ተከታታይ ጽሁፎችን መጫን አለበት, እያንዳንዱ ጽሁፍ የስርዓት ጥሪን ያካትታል.
ለምን fio እና እንዴት ማዋቀር እንዳለብን ተማርን።
በዚህ ጽሑፍ ውስጥ አንድ እውነተኛ ጉዳይ እንገልፃለን. ክላስተር አለን።
ለዚህ ግን ሁለት ችግሮች መፈታት ነበረባቸው። በመጀመሪያ፣ ወደ WAL ሲጽፉ ወዘተ የሚፈጠረው የI/O ጭነት ምን ይመስላል? ምን ዓይነት የስርዓት ጥሪዎች ጥቅም ላይ ይውላሉ? የመዝገቦቹ መጠን ምን ያህል ነው? ሁለተኛ፣ ለእነዚህ ጥያቄዎች መልስ ከሰጠን፣ ተመሳሳይ የሥራ ጫናን በ fio እንዴት ማራባት እንችላለን? ፊዮ ብዙ አማራጮች ያሉት በጣም ተለዋዋጭ መሳሪያ መሆኑን አይርሱ። ሁለቱንም ችግሮች በአንድ አቀራረብ ፈትተናል - ትዕዛዞችን በመጠቀም
ክላስተር ላይ ምንም ጭነት በሌለበት ጊዜ ለኩበርኔትስ የ etcd አገልጋይን ለማሰስ መጀመሪያ እንጠቀማለን። ከሞላ ጎደል ሁሉም የWAL መዛግብት ተመሳሳይ መጠን ያላቸው ሲሆኑ አይተናል፡ 2200–2400 ባይት። ስለዚህ, በፖስታው መጀመሪያ ላይ በትእዛዙ ውስጥ, ግቤት -bs=2300 (bs ማለት ለእያንዳንዱ የ fio ግቤት በባይት መጠን) ገለጽን. የ etcd ግቤት መጠን በ etcd እትም ፣ ስርጭት ፣ የመለኪያ እሴቶች ፣ ወዘተ ላይ የተመረኮዘ መሆኑን እና በfdatasync ቆይታ ላይ ተጽዕኖ እንደሚያሳድር ልብ ይበሉ። ተመሳሳይ ሁኔታ ካለዎት ትክክለኛውን ቁጥሮች ለማወቅ የእርስዎን etcd ሂደቶችን በ strace ይመርምሩ።
ከዚያ ፣ የ etcd ፋይል ስርዓቱ ምን እየሰራ እንደሆነ ጥሩ ሀሳብ ለማግኘት ፣ በ strace እና -ffttT አማራጮች ጀመርነው። ስለዚህ የልጁን ሂደቶች ለመመርመር እና የእያንዳንዳቸውን ውጤት በተለየ ፋይል ውስጥ ለመመዝገብ ሞክረናል, እንዲሁም ስለ እያንዳንዱ የስርዓት ጥሪ ጅምር እና ቆይታ ዝርዝር ዘገባዎችን ለማግኘት ሞክረናል. ስለ የስትራክ ውፅዓት ትንታኔያችንን ለማረጋገጥ እና የትኛው ፋይል ገላጭ ለየትኛው ዓላማ ጥቅም ላይ እንደሚውል ለማየት lsofን ተጠቀምን። ስለዚህ በስትሮክ እርዳታ ከላይ የሚታዩት ውጤቶች ተገኝተዋል. የማመሳሰል ጊዜ ስታቲስቲክስ የዋል_fsync_duration_ሰከንዶች ከ etcd ከ fdatasync ጥሪዎች ከWAL ፋይል ገላጭዎች ጋር የሚስማማ መሆኑን አረጋግጧል።
ለ fio ሰነዶችን አልፈን ለስክሪፕታችን አማራጮችን መረጥን ስለዚህም fio ከ etcd ጋር የሚመሳሰል ሸክም እንዲያመነጭ። እንዲሁም የስርዓት ጥሪዎችን እና የቆይታ ጊዜያቸውን ልክ እንደ ‹fio from strace› በማሄድ አረጋግጠናል።
ሙሉውን የI/O ጭነት ከ fio ለመወከል የ --size መለኪያውን ዋጋ በጥንቃቄ መርጠናል:: በእኛ ሁኔታ ይህ ወደ ማከማቻው የተፃፈው አጠቃላይ ባይት ነው። ከጽሑፍ (እና fdatasync) የስርዓት ጥሪዎች ጋር በቀጥታ ተመጣጣኝ ሆኖ ተገኝቷል። ለተወሰነ የ bs እሴት፣ የfdatasync ጥሪዎች ቁጥር = መጠን/bs። ስለ ፐርሰንታይሉ ፍላጎት ስለነበረን እርግጠኛ ለመሆን በቂ ናሙናዎች ሊኖረን ይገባል እና 10^4 ይበቃናል (ይህ 22 ሜቢባይት ነው) አስልተናል። --መጠን ያነሰ ከሆነ፣ ውጫዊ ነገሮች ሊከሰቱ ይችላሉ (ለምሳሌ፣ በርካታ የfdatasync ጥሪዎች ከወትሮው የበለጠ ጊዜ ይወስዳሉ እና በ99ኛ ፐርሰንታይል ላይ ተጽዕኖ ያሳድራሉ)።
እራስዎ ይሞክሩት።
እንዴት fioን መጠቀም እንደምትችል አሳይተናታል እና ማከማቻው ለ etcd ጥሩ ስራ ለመስራት ፈጣን መሆኑን ለማየት። አሁን ለምሳሌ የኤስኤስዲ ማከማቻ ያላቸው ምናባዊ ማሽኖችን በመጠቀም ለራስዎ መሞከር ይችላሉ።
ምንጭ: hab.com