Vm.min_free_kbytes என்றால் என்ன, அதை எப்படி டியூன் செய்வது?

What Is Vm Min_free_kbytes



லினக்ஸ் கர்னலுக்கான vm.min_free_kbytes sysctl ட்யூனபிள் என்றால் என்ன, அதை எந்த மதிப்பில் அமைக்க வேண்டும்? இந்த அளவுரு மற்றும் அது இயங்கும் லினக்ஸ் அமைப்பை எவ்வாறு பாதிக்கிறது என்பதை இந்த கட்டுரையில் படிப்போம். ஓஎஸ் பக்க கேச் மற்றும் மல்லோக்குகள் மற்றும் இந்த அளவுரு அமைக்கப்படும்போது சிஸ்டம் ஃப்ரீ கட்டளை என்ன காட்டுகிறது என்பதை நாம் சோதிப்போம். இந்த ட்யூனபிக்கான சிறந்த மதிப்புகளில் சில படித்த யூகங்களை நாங்கள் செய்வோம், மறுதொடக்கத்தில் இருந்து தப்பிக்க vm.min_free_kbytes ஐ எவ்வாறு நிரந்தரமாக அமைப்பது என்பதை நாங்கள் காண்பிப்போம். எனவே போகலாம்.

Vm.min_free_kbytes எப்படி வேலை செய்கிறது

கணினியின் சரியான செயல்பாட்டை உறுதி செய்வதற்காக நினைவக ஒதுக்கீடு அமைப்புக்கு தேவைப்படலாம். கர்னல் அனைத்து நினைவகத்தையும் ஒதுக்க அனுமதித்தால், ஓஎஸ் சீராக இயங்குவதற்கு வழக்கமான செயல்பாடுகளுக்கு நினைவகம் தேவைப்படும்போது அது சிரமப்படலாம். அதனால்தான் கர்னல் டியூன் செய்யக்கூடிய vm.min_free_kbytes ஐ வழங்குகிறது. சரிசெய்யக்கூடியது கர்னலின் நினைவக மேலாளரை குறைந்தபட்சம் X அளவு இலவச நினைவகத்தை வைத்திருக்க கட்டாயப்படுத்தும். அதிகாரப்பூர்வ வரையறை இதோ லினக்ஸ் கர்னல் ஆவணங்கள் : குறைந்த எண்ணிக்கையிலான கிலோபைட்டுகளை இலவசமாக வைத்திருக்க லினக்ஸ் VM ஐ கட்டாயப்படுத்த இது பயன்படுத்தப்படுகிறது. கணினியில் உள்ள ஒவ்வொரு லோமேம் மண்டலத்திற்கும் ஒரு வாட்டர்மார்க் [WMARK_MIN] மதிப்பை கணக்கிட VM இந்த எண்ணைப் பயன்படுத்துகிறது. ஒவ்வொரு லோமேம் மண்டலமும் அதன் அளவை அடிப்படையாகக் கொண்டு பல முன்பதிவு செய்யப்பட்ட இலவச பக்கங்களைப் பெறுகிறது. PF_MEMALLOC ஒதுக்கீடுகளை திருப்தி செய்ய சில குறைந்தபட்ச அளவு நினைவகம் தேவை; நீங்கள் இதை 1024KB க்கும் குறைவாக அமைத்தால், உங்கள் கணினி நுட்பமாக உடைந்து, அதிக சுமைகளின் கீழ் முட்டுக்கட்டைக்கு ஆளாகும். இதை மிக அதிகமாக அமைப்பது உங்கள் இயந்திரத்தை உடனடியாக OOM செய்யும்.







Vm.min_free_kbytes வேலைகளைச் சரிபார்க்கிறது

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



#இலவசம் -எம்



எம்பி -யில் அச்சிடப்பட்ட மதிப்புகளைப் பெற -m கொடியைப் பயன்படுத்தி மேலே உள்ள இலவச நினைவகப் பயன்பாட்டைப் பார்க்கவும். மொத்த நினைவகம் 3.5 முதல் 3.75 ஜிபி நினைவகம். 121 எம்பி நினைவகம் பயன்படுத்தப்படுகிறது, 3.3 ஜிபி நினைவகம் இலவசம், 251 எம்பி இடையக கேச் மூலம் பயன்படுத்தப்படுகிறது. மேலும் 3.3 ஜிபி மெமரி கிடைக்கிறது.





இப்போது நாம் vm.min_free_kbytes இன் மதிப்பை மாற்றப் போகிறோம் மற்றும் கணினி நினைவகத்தில் தாக்கம் என்ன என்பதைப் பார்க்கிறோம். கீழ்கண்டவாறு கர்னல் அளவுரு மதிப்பை மாற்ற ப்ரோக் மெய்நிகர் கோப்பு முறைமைக்கு புதிய மதிப்பை எதிரொலிப்போம்:

# எதிரொலி 1500000>/proc/sys/vm/min_free_kbytes
# sysctl vm.min_free_kbytes



அளவுரு ஏறக்குறைய 1.5 ஜிபிக்கு மாற்றப்பட்டு நடைமுறைக்கு வந்ததை நீங்கள் காணலாம். இப்போது பயன்படுத்துவோம் இலவசம் கணினியால் அங்கீகரிக்கப்பட்ட மாற்றங்களைக் காண மீண்டும் கட்டளை.

#இலவசம் -எம்

கட்டளை மூலம் இலவச நினைவகம் மற்றும் இடையக கேச் மாறாது, ஆனால் காட்டப்படும் நினைவகத்தின் அளவு கிடைக்கும் 3327 இலிருந்து 1222 MB ஆக குறைக்கப்பட்டுள்ளது. இது 1.5 ஜிபி நிமிட இலவச நினைவகத்திற்கு அளவுருவின் மாற்றத்தின் தோராயமான குறைப்பு ஆகும்.

இப்போது 2 ஜிபி தரவு கோப்பை உருவாக்குவோம், பின்னர் அந்த கோப்பை இடையக கேஷில் படிப்பது மதிப்புகளுக்கு என்ன செய்கிறது என்பதைப் பார்ப்போம். கீழே உள்ள 2 வரிசை பேஷ் ஸ்கிரிப்டில் 2 ஜிபி தரவு கோப்பை உருவாக்குவது எப்படி என்பது இங்கே. ஸ்கிரிப்ட் dd கட்டளையைப் பயன்படுத்தி 35MB ரேண்டம் கோப்பை உருவாக்கி, அதை 70 முறை புதியதாக நகலெடுக்கும் தரவு கோப்பு வெளியீடு:

# dd if =/dev/random of =/root/d1.txt எண்ணிக்கை = 1000000
# க்கு `seq 1 70` இல்; எதிரொலி $ i; cat /root/d1.txt >> /root /data_file; முடிந்தது

கோப்பைப் படித்து உள்ளடக்கத்தைப் புறக்கணித்து கீழே உள்ள படி கோப்பை /dev /null க்கு திருப்பி:

#பூனைதரவு கோப்பு> /தேவ்/ஏதுமில்லை

சரி, இந்த சூழ்ச்சிகளின் தொகுப்பால் எங்கள் கணினி நினைவகத்திற்கு என்ன நேர்ந்தது, அதை இப்போது பார்க்கலாம்:

#இலவசம் -எம்

மேலே உள்ள முடிவுகளை பகுப்பாய்வு செய்தல். நம்மிடம் இன்னும் 1.8 ஜிபி இலவச நினைவகம் உள்ளது, எனவே கர்னல் எங்கள் min_free_kbytes அமைப்பால் பெரிய நினைவகத்தை பாதுகாத்துள்ளது. இடையக கேச் 1691 MB ஐப் பயன்படுத்தியுள்ளது, இது எங்கள் தரவு கோப்பின் மொத்த அளவை விட 2.3 ஜிபி ஆகும். வெளிப்படையாக முழு தரவு கோப்பு இடையக கேச் பயன்படுத்த நினைவகம் இல்லாததால் தற்காலிக சேமிப்பில் சேமிக்க முடியவில்லை. முழு கோப்பும் தற்காலிக சேமிப்பில் சேமிக்கப்படவில்லை, ஆனால் கோப்பை மீண்டும் மீண்டும் படிக்க முயற்சிக்கும் நேரத்தை நாம் சரிபார்க்கலாம். அது தற்காலிக சேமிப்பில் இருந்தால், கோப்பைப் படிக்க ஒரு நொடியின் ஒரு பகுதியை எடுக்கும். முயற்சி செய்வோம்.

# நேர பூனை தரவு_ கோப்பு> /dev /null
# நேர பூனை தரவு_ கோப்பு> /dev /null

கோப்பு வாசிப்பு கிட்டத்தட்ட 20 வினாடிகள் ஆனது, இது நிச்சயமாக அனைத்து தற்காலிக சேமிப்புகளையும் கொண்டிருக்கவில்லை என்பதைக் குறிக்கிறது.

ஒரு இறுதிச் சரிபார்ப்பாக, vm.min_free_kbytes ஐக் குறைத்து, பக்க கேச் செயல்பட அதிக இடத்தைக் கொடுக்க அனுமதிக்கவும், கேச் வேலை செய்வதையும் கோப்பு மிக வேகமாகப் படிப்பதையும் நாம் எதிர்பார்க்கலாம்.

# எதிரொலி 67584>/proc/sys/vm/min_free_kbytes
# நேர பூனை தரவு_ கோப்பு> /dev /null
# நேர பூனை தரவு_ கோப்பு> /dev /null

கோப்பை கேச் செய்வதற்கு கூடுதல் நினைவகத்துடன், வாசிப்பு நேரம் 20 வினாடிகளில் இருந்து .364 வினாடிகளாகக் குறைக்கப்பட்டது.

நான் மற்றொரு பரிசோதனையை செய்ய ஆர்வமாக உள்ளேன். இந்த மிக உயர்ந்த vm.min_free_kbytes அமைப்பை எதிர்கொள்ளும் போது சி நிரலிலிருந்து நினைவகத்தை ஒதுக்க மல்லோக் அழைப்புகளுக்கு என்ன நடக்கும். இது மல்லோக்கில் தோல்வியடையுமா? அமைப்பு இறக்குமா? எங்கள் சோதனைகளை மீண்டும் தொடங்க முதலில் vm.min_free_kbytes அமைப்பை மிக உயர்ந்த மதிப்புக்கு மீட்டமைக்கவும்:

#வெளியே எறிந்தார் 1500000 > /சதவீதம்/sys/vm/min_free_kbytes

எங்கள் இலவச நினைவகத்தை மீண்டும் பார்ப்போம்:

கோட்பாட்டளவில் எங்களிடம் 1.9 ஜிபி இலவசம் மற்றும் 515 எம்பி கிடைக்கிறது. ஸ்ட்ரெஸ்-என்ஜி எனப்படும் ஸ்ட்ரெஸ் டெஸ்ட் புரோகிராமைப் பயன்படுத்தி சில நினைவகத்தைப் பயன்படுத்தி நாம் எங்கு தோல்வியடைகிறோம் என்பதைப் பார்க்கலாம். நாங்கள் vm சோதனையாளரைப் பயன்படுத்துவோம் மற்றும் 1 GB நினைவகத்தை ஒதுக்க முயற்சிப்போம். 3.75 ஜிபி அமைப்பில் நாங்கள் 1.5 ஜிபி மட்டுமே ஒதுக்கியுள்ளதால், இது வேலை செய்ய வேண்டும் என்று நினைக்கிறேன்.

# அழுத்தம்- ng --vm 1 --vm-bytes 1G-நேரம் 60
மன அழுத்தம்: தகவல்:[17537]பன்றிகளை அனுப்புதல்:1vm
மன அழுத்தம்: தகவல்:[17537]கேச் ஒதுக்கீடு: இயல்புநிலை கேச் அளவு: 46080K
மன அழுத்தம்: தகவல்:[17537]வெற்றிகரமான ஓட்டம் முடிந்ததுஇல்60.09 வி(1நிமிடம்,0.09உலர்)
# அழுத்தம்- ng --vm 2 --vm-bytes 1G-நேரம் 60 கள்
# அழுத்தம்- ng --vm 3 --vm-bytes 1G-நேரம் 60

அதிக தொழிலாளர்களுடன் மீண்டும் முயற்சி செய்யலாம், நாம் 1, 2, 3, 4 தொழிலாளர்களை முயற்சி செய்யலாம், சில சமயங்களில் அது தோல்வியடைய வேண்டும். எனது சோதனையில் அது 1 மற்றும் 2 தொழிலாளர்களுடன் தேர்ச்சி பெற்றது ஆனால் 3 தொழிலாளர்களுடன் தோல்வியடைந்தது.

Vm.min_free_kbytes ஐ குறைந்த எண்ணிக்கையில் மீட்டமைப்போம், அது 3GB நினைவக அழுத்தங்களை ஒவ்வொன்றும் 1GB உடன் 3.75GB கணினியில் இயக்க உதவுகிறதா என்று பார்ப்போம்.

# எதிரொலி 67584>/proc/sys/vm/min_free_kbytes
# அழுத்தம்- ng --vm 3 --vm-bytes 1G-நேரம் 60

இந்த முறை அது பிழை இல்லாமல் வெற்றிகரமாக ஓடியது, நான் இரண்டு முறை பிரச்சனை இல்லாமல் முயற்சித்தேன். Vm.min_free_kbytes மதிப்பு குறைந்த மதிப்புக்கு அமைக்கப்படும்போது, ​​malloc க்கு அதிக நினைவகம் கிடைப்பதில் நடத்தை வேறுபாடு உள்ளது என்று நான் முடிவு செய்யலாம்.

Vm.min_free_kbytes க்கான இயல்புநிலை அமைப்பு

எனது கணினியில் அமைப்பதற்கான இயல்புநிலை மதிப்பு 67584 ஆகும், இது கணினியில் 1.8% ரேம் அல்லது 64 எம்பி ஆகும். பெரிதும் த்ரஷ் செய்யப்பட்ட கணினியில் பாதுகாப்பு காரணங்களுக்காக, சற்று முன்பதிவு செய்யப்பட்ட இலவச நினைவகத்தை அனுமதிப்பதற்காக நான் அதை சற்று அதிகரிக்கலாம், இருப்பினும் சராசரி பயன்பாட்டிற்கு இயல்புநிலை மதிப்பு போதுமானதாக இருக்கிறது. அதிகாரப்பூர்வ ஆவணங்கள் மதிப்பை மிக அதிகமாக செய்வது பற்றி எச்சரிக்கிறது. கணினி ரேமின் 5 அல்லது 10% ஆக அமைப்பது அநேகமாக அமைப்பின் நோக்கம் அல்ல, மிக அதிகமாக உள்ளது.

மறுதொடக்கத்தில் இருந்து தப்பிக்க vm.min_free_kbytes அமைத்தல்

மறுதொடக்கம் செய்யும் போது இந்த அமைப்பு தப்பிப்பிழைக்கும் மற்றும் இயல்புநிலை மதிப்புகளுக்கு மீட்டமைக்கப்படாது என்பதை உறுதிப்படுத்த, /etc/sysctl.conf கோப்பில் விரும்பிய புதிய மதிப்பை வைப்பதன் மூலம் sysctl அமைப்பை நிலைநிறுத்த வேண்டும்.

முடிவுரை

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