නොමිලේ RAM ගොඩක්, NVMe Intel P4500 සහ සෑම දෙයක්ම අතිශයින්ම මන්දගාමීයි - swap කොටසක අසාර්ථක එකතු කිරීමේ කතාව

මෙම ලිපියෙන්, අපගේ VPS වලාකුළේ එක් සේවාදායකයක් සමඟ මෑතකදී ඇති වූ තත්වයක් ගැන මම කතා කරමි, එය පැය කිහිපයක් මා කම්පනයට පත් කළේය. මම වසර 15 ක් පමණ Linux සේවාදායකයන් වින්‍යාස කර දෝශ නිරාකරණය කර ඇත, නමුත් මෙම නඩුව මගේ භාවිතයට කිසිසේත් නොගැලපේ - මම ව්‍යාජ උපකල්පන කිහිපයක් ඇති කර ගැටලුවට හේතුව නිවැරදිව තීරණය කර එය විසඳීමට පෙර මම ටිකක් මංමුලා සහගත විය. .

පූර්විකාව

අපි මධ්‍යම ප්‍රමාණයේ වලාකුළක් ක්‍රියාත්මක කරන අතර, අපි පහත වින්‍යාසය සහිත සම්මත සේවාදායකයන් මත ගොඩනඟමු - 32 cores, 256 GB RAM සහ 4500TB PCI-E Intel P4 NVMe ධාවකය. අපි මෙම වින්‍යාසයට සැබවින්ම කැමති වන්නේ එය VM නිදසුන් ආකාරයේ මට්ටමින් නිවැරදි සීමාවක් ලබා දීමෙන් IO පොදු කාර්ය ගැන කරදර වීමේ අවශ්‍යතාවය ඉවත් කරන බැවිනි. මොකද NVMe Intel P4500 සිත් ඇදගන්නාසුළු කාර්ය සාධනයක් ඇත, අපට යන්ත්‍ර සඳහා සම්පූර්ණ IOPS ප්‍රතිපාදන සහ IOWAIT ශුන්‍ය උපස්ථ සේවාදායකයකට උපස්ථ ආචයනය යන දෙකම එකවර සැපයිය හැකිය.

VM වෙළුම් ගබඩා කිරීම සඳහා hyperconverged SDN සහ වෙනත් හැඩකාර, විලාසිතාමය, තරුණ දේවල් භාවිතා නොකරන පැරණි ඇදහිලිවන්තයන්ගෙන් අපි කෙනෙකි, පද්ධතිය සරල වන තරමට, “ප්‍රධාන ගුරුවරයා ගොස් ඇත” යන කොන්දේසි යටතේ එය දෝශ නිරාකරණය කිරීම පහසු යැයි විශ්වාස කරයි. කඳුකරයට.” ප්‍රතිඵලයක් වශයෙන්, අපි VM වෙළුම් QCOW2 ආකෘතියෙන් XFS හෝ EXT4 හි ගබඩා කරමු, එය LVM2 මත යොදවා ඇත.

අපි වාද්‍ය වෘන්දය සඳහා භාවිතා කරන නිෂ්පාදනය - Apache CloudStack මඟින් QCOW2 භාවිතා කිරීමට අපට බල කෙරේ.

උපස්ථයක් සිදු කිරීම සඳහා, අපි LVM2 ස්නැප්ෂොට් එකක් ලෙස වෙළුමේ සම්පූර්ණ රූපයක් ගනිමු (ඔව්, LVM2 ස්නැප්ෂොට් මන්දගාමී බව අපි දනිමු, නමුත් Intel P4500 අපට මෙහිදීද උදවු කරයි). අපි කරනවා lvmcreate -s .. සහ උපකාරයෙන් dd අපි උපස්ථ පිටපත ZFS ආචයනය සහිත දුරස්ථ සේවාදායකයකට යවන්නෙමු. මෙන්න අපි තවමත් තරමක් ප්‍රගතිශීලීයි - සියල්ලට පසු, ZFS හට සම්පීඩිත ආකාරයෙන් දත්ත ගබඩා කළ හැකි අතර අපට එය භාවිතයෙන් ඉක්මනින් ප්‍රතිසාධනය කළ හැකිය DD හෝ භාවිතා කරමින් තනි VM වෙළුම් ලබා ගන්න mount -o loop ....

ඇත්ත වශයෙන්ම, ඔබට LVM2 පරිමාවේ සම්පූර්ණ රූපය ඉවත් කළ නොහැක, නමුත් ගොනු පද්ධතිය තුළට සවි කළ හැකිය RO සහ QCOW2 පින්තූර තමන් විසින්ම පිටපත් කරන්න, කෙසේ වෙතත්, XFS මෙයින් නරක අතට හැරී ඇති බවට අපට මුහුණ දීමට සිදු විය, වහාම නොව, අනපේක්ෂිත ආකාරයකින්. හයිපර්වයිසර් සත්කාරකයින් සති අන්තයේ, රාත්‍රියේ හෝ නිවාඩු දිනවල ඒවා සිදුවන්නේ කවදාද යන්න පැහැදිලි නැති දෝෂ හේතුවෙන් හදිසියේම “ඇලෙන” විට අපි ඇත්තටම එයට කැමති නැත. එබැවින්, XFS සඳහා අපි ස්නැප්ෂොට් සවිකිරීමේ මාදිලිය භාවිතා නොකරමු RO වෙළුම් උපුටා ගැනීම සඳහා, අපි සම්පූර්ණ LVM2 වෙළුම පිටපත් කරමු.

උපස්ථ සේවාදායකයට උපස්ථ කිරීමේ වේගය අපගේ නඩුවේදී තීරණය වන්නේ උපස්ථ සේවාදායකයේ ක්‍රියාකාරිත්වය මගිනි, එය සම්පීඩිත දත්ත සඳහා 600-800 MB/s පමණ වේ; තවත් සීමාවක් වන්නේ උපස්ථ සේවාදායකය සම්බන්ධ කර ඇති 10Gbit/s නාලිකාවයි. පොකුරට.

මෙම අවස්ථාවේදී, හයිපර්වයිසර් සේවාදායකයන් 8 ක උපස්ථ පිටපත් එකවර එක් උපස්ථ සේවාදායකයකට උඩුගත කරනු ලැබේ. මේ අනුව, උපස්ථ සේවාදායකයේ තැටි සහ ජාල උප පද්ධති, මන්දගාමී වීම, හයිපර්වයිසර් ධාරකවල තැටි උපපද්ධතීන්ට අධික ලෙස පැටවීමට ඉඩ නොදේ, මන්ද ඒවා සරලව කිවහොත්, 8 GB/sec සැකසීමට නොහැකි බැවින්, හයිපර්වයිසර් ධාරකයට පහසුවෙන් කළ හැකිය. නිපැයුම.

වේගවත් Intel P4500 ධාවකයක් භාවිතා කිරීම, NFS භාවිතා කිරීම සහ බොහෝ විට ZFS භාවිතා කිරීම වැනි විස්තර ඇතුළුව වැඩිදුර කතාව සඳහා ඉහත පිටපත් කිරීමේ ක්‍රියාවලිය ඉතා වැදගත් වේ.

උපස්ථ කතාව

සෑම හයිපර්වයිසර් නෝඩයකම අපට 8 GB ප්‍රමාණයේ කුඩා SWAP කොටසක් ඇති අතර, අපි හයිපර්වයිසර් නෝඩයම "පෙරළමු" DD යොමු රූපයෙන්. සේවාදායක මත පද්ධති පරිමාව සඳහා, අපි LSI හෝ HP දෘඪාංග පාලකය මත 2xSATA SSD RAID1 හෝ 2xSAS HDD RAID1 භාවිතා කරමු. සාමාන්‍යයෙන්, SWAP හැර, අපගේ පද්ධති පරිමාව "පාහේ කියවීමට පමණක්" ආකාරයෙන් ක්‍රියාත්මක වන බැවින්, ඇතුළත ඇති දේ ගැන අපි කිසිසේත් තැකීමක් නොකරමු. තවද අපට සේවාදායකයේ RAM විශාල ප්‍රමාණයක් ඇති අතර එය 30-40% නොමිලේ බැවින්, අපි SWAP ගැන සිතන්නේ නැත.

උපස්ථ ක්රියාවලිය. මෙම කාර්යය මේ වගේ දෙයක් පෙනේ:

#!/bin/bash

mkdir -p /mnt/backups/volumes

DIR=/mnt/images-snap
VOL=images/volume
DATE=$(date "+%d")
HOSTNAME=$(hostname)

lvcreate -s -n $VOL-snap -l100%FREE $VOL
ionice -c3 dd iflag=direct if=/dev/$VOL-snap bs=1M of=/mnt/backups/volumes/$HOSTNAME-$DATE.raw
lvremove -f $VOL-snap

අවධානය යොමු කරන්න ionice -c3, ඇත්ත වශයෙන්ම, NVMe උපාංග සඳහා මෙය සම්පූර්ණයෙන්ම නිෂ්ඵල වේ, මන්ද ඒවා සඳහා IO උපලේඛනය මෙසේ සකසා ඇත:

cat /sys/block/nvme0n1/queue/scheduler
[none] 

කෙසේ වෙතත්, සාම්ප්‍රදායික SSD RAID සහිත ලෙගසි නෝඩ් ගණනාවක් අප සතුව ඇත, ඒවා සඳහා මෙය අදාළ වේ, එබැවින් ඒවා චලනය වේ ලෙස. සමස්තයක් වශයෙන්, මෙය නිෂ්ඵල බව පැහැදිලි කරන රසවත් කේතයකි ionice එවැනි වින්යාසයකදී.

ධජය කෙරෙහි අවධානය යොමු කරන්න iflag=direct සඳහා DD. කියවීමේදී IO බෆර අනවශ්‍ය ලෙස ප්‍රතිස්ථාපනය වීම වැලැක්වීමට අපි සෘජු IO භාවිතා කරයි. කෙසේ වුවද, oflag=direct අපි එය භාවිතා කරන විට ZFS කාර්ය සාධන ගැටළු වලට මුහුණ දී ඇති නිසා එසේ නොවේ.

අපි වසර ගණනාවක් තිස්සේ ගැටළු නොමැතිව මෙම යෝජනා ක්රමය සාර්ථකව භාවිතා කර ඇත.

ඉන්පසු එය ආරම්භ විය... අපි එක් නෝඩ් එකක් තවදුරටත් උපස්ථ කර නැති බවත්, පෙර එක 50% ක දරුණු IOWAIT සමඟ ක්‍රියාත්මක වන බවත් සොයා ගත්තෙමු. පිටපත් කිරීම සිදු නොවන්නේ මන්දැයි තේරුම් ගැනීමට උත්සාහ කරන විට, අපට පහත සංසිද්ධිය හමු විය:

Volume group "images" not found

අපි "Intel P4500 සඳහා අවසානය පැමිණ ඇත" ගැන සිතීමට පටන් ගත්තෙමු, කෙසේ වෙතත්, ධාවකය ප්රතිස්ථාපනය කිරීම සඳහා සේවාදායකය අක්රිය කිරීමට පෙර, එය තවමත් උපස්ථයක් සිදු කිරීමට අවශ්ය විය. LVM2 උපස්ථයකින් පාර-දත්ත ප්‍රතිසාධනය කිරීමෙන් අපි LVM2 සවි කළෙමු:

vgcfgrestore images

අපි උපස්ථයක් දියත් කළ අතර මෙම තෙල් සිතුවම දුටුවෙමු:
නොමිලේ RAM ගොඩක්, NVMe Intel P4500 සහ සෑම දෙයක්ම අතිශයින්ම මන්දගාමීයි - swap කොටසක අසාර්ථක එකතු කිරීමේ කතාව

නැවතත් අපි ඉතා දුක් වූවෙමු - අපට මේ ආකාරයෙන් ජීවත් විය නොහැකි බව පැහැදිලිය, මන්ද සියලුම වීපීඑස් දුක් විඳිනු ඇත, එයින් අදහස් වන්නේ අප ද දුක් විඳිනු ඇත. සිදුවූයේ කුමක්ද යන්න සම්පූර්ණයෙන්ම පැහැදිලි නැත - iostat අනුකම්පා සහගත IOPS සහ ඉහළම IOWAIT පෙන්නුම් කළේය. “අපි NVMe ප්‍රතිස්ථාපනය කරමු” හැර වෙනත් අදහස් නොතිබුණත්, නියමිත වේලාවට අවබෝධයක් ඇති විය.

පියවරෙන් පියවර තත්ත්වය විශ්ලේෂණය කිරීම

ඓතිහාසික සඟරාව. දින කිහිපයකට පෙර, මෙම සේවාදායකයේ 128 GB RAM සහිත විශාල VPS නිර්මාණය කිරීමට අවශ්ය විය. ප්රමාණවත් මතකයක් ඇති බව පෙනෙන්නට තිබුණත්, ආරක්ෂිත පැත්තේ සිටීමට, අපි swap කොටස සඳහා තවත් 32 GB වෙන් කළෙමු. VPS නිර්මාණය කර, එහි කාර්යය සාර්ථකව නිම කරන ලද අතර, සිද්ධිය අමතක විය, නමුත් SWAP කොටස පැවතුනි.

වින්යාස කිරීමේ විශේෂාංග. සියලුම වලාකුළු සේවාදායකයන් සඳහා පරාමිතිය vm.swappiness පෙරනිමියට සකසා ඇත 60. තවද SWAP නිර්මාණය කරන ලද්දේ SAS HDD RAID1 මතය.

සිදුවූයේ කුමක්ද (කර්තෘවරුන්ට අනුව). උපස්ථ කරන විට DD NFS වෙත ලිවීමට පෙර RAM බෆරවල තැන්පත් කරන ලද බොහෝ ලිවීමේ දත්ත නිපදවන ලදී. පද්ධති හරය, ප්‍රතිපත්ති මගින් මඟ පෙන්වනු ලැබේ swappiness, මන්දගාමී HDD RAID1 වෙළුම මත ස්ථානගත වූ swap ප්‍රදේශයට VPS මතකයේ පිටු බොහොමයක් ගෙන යමින් සිටියේය. මෙය IOWAIT ඉතා ශක්තිමත් ලෙස වර්ධනය වීමට හේතු විය, නමුත් IO NVMe නිසා නොව IO HDD RAID1 නිසා.

ගැටලුව විසඳූ ආකාරය. 32GB swap කොටස අක්‍රිය කර ඇත. මෙයට පැය 16ක් ගත විය; SWAP ඉතා සෙමින් ක්‍රියා විරහිත වන්නේ කෙසේද සහ ඇයි යන්න පිළිබඳව ඔබට වෙන වෙනම කියවිය හැක. සැකසුම් වෙනස් කර ඇත swappiness සමාන අගයකට 5 වලාකුළ පුරා.

මෙය සිදු නොවන්නේ කෙසේද?. පළමුව, SWAP SSD RAID හෝ NVMe උපාංගයක තිබුනේ නම් සහ දෙවනුව, NVMe උපාංගයක් නොතිබුනේ නම්, නමුත් එවැනි දත්ත පරිමාවක් නිපදවන්නේ නැති මන්දගාමී උපාංගයක් නම් - උත්ප්‍රාසාත්මක ලෙස, ගැටළුව ඇති වූයේ එම NVMe වේගවත් නිසා ය.

ඊට පසු, සෑම දෙයක්ම පෙර මෙන් වැඩ කිරීමට පටන් ගත්තේය - IOWAIT ශුන්‍ය සමඟ.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න