GlusterFS க்கான லினக்ஸ் கர்னலை அமைத்தல்

இக்கட்டுரையின் மொழியாக்கம் பாடநெறி தொடங்கும் தினத்தன்று தயாரிக்கப்பட்டது லினக்ஸ் நிர்வாகி. தொழில்முறை ».

GlusterFS க்கான லினக்ஸ் கர்னலை அமைத்தல்

கர்னல் டியூனிங் தொடர்பான க்ளஸ்டரின் பரிந்துரைகள் மற்றும் அதற்கான தேவை உள்ளதா என்பது குறித்து அவ்வப்போது, ​​அங்கும் இங்கும் கேள்விகள் எழுகின்றன.

அத்தகைய தேவை அரிதாகவே எழுகிறது. பெரும்பாலான பணிச்சுமைகளில், கர்னல் நன்றாகச் செயல்படுகிறது. ஒரு குறைபாடு இருந்தாலும். வரலாற்று ரீதியாக, லினக்ஸ் கர்னல், செயல்திறனை மேம்படுத்துவதற்கான முக்கிய வழியாக தேக்ககப்படுத்துதல் உட்பட, வாய்ப்பு வழங்கப்பட்டால் அதிக நினைவகத்தை பயன்படுத்த தயாராக உள்ளது.

பெரும்பாலான சந்தர்ப்பங்களில், இது நன்றாக வேலை செய்கிறது, ஆனால் அதிக சுமைகளின் கீழ் அது சிக்கல்களுக்கு வழிவகுக்கும்.

CAD, EDA போன்ற நினைவக தீவிர அமைப்புகளில் எங்களுக்கு நிறைய அனுபவம் உள்ளது, இது அதிக சுமையின் கீழ் மெதுவாகத் தொடங்கியது. சில சமயங்களில் நாங்கள் க்ளஸ்டரில் சிக்கல்களை எதிர்கொண்டோம். பல நாட்கள் நினைவக பயன்பாடு மற்றும் வட்டு தாமதத்தை கவனமாகக் கவனித்த பிறகு, அவற்றின் ஓவர்லோட், பெரிய ஐயோவைட், கர்னல் பிழைகள் (கர்னல் அச்சச்சோ), ஃப்ரீஸ்கள் போன்றவற்றைப் பெற்றோம்.

இந்த கட்டுரை பல்வேறு சூழ்நிலைகளில் செய்யப்பட்ட பல டியூனிங் சோதனைகளின் விளைவாகும். இந்த அளவுருக்களுக்கு நன்றி, ஒட்டுமொத்த வினைத்திறன் மேம்பட்டது மட்டுமல்லாமல், கிளஸ்டரும் கணிசமாக உறுதிப்படுத்தப்பட்டுள்ளது.

நினைவக ட்யூனிங்கிற்கு வரும்போது, ​​​​முதலில் பார்க்க வேண்டியது மெய்நிகர் நினைவக துணை அமைப்பு (VM, மெய்நிகர் நினைவகம்), இது உங்களை குழப்பக்கூடிய அதிக எண்ணிக்கையிலான விருப்பங்களைக் கொண்டுள்ளது.

vm.swappiness

அளவுரு vm.swappiness ரேம் உடன் ஒப்பிடும்போது கர்னல் எவ்வளவு ஸ்வாப்பை (ஸ்வாப், பேஜிங்) பயன்படுத்துகிறது என்பதை தீர்மானிக்கிறது. இது மூலக் குறியீட்டில் "மேப் செய்யப்பட்ட நினைவகத்தைத் திருடும் போக்கு" என்றும் வரையறுக்கப்பட்டுள்ளது. அதிக இடமாற்றம் என்பது மேப் செய்யப்பட்ட பக்கங்களை மாற்றுவதற்கு கர்னல் அதிக விருப்பத்துடன் இருக்கும். ஒரு குறைந்த swappiness மதிப்பு எதிர் அர்த்தம்: கர்னல் நினைவகத்தில் இருந்து பக்கம் குறைவாக இருக்கும். வேறு வார்த்தைகளில் கூறுவதானால், அதிக மதிப்பு vm.swappiness, கணினி ஸ்வாப்பை அதிகம் பயன்படுத்தும்.

பெரிய அளவிலான தரவுகள் ரேமில் ஏற்றப்பட்டு இறக்கப்படுவதால், இடமாற்றத்தின் அதிக பயன்பாடு விரும்பத்தகாதது. swapiness மதிப்பு பெரியதாக இருக்க வேண்டும் என்று பலர் வாதிடுகின்றனர், ஆனால் எனது அனுபவத்தில், அதை "0" ஆக அமைப்பது சிறந்த செயல்திறனுக்கு வழிவகுக்கிறது.

நீங்கள் இங்கே மேலும் படிக்கலாம் - lwn.net/Articles/100978

ஆனால், மீண்டும், இந்த அமைப்புகளை கவனமாகப் பயன்படுத்த வேண்டும் மற்றும் ஒரு குறிப்பிட்ட பயன்பாட்டைச் சோதித்த பின்னரே பயன்படுத்த வேண்டும். அதிகமாக ஏற்றப்பட்ட ஸ்ட்ரீமிங் பயன்பாடுகளுக்கு, இந்த அளவுரு "0" ஆக அமைக்கப்பட வேண்டும். "0"க்கு மாற்றப்படும் போது, ​​கணினியின் வினைத்திறன் மேம்படும்.

vm.vfs_cache_pressure

இந்த அமைப்பானது அடைவு மற்றும் ஐனோட் பொருள்களை (டென்ட்ரி மற்றும் ஐனோட்) கேச்சிங் செய்ய கர்னலால் நுகரப்படும் நினைவகத்தைக் கட்டுப்படுத்துகிறது.

இயல்புநிலை மதிப்பு 100 உடன், கர்னல் டென்ட்ரி மற்றும் ஐனோட் கேச்களை பேஜ்கேச் மற்றும் ஸ்வாப்கேச்க்கு "நியாயமான" அடிப்படையில் விடுவிக்க முயற்சிக்கும். vfs_cache_pressure குறைவதால் கர்னல் டென்ட்ரி மற்றும் ஐனோட் கேச்களை வைத்திருக்கும். மதிப்பு "0" ஆக இருக்கும் போது, ​​நினைவக அழுத்தம் காரணமாக கர்னல் டென்ட்ரி மற்றும் ஐனோட் தற்காலிக சேமிப்பை ஒருபோதும் பறிக்காது, மேலும் இது எளிதில் நினைவாற்றல் இல்லாத பிழைக்கு வழிவகுக்கும். vfs_cache_pressure 100க்கு மேல் அதிகரிப்பதால், கர்னல் பல் மற்றும் ஐனோட் ஃப்ளஷிங்கிற்கு முன்னுரிமை அளிக்கிறது.

GlusterFS ஐப் பயன்படுத்தும் போது, ​​பெரிய அளவிலான தரவு மற்றும் பல சிறிய கோப்புகளைக் கொண்ட பல பயனர்கள் ஐனோட்/டென்ட்ரி கேச்சிங் காரணமாக சர்வரில் கணிசமான அளவு ரேமை எளிதாகப் பயன்படுத்த முடியும், இது கர்னல் ஒரு கணினியில் தரவு கட்டமைப்புகளைச் செயலாக்க வேண்டியிருப்பதால் செயல்திறன் சிதைவுக்கு வழிவகுக்கும். 40 ஜிபி நினைவகத்துடன். இந்த மதிப்பை 100க்கு மேல் அமைப்பது பல பயனர்களுக்கு சிறந்த கேச்சிங் மற்றும் மேம்படுத்தப்பட்ட கர்னல் வினைத்திறனை அடைய உதவியது.

vm.dirty_background_ratio மற்றும் 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 ஐ விட வட்டில் இருந்து அதிக வாசிப்புகள் இருக்கும். இந்த அமைப்பை மாற்ற வேண்டிய அவசியமில்லை, ஆனால் பக்க தற்காலிக சேமிப்பைக் கட்டுப்படுத்துவதில் நீங்கள் சித்தப்பிரமை இருந்தால், அதைப் பயன்படுத்தலாம்.

"டெட்லைன்" > /sys/block/sdc/queue/scheduler

I/O திட்டமிடல் என்பது லினக்ஸ் கர்னல் கூறு ஆகும், இது படிக்க மற்றும் எழுத வரிசைகளைக் கையாளுகிறது. கோட்பாட்டளவில், ஸ்மார்ட் RAID கட்டுப்படுத்திக்கு "noop" ஐப் பயன்படுத்துவது நல்லது, ஏனெனில் Linux க்கு வட்டின் இயற்பியல் வடிவியல் பற்றி எதுவும் தெரியாது, எனவே வட்டு வடிவவியலை நன்கு அறிந்த கட்டுப்படுத்தி கோரிக்கையை விரைவாக செயலாக்க அனுமதிப்பது மிகவும் திறமையானது. சாத்தியம். ஆனால் "டெட்லைன்" செயல்திறனை மேம்படுத்துவது போல் தெரிகிறது. லினக்ஸ் கர்னல் மூலக் குறியீடு ஆவணத்தில் திட்டமிடுபவர்களைப் பற்றி மேலும் படிக்கலாம்: linux/Documentation/block/*osched.txt. மேலும் கலப்பு செயல்பாடுகளின் போது (பல எழுதும் செயல்பாடுகள்) வாசிப்பு செயல்திறன் அதிகரிப்பதை நான் கண்டேன்.

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

அட்டவணையாளருக்கு அனுப்பப்படுவதற்கு முன், இடையகத்தில் உள்ள I/O கோரிக்கைகளின் எண்ணிக்கை. சில கன்ட்ரோலர்களின் உள் வரிசை அளவு (வரிசை_ஆழம்) I/O திட்டமிடுபவரின் nr_requests ஐ விட பெரியதாக உள்ளது, எனவே I/O திட்டமிடுபவர் கோரிக்கைகளை சரியாக முன்னுரிமையளிப்பதற்கும் ஒன்றிணைப்பதற்கும் வாய்ப்புகள் குறைவு. காலக்கெடு மற்றும் CFQ திட்டமிடுபவர்களுக்கு, nr_requests கன்ட்ரோலரின் உள் வரிசையை விட 2 மடங்கு அதிகமாக இருந்தால் நல்லது. கோரிக்கைகளை ஒன்றிணைத்தல் மற்றும் மறுவரிசைப்படுத்துதல் ஆகியவை அதிக சுமையின் கீழ் திட்டமிடுபவர் மிகவும் பதிலளிக்கக்கூடியதாக இருக்க உதவுகிறது.

எதிரொலி "16" > /proc/sys/vm/page-cluster

பக்கம்-கிளஸ்டர் அளவுரு ஒரு நேரத்தில் ஸ்வாப்பில் எழுதப்பட்ட பக்கங்களின் எண்ணிக்கையைக் கட்டுப்படுத்துகிறது. மேலே உள்ள எடுத்துக்காட்டில், மதிப்பு 16 KB இன் RAID பட்டையின் படி "64" ஆக அமைக்கப்பட்டுள்ளது. swappiness = 0 என்பதில் அர்த்தமில்லை, ஆனால் நீங்கள் swappiness ஐ 10 அல்லது 20 ஆக அமைத்தால், RAID ஸ்ட்ரைப் அளவு 64K ஆக இருக்கும் போது இந்த மதிப்பைப் பயன்படுத்துவது உங்களுக்கு உதவும்.

blockdev --setra 4096 /dev/<தேவப்பெயர்> (-sdb, hdc அல்லது dev_mapper)

பல RAID கன்ட்ரோலர்களுக்கான இயல்புநிலை பிளாக் சாதன அமைப்புகள் பெரும்பாலும் மோசமான செயல்திறனை விளைவிக்கிறது. மேலே உள்ள விருப்பத்தைச் சேர்ப்பது 4096 * 512-பைட் பிரிவுகளுக்கு படிக்க-முன்னே அமைக்கிறது. குறைந்த பட்சம், ஸ்ட்ரீமிங் செயல்பாடுகளுக்கு, I/O ஐத் தயாரிப்பதற்கு கர்னல் பயன்படுத்தும் காலக்கட்டத்தில் ஆன்-சிப் டிஸ்க் தற்காலிக சேமிப்பை ரீட்-அஹெட் மூலம் நிரப்புவதன் மூலம் வேகம் அதிகரிக்கப்படுகிறது. கேச் அடுத்த வாசிப்பின் போது கோரப்படும் தரவைக் கொண்டிருக்கலாம். அதிக ப்ரீஃபெட்ச் பெரிய கோப்புகளுக்கு ரேண்டம் I/O ஐ அழிக்கும், அது பயனுள்ள வட்டு நேரத்தை பயன்படுத்தினால் அல்லது தற்காலிக சேமிப்பிற்கு வெளியே தரவை ஏற்றுகிறது.

கோப்பு முறைமை மட்டத்தில் இன்னும் சில பரிந்துரைகள் கீழே உள்ளன. ஆனால் அவர்கள் இன்னும் சோதனைக்கு உட்படுத்தப்படவில்லை. கோப்பின் அளவு மற்றும் வரிசையில் உள்ள வட்டுகளின் எண்ணிக்கை உங்கள் கோப்பு முறைமைக்குத் தெரியும் என்பதை உறுதிப்படுத்தவும். எடுத்துக்காட்டாக, இது ஆறு வட்டுகளின் 5K ஸ்ட்ரைப் ரெய்டு64 வரிசையாகும் (உண்மையில் ஐந்து, ஏனெனில் ஒரு வட்டு சமநிலைக்கு பயன்படுத்தப்படுகிறது). இந்த பரிந்துரைகள் கோட்பாட்டு அனுமானங்களை அடிப்படையாகக் கொண்டவை மற்றும் 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))

பெரிய கோப்புகளுக்கு, மேலே பட்டியலிடப்பட்டுள்ள பட்டை அளவுகளை அதிகரிக்கவும்.

எச்சரிக்கை! மேலே விவரிக்கப்பட்ட அனைத்தும் சில வகையான பயன்பாடுகளுக்கு மிகவும் அகநிலை. தொடர்புடைய பயன்பாடுகளின் முன் பயனர் சோதனை இல்லாமல் எந்த மேம்பாடுகளுக்கும் இந்தக் கட்டுரை உத்தரவாதம் அளிக்காது. கணினியின் ஒட்டுமொத்த வினைத்திறனை மேம்படுத்துவதற்கு அவசியமானால் அல்லது தற்போதைய சிக்கல்களைத் தீர்க்கும் போது மட்டுமே இது பயன்படுத்தப்பட வேண்டும்.

கூடுதல் பொருட்கள்:

GlusterFS க்கான லினக்ஸ் கர்னலை அமைத்தல்

மேலும் படிக்கவும்

ஆதாரம்: www.habr.com

கருத்தைச் சேர்