የሊኑክስ ኮርነልን ለግሉስተርኤፍኤስ በማዘጋጀት ላይ

የጽሁፉ ትርጉም የተዘጋጀው በትምህርቱ መጀመሪያ ዋዜማ ላይ ነው። አስተዳዳሪ ሊኑክስ. ፕሮፌሽናል».

የሊኑክስ ኮርነልን ለግሉስተርኤፍኤስ በማዘጋጀት ላይ

አልፎ አልፎ፣ እዚህ እና እዚያ፣ የከርነል ማስተካከያን በተመለከተ የግሉስተር ምክሮች እና ለዚህ አስፈላጊ ስለመሆኑ ጥያቄዎች ይነሳሉ ።

እንዲህ ዓይነቱ ፍላጎት እምብዛም አይከሰትም. በአብዛኛዎቹ የስራ ጫናዎች ላይ ከርነል በጣም ጥሩ ይሰራል። ምንም እንኳን አሉታዊ ጎኖች ቢኖሩም. ከታሪክ አኳያ፣ የሊኑክስ ከርነል ዕድሉን ካገኘ ብዙ ማህደረ ትውስታን ለመጠቀም ፍቃደኛ ሆኖ ቆይቷል፣ አፈፃፀሙን ለማሻሻል እንደ ዋና መንገድ መሸጎጫን ጨምሮ።

በአብዛኛዎቹ ሁኔታዎች, ይህ በትክክል ይሰራል, ነገር ግን በከባድ ጭነት ወደ ችግሮች ሊመራ ይችላል.

በከባድ ጭነት ውስጥ ፍጥነት መቀነስ የጀመሩ እንደ CAD፣ EDA እና የመሳሰሉት የማስታወስ ችሎታን የሚጨምሩ ስርዓቶችን በተመለከተ ብዙ ልምድ አለን። እና አንዳንድ ጊዜ በግሉስተር ውስጥ ችግሮች አጋጥመውናል። ለብዙ ቀናት የማህደረ ትውስታ አጠቃቀም እና የዲስክ መዘግየትን በጥንቃቄ ከተመለከትን በኋላ ከመጠን በላይ ጭነት ፣ ግዙፍ አዮዋይት ፣ የከርነል ስህተቶች (ከርነል ኦፕስ) ፣ በረዶዎች ፣ ወዘተ.

ይህ ጽሑፍ በተለያዩ ሁኔታዎች ውስጥ የተደረጉ የብዙ ማስተካከያ ሙከራዎች ውጤት ነው። ለእነዚህ መለኪያዎች ምስጋና ይግባውና አጠቃላይ ምላሽ ሰጪነት መሻሻል ብቻ ሳይሆን ክላስተርም በከፍተኛ ሁኔታ ተረጋግቷል.

የማህደረ ትውስታ ማስተካከያን በተመለከተ በመጀመሪያ መታየት ያለበት ቨርቹዋል ሜሞሪ ንኡስ ሲስተም (ቪኤም፣ ቨርቹዋል ሜሞሪ) ሲሆን ይህም ግራ የሚያጋቡህ ብዙ አማራጮች አሉት።

ቪም.ስዋፒነት

መለኪያ vm.swappiness ከ RAM ጋር ሲነጻጸር ከርነል ስዋፕ (ስዋፕ፣ ፔጂንግ) ምን ያህል እንደሚጠቀም ይወስናል። በተጨማሪም በምንጭ ኮድ ውስጥ "የካርታ ማህደረ ትውስታን የመስረቅ ዝንባሌ" ተብሎ ይገለጻል. ከፍ ያለ መለዋወጥ ማለት ከርነሉ በካርታ የተሰሩ ገጾችን የመቀየር ዝንባሌ ይኖረዋል ማለት ነው። ዝቅተኛ የመለዋወጥ እሴት ማለት ተቃራኒው ነው፡ ከርነሉ ከማህደረ ትውስታ ያነሰ ገጽ ይሆናል። በሌላ አነጋገር, ዋጋው ከፍ ያለ ነው vm.swappiness, ስርዓቱ የበለጠ ስዋፕ ይጠቀማል.

ግዙፍ የውሂብ ብሎኮች ተጭነው ወደ ራም ስለሚወርዱ ብዙ መለዋወጥ የማይፈለግ ነው። ብዙ ሰዎች የመቀያየር ዋጋው ትልቅ መሆን አለበት ብለው ይከራከራሉ, ነገር ግን በእኔ ልምድ, ወደ "0" ማቀናበሩ ወደ ተሻለ አፈፃፀም ያመራል.

እዚህ የበለጠ ማንበብ ይችላሉ - lwn.net/Articles/100978

ግን ፣ እንደገና ፣ እነዚህ ቅንብሮች በጥንቃቄ መተግበር አለባቸው እና አንድ የተወሰነ መተግበሪያ ከተሞከሩ በኋላ ብቻ። በጣም ለተጫኑ የዥረት መተግበሪያዎች ይህ ግቤት ወደ "0" መቀናበር አለበት። ወደ "0" ሲቀየር የስርዓት ምላሽ ሰጪነት ይሻሻላል።

vm.vfs_cache_ግፊት

ይህ መቼት በከርነል የሚፈጀውን ማህደረ ትውስታ ማውጫ እና ውስጠ-ቁስ (የጥርስ እና የኢኖድ) መሸጎጫ ይቆጣጠራል።

በነባሪ 100 እሴት፣ ከርነል የጥርስ መሸጎጫ እና የኢኖድ መሸጎጫዎችን በ"ፍትሃዊ" መሰረት ወደ ገጽ መሸጎጫ እና ስዋፕካሼ ለማስለቀቅ ይሞክራል። የvfs_cache_pressure መቀነስ ከርነል የጥርስ እና የኢኖድ መሸጎጫዎችን እንዲይዝ ያደርገዋል። እሴቱ "0" ሲሆን ከርነል በማህደረ ትውስታ ግፊት ምክንያት የጥርስ እና የኢኖድ መሸጎጫውን በፍፁም አያጸዳውም እና ይህ በቀላሉ ወደ የማስታወስ ችሎታ ስህተት ሊያመራ ይችላል። ከ100 በላይ የvfs_cache_pressure መጨመር ከርነል የጥርስ ህክምና እና የኢኖድ ማጠብን ቅድሚያ እንዲሰጥ ያደርገዋል።

ግሉስተርኤፍኤስን በሚጠቀሙበት ጊዜ ብዙ ዳታ ያላቸው እና ብዙ ትናንሽ ፋይሎች ያላቸው ብዙ ተጠቃሚዎች በኢኖድ/የጥርስ መሸጎጫ ምክንያት በአገልጋዩ ላይ ከፍተኛ መጠን ያለው RAM በቀላሉ ሊጠቀሙ ይችላሉ ፣ይህም ከርነል በሲስተሙ ላይ የመረጃ አወቃቀሮችን ማካሄድ ስላለበት ወደ አፈፃፀም ውድቀት ሊመራ ይችላል ። ከ 40 ጂቢ ማህደረ ትውስታ ጋር. ይህን እሴት ከ100 በላይ ማዘጋጀቱ ብዙ ተጠቃሚዎች ፍትሃዊ መሸጎጫ እና የተሻሻለ የከርነል ምላሽ እንዲያገኙ ረድቷቸዋል።

vm.ቆሻሻ_ዳራ_ሬሾ እና vm. dirty_ratio

የመጀመሪያ መለኪያ (vm.dirty_background_ratio) የማስታወሻውን መቶኛ በቆሻሻ ገፆች ይወስናል, ከደረሰ በኋላ የቆሸሹ ገጾችን ከበስተጀርባ ወደ ዲስክ ማጽዳት መጀመር አስፈላጊ ነው. ይህ መቶኛ እስኪደርስ ድረስ ምንም ገጾች ወደ ዲስክ አይታጠቡም። እና ዳግም ማስጀመር ሲጀመር የአሂድ ሂደቶችን ሳያቋርጥ ከበስተጀርባ ይሰራል።

ሁለተኛው መለኪያ (እ.ኤ.አ.)vm.dirty_ratio) የግዳጅ ብልጭታ ከመጀመሩ በፊት በቆሸሹ ገጾች ሊያዙ የሚችሉትን የማህደረ ትውስታ መቶኛ ይገልጻል። አንዴ ይህ ገደብ ከደረሰ በኋላ ሁሉም ሂደቶች ተመሳሳይ ይሆናሉ (ታግደዋል) እና የጠየቁት I/O በትክክል እስኪጠናቀቅ እና ውሂቡ በዲስክ ላይ እስኪሆን ድረስ እንዲቀጥሉ አይፈቀድላቸውም። በከባድ I/O፣ ይህ ችግር ይፈጥራል ምክንያቱም ምንም የውሂብ መሸጎጫ ስለሌለ እና I/O የሚሰሩ ሁሉም ሂደቶች I/Oን በመጠበቅ ላይ ናቸው። ይህ ወደ ከፍተኛ ቁጥር የተንጠለጠሉ ሂደቶች, ከፍተኛ ጭነት, የስርዓት አለመረጋጋት እና ደካማ አፈፃፀም ያመጣል.

እነዚህን መቼቶች መቀነስ ውሂቡ በተደጋጋሚ ወደ ዲስክ እንዲፈስ እና በ RAM ውስጥ እንዳይከማች ያደርጋል። ይህ ከ45-90 ጂቢ ገጽ መሸጎጫዎችን ወደ ዲስክ በማፍሰስ ችግር ያለባቸውን የማህደረ ትውስታ-ከባድ ስርዓቶችን ይረዳል፣ይህም ለግንባር-መጨረሻ መተግበሪያዎች ትልቅ መዘግየትን ያስከትላል፣ይህም አጠቃላይ ምላሽ ሰጪነትን እና መስተጋብርን ይቀንሳል።

"1" > /proc/sys/vm/pagecache

የገጽ መሸጎጫ የፋይሎችን እና የሚተገበሩ ፕሮግራሞችን ውሂብ የሚያከማች መሸጎጫ ነው ፣ ማለትም እነዚህ ትክክለኛ የፋይሎች ይዘቶች ወይም መሣሪያዎችን የሚያግዱ ገጾች ናቸው። ይህ መሸጎጫ የዲስክ ንባቦችን ቁጥር ለመቀነስ ያገለግላል። የ"1" ዋጋ ማለት 1% RAM ለካሼው ጥቅም ላይ ይውላል እና ከ RAM ይልቅ ከዲስክ ብዙ ተነባቢዎች ይኖራሉ ማለት ነው። ይህንን መቼት መቀየር አስፈላጊ አይደለም፣ ነገር ግን የገጽ መሸጎጫውን ስለመቆጣጠር ፓራኖይድ ከሆኑ ሊጠቀሙበት ይችላሉ።

"የመጨረሻ ጊዜ" > /sys/block/sdc/queue/scheduler

የ I/O መርሐግብር አዘጋጅ የማንበብ እና የመጻፍ ወረፋዎችን የሚያስተናግድ የሊኑክስ ከርነል አካል ነው። በንድፈ ሀሳብ ፣ ለስማርት RAID መቆጣጠሪያ “noop” ን መጠቀም የተሻለ ነው ፣ ምክንያቱም ሊኑክስ ስለ ዲስኩ አካላዊ ጂኦሜትሪ ምንም አያውቅም ፣ ስለሆነም የዲስክን ጂኦሜትሪ ጠንቅቆ የሚያውቀው ተቆጣጣሪው ጥያቄውን በፍጥነት እንዲሰራ መፍቀድ የበለጠ ውጤታማ ነው ። ይቻላል ። ግን "የመጨረሻ ጊዜ" አፈጻጸምን የሚያሻሽል ይመስላል። ስለ መርሐግብር አውጪዎች በሊኑክስ ከርነል ምንጭ ኮድ ሰነድ ውስጥ የበለጠ ማንበብ ትችላለህ፡- linux/Documentation/block/*osched.txt. እና ደግሞ በተደባለቀ ኦፕሬሽኖች (ብዙ የጽሑፍ ስራዎች) የንባብ ፍሰት መጨመርን አይቻለሁ።

"256" > /sys/block/sdc/queue/nr_requests

ወደ መርሐግብር አውጪው ከመተላለፉ በፊት በመጠባበቂያው ውስጥ ያሉት የI/O ጥያቄዎች ብዛት። የአንዳንድ ተቆጣጣሪዎች የውስጥ ወረፋ መጠን (ወረፋ_ጥልቀት) ከ I/O መርሐግብር ሰጪ nr_ጥያቄዎች የበለጠ ነው፣ስለዚህ የI/O መርሐግብር አዘጋጅ ጥያቄዎችን በትክክል የማስቀደም እና የማዋሃድ ዕድሉ አነስተኛ ነው። ለመጨረሻ ጊዜ እና ለ CFQ መርሐግብር አድራጊዎች፣ nr_ጥያቄዎች ከተቆጣጣሪው የውስጥ ወረፋ 2 እጥፍ ሲሆኑ የተሻለ ነው። ጥያቄዎችን ማዋሃድ እና እንደገና ማዘዝ መርሐግብር አውጪው በከባድ ጭነት ውስጥ የበለጠ ምላሽ እንዲሰጥ ያግዘዋል።

አስተጋባ "16" > /proc/sys/vm/ገጽ-ክላስተር

የገጽ-ክላስተር መለኪያ በአንድ ጊዜ ወደ ስዋፕ የተጻፉትን የገጾች ብዛት ይቆጣጠራል። ከላይ ባለው ምሳሌ እሴቱ ወደ "16" ተቀናብሯል በ RAID የጭረት መጠን በ 64 ኪ.ቢ. በስዋፒነት = 0 ትርጉም የለውም ነገር ግን ስዋፒን ወደ 10 ወይም 20 ካቀናበሩት ይህን እሴት መጠቀም የRAID ስትሪፕ መጠኑ 64 ኪ.

blockdev --setra 4096 /dev/<ዴቭ ስም> (-sdb፣ hdc ወይም dev_mapper)

ለብዙ RAID ተቆጣጣሪዎች ነባሪው የማገጃ መሳሪያ ቅንጅቶች ብዙ ጊዜ አስከፊ አፈጻጸም ያስከትላሉ። ከላይ ያለውን አማራጭ መጨመር ለ 4096 * 512-ባይት ሴክተሮች ንባብን ያዘጋጃል. ቢያንስ፣ ለዥረት ስራዎች፣ ከርነል I/Oን ለማዘጋጀት በሚጠቀምበት ጊዜ የኦን-ቺፕ ዲስክ መሸጎጫ ንባብ ወደፊት በመሙላት ፍጥነት ይጨምራል። መሸጎጫው በሚቀጥለው ንባብ ላይ የሚጠየቀውን ውሂብ ሊይዝ ይችላል። በጣም ብዙ ፕሪፈች ጠቃሚ ሊሆን የሚችል የዲስክ ጊዜን የሚጠቀም ከሆነ ወይም ከመሸጎጫው ውጭ መረጃን ከጫነ ለትላልቅ ፋይሎች የዘፈቀደ I/Oን ሊገድል ይችላል።

ከዚህ በታች በፋይል ስርዓት ደረጃ ጥቂት ተጨማሪ ምክሮች አሉ። ግን እስካሁን አልተፈተኑም። የፋይል ሲስተምዎ የጭረት መጠኑን እና በድርድር ውስጥ ያሉትን የዲስኮች ብዛት እንደሚያውቅ ያረጋግጡ። ለምሳሌ፣ ይህ 5K stripe raid64 የስድስት ዲስኮች ድርድር ነው (በእውነቱ አምስት፣ ምክንያቱም አንድ ዲስክ ለተመጣጣኝ ጥቅም ላይ ይውላል)። እነዚህ ምክሮች በቲዎሬቲካል ግምቶች ላይ የተመሰረቱ እና ከተለያዩ ብሎጎች/ፅሁፎች በRAID ባለሙያዎች የተሰባሰቡ ናቸው።

-> ext4 fs, 5 disks, 64K stripe, units in 4K blocks
mkfs -text4 -E stride=$((64/4))
-> xfs, 5 disks, 64K stripe, units in 512-byte sectors
mkfs -txfs -d sunit=$((64*2)) -d swidth=$((5*64*2))

ለትልቅ ፋይሎች, ከላይ የተዘረዘሩትን የጭረት መጠኖች መጨመር ያስቡበት.

ይጠንቀቁ! ከላይ የተገለጹት ሁሉም ነገሮች ለአንዳንድ የአፕሊኬሽኖች ዓይነቶች በጣም ተጨባጭ ናቸው. ይህ ጽሑፍ የተጠቃሚ ተዛማጅ መተግበሪያዎችን ሳይሞክር ማሻሻያዎችን አያረጋግጥም። የስርዓቱን አጠቃላይ ምላሽ ለማሻሻል አስፈላጊ ከሆነ ወይም አሁን ያሉ ችግሮችን የሚፈታ ከሆነ ብቻ ጥቅም ላይ መዋል አለበት.

ተጨማሪ ቁሳቁሶች

የሊኑክስ ኮርነልን ለግሉስተርኤፍኤስ በማዘጋጀት ላይ

ተጨማሪ ያንብቡ

ምንጭ: hab.com

አስተያየት ያክሉ