Cloudflare වෙතින් සංවර්ධකයින්
CDN හි අන්තර්ගතය හැඹිලි කිරීමට භාවිතා කරන ගබඩා උපාංගවල දත්ත සංකේතනය කිරීමට Cloudflare dm-crypt භාවිතා කරයි. Dm-crypt බ්ලොක් උපාංග මට්ටමින් ක්රියා කරන අතර I/O ඉල්ලීම් ලිවීම සංකේතනය කරයි සහ කියවීමේ ඉල්ලීම් විකේතනය කරයි, බ්ලොක් උපාංගය සහ ගොනු පද්ධති ධාවකය අතර ස්ථරයක් ලෙස ක්රියා කරයි.
පැකේජය භාවිතයෙන් dm-crypt හි කාර්ය සාධනය ඇගයීමට
මුලදී, කර්නල් ගුප්තකේතන පද්ධතියේ අකාර්යක්ෂම ඇල්ගොරිතම භාවිතය පිළිබඳ සැකය මතු විය. නමුත් පරීක්ෂණ සඳහා භාවිතා කරන ලද්දේ වේගවත්ම ඇල්ගොරිතමයක් වන aes-xts, සංකේතාංකන යතුරු 256ක් සමඟින්, "cryptsetup මිණුම් ලකුණ" ධාවනය කිරීමේදී එහි ක්රියාකාරීත්වය RAM තැටියක් පරීක්ෂා කිරීමේදී ලැබෙන ප්රතිඵලය මෙන් දෙගුණයකටත් වඩා ඉහළ අගයක් ගනී. කාර්ය සාධනය සුසර කිරීම සඳහා dm-crypt ධජ සමඟ අත්හදා බැලීම් ප්රතිඵල ලබා දුන්නේ නැත: “--perf-same_cpu_crypt” ධජය භාවිතා කරන විට, කාර්ය සාධනය 136 MB/s දක්වා අඩු වූ අතර, “--perf-submit_from_crypt_cpus” ධජය සඳහන් කිරීමේදී එය වැඩි වූයේ පමණි. 166 MB/s දක්වා.
මෙහෙයුම් තර්කනය පිළිබඳ ගැඹුරු විශ්ලේෂණයකින් පෙන්නුම් කළේ dm-crypt පෙනෙන තරම් සරල නොවන බවයි - FS ධාවකයෙන් ලිවීමේ ඉල්ලීමක් පැමිණි විට, dm-crypt එය වහාම ක්රියා නොකරයි, නමුත් එය “kcryptd” පෝලිමේ තබයි. එය වහාම විග්රහ නොකරයි, නමුත් පහසු මොහොතක. පෝලිමේ සිට, සංකේතනය කිරීමට ඉල්ලීම Linux Crypto API වෙත යවනු ලැබේ. නමුත් Crypto API අසමමුහුර්ත ක්රියාත්මක කිරීමේ ආකෘතියක් භාවිතා කරන බැවින්, සංකේතනය ද ක්ෂණිකව සිදු නොකෙරේ, නමුත් වෙනත් පෝලිමක් මග හැරීම. සංකේතනය සම්පූර්ණ වූ පසු, dm-crypt විසින් සෙවුම් ගසක් භාවිතයෙන් අපේක්ෂිත ලිවීමේ ඉල්ලීම් වර්ග කිරීමට උත්සාහ කළ හැක.
කියවන විට, dm-crypt පළමුව ධාවකයෙන් දත්ත ලබා ගැනීම සඳහා "kcryptd_io" පෝලිමට ඉල්ලීමක් එක් කරයි. ටික වේලාවකට පසු, දත්ත ලබා ගත හැකි අතර විකේතනය සඳහා "kcryptd" පෝලිමේ තබා ඇත.
Kcryptd Linux Crypto API වෙත ඉල්ලීමක් යවයි, එය තොරතුරු අසමමුහුර්තව විකේතනය කරයි. ඉල්ලීම් සෑම විටම සියලුම පෝලිම් හරහා නොයනු ඇත, නමුත් නරකම අවස්ථාවෙහිදී, ලිවීමේ ඉල්ලීමක් 4 වතාවක් දක්වා පෝලිම්වල අවසන් වන අතර, කියවීමේ ඉල්ලීම 3 වතාවක් දක්වා අවසන් වේ. පෝලිමේ සෑම පහරක්ම ප්රමාදයන් ඇති කරයි, එය dm-crypt කාර්ය සාධනයේ සැලකිය යුතු අඩුවීමක් සඳහා ප්රධාන හේතුව වේ.
පෝලිම් භාවිතා කිරීම බාධා කිරීම් සිදු වන තත්වයන් තුළ වැඩ කිරීමේ අවශ්යතාව නිසාය. 2005 දී, dm-crypt හි වත්මන් පෝලිම් මත පදනම් වූ මෙහෙයුම් ආකෘතිය ක්රියාත්මක කරන විට, Crypto API තවමත් අසමමිතික නොවීය. Crypto API අසමමුහුර්ත ක්රියාත්මක කිරීමේ ආකෘතියකට මාරු කිරීමෙන් පසුව, අත්යවශ්යයෙන්ම ද්විත්ව ආරක්ෂණය භාවිතා කිරීමට පටන් ගත්තේය. කර්නල් තොගයේ පරිභෝජනය ඉතිරි කර ගැනීම සඳහා පෝලිම් ද හඳුන්වා දෙන ලදී, නමුත් 2014 දී එහි වැඩිවීමෙන් පසුව, මෙම ප්රශස්තකරණයන් ඒවායේ අදාළත්වය නැති විය. ඉල්ලීම් විශාල සංඛ්යාවක් පැමිණෙන විට මතකය වෙන් කිරීම සඳහා රැඳී සිටීමේ ප්රතිඵලයක් ලෙස බාධා මඟහරවා ගැනීම සඳහා අතිරේක පෝලිමක් "kcryptd_io" හඳුන්වා දෙන ලදී. 2015 දී, බහු ප්රොසෙසර් පද්ධතිවල සංකේතාංකන ඉල්ලීම් ක්රියා විරහිතව සම්පූර්ණ කළ හැකි බැවින් අමතර වර්ග කිරීමේ අදියරක් හඳුන්වා දෙන ලදී (තැටියට අනුක්රමික ප්රවේශය වෙනුවට, ප්රවේශය අහඹු අනුපිළිවෙලින් සිදු කරන ලද අතර CFQ උපලේඛකය කාර්යක්ෂමව ක්රියා කළේ නැත). දැනට, SSD ධාවක භාවිතා කරන විට, වර්ග කිරීම එහි අර්ථය නැති වී ඇති අතර, CFQ උපලේඛනය කර්නලය තුළ තවදුරටත් භාවිතා නොවේ.
නවීන ධාවක වේගවත් හා දක්ෂ වී ඇති බව සලකන විට, ලිනක්ස් කර්නලයේ සම්පත් බෙදා හැරීමේ පද්ධතිය සංශෝධනය කර ඇති අතර සමහර උප පද්ධති ප්රතිනිර්මාණය කර ඇත, Cloudflare ඉංජිනේරුවන්
ප්රතිඵලයක් වශයෙන්, RAM තැටියක් පරීක්ෂා කිරීමේදී, dm-crypt කාර්ය සාධනය දෙගුණයකට වඩා වැඩි කිරීමට හැකි විය - කාර්ය සාධනය 294 MB/s (2 x 147 MB/s) සිට 640 MB/s දක්වා වැඩි විය, එය ඉතා සමීප වේ. හිස් සංකේතාංකනයේ කාර්ය සාධනය (696 MB /s).
සැබෑ සේවාදායකයන් මත පැටවීම පරීක්ෂා කිරීමේදී, නව ක්රියාත්මක කිරීම සංකේතනයකින් තොරව ක්රියාත්මක වන වින්යාසයට ඉතා ආසන්න කාර්ය සාධනයක් පෙන්නුම් කළ අතර, Cloudflare හැඹිලිය සහිත සේවාදායකයන් මත සංකේතනය කිරීම ප්රතිචාර දැක්වීමේ වේගය කෙරෙහි බලපෑමක් ඇති කළේ නැත. අනාගතයේදී, Cloudflare සකස් කළ පැච් ප්රධාන ලිනක්ස් කර්නලයට මාරු කිරීමට සැලසුම් කරයි, නමුත් ඊට පෙර ඒවා නැවත සකස් කිරීමට අවශ්ය වනු ඇත, මන්ද ඒවා නිශ්චිත බරක් සඳහා ප්රශස්ත කර ඇති අතර යෙදුමේ සියලුම ක්ෂේත්ර ආවරණය නොකරන බැවිනි, උදාහරණයක් ලෙස, අඩු සංකේතනය -බලය කාවැද්දූ උපාංග.
මූලාශ්රය: opennet.ru