Facebook ၏ Memory Management Method အသစ်

လူမှုကွန်ရက်ဖွံ့ဖြိုးတိုးတက်ရေးအဖွဲ့၏ အဖွဲ့ဝင်တစ်ဦးဖြစ်သည်။ Facebook က, Roman Gushchinဆော့ဖ်ဝဲရေးသားသူမေးလ်ပို့စာရင်းတွင် အဆိုပြုထားသည့် အစုတစ်ခု Linux kernel ဖာထေးမှုများMemory Management Controller အသစ်ကို အကောင်အထည်ဖော်ခြင်းဖြင့် Memory Management ကို ပိုမိုကောင်းမွန်စေရန် ရည်ရွယ်သည်- slab (slab memory controller).

slab ဖြန့်ချီရေး မှတ်ဉာဏ်ကို ပိုမိုထိရောက်စွာခွဲဝေပေးပြီး သိသာထင်ရှားသော အကွဲအပြဲများကိုဖယ်ရှားပစ်ရန် ဒီဇိုင်းထုတ်ထားသည့် memory management ယန္တရားတစ်ခုဖြစ်သည်။ ဤအယ်လဂိုရီသမ်၏ အခြေခံမှာ အမျိုးအစားတစ်ခု၏ အရာဝတ္ထုတစ်ခုပါရှိသော ခွဲဝေသတ်မှတ်မှတ်ဉာဏ်ကို သိမ်းဆည်းရန်နှင့် အမျိုးအစားတူအရာဝတ္ထုတစ်ခုအတွက် ခွဲဝေချထားပေးသည့်အချိန်၌ ထိုမှတ်ဉာဏ်ကို ပြန်လည်အသုံးပြုရန်ဖြစ်သည်။ ဤနည်းပညာကို SunOS တွင် ပထမဦးစွာ Jeff Bonwick မှမိတ်ဆက်ပေးခဲ့ပြီး ယခုအခါ FreeBSD နှင့် Linux အပါအဝင် Unix လည်ပတ်မှုစနစ်များစွာ၏ kernels များတွင် တွင်ကျယ်စွာအသုံးပြုလျက်ရှိသည်။

ထိန်းချုပ်သူအသစ်သည် cgroup တစ်ခုစီအတွက် သီးခြား cache တစ်ခုကို ခွဲဝေပေးမည့်အစား slab page တစ်ခုစီကို မတူညီသော cgroup များတွင် မျှဝေနိုင်စေသည့် memory page အဆင့်မှ kernel object အဆင့်သို့ slab အကောင့်ကို ရွှေ့ခြင်းအပေါ် အခြေခံထားသည်။

စမ်းသပ်မှုရလဒ်များကို အခြေခံ၍ အဆိုပြုထားသည့် မှတ်ဉာဏ်စီမံခန့်ခွဲမှုနည်းလမ်းကို တိုးမြှင့်ခွင့်ပြုကြောင်း အောက်ပါအတိုင်း ဖော်ပြထားသည်။ ထိရောက်မှု slab ကို အသုံးပြု 45 ဖို့%နှင့် OS kernel ၏ အလုံးစုံမှတ်ဉာဏ်သုံးစွဲမှုကိုလည်း လျှော့ချပေးမည်ဖြစ်သည်။ ထို့အပြင်၊ slab အတွက် ခွဲဝေပေးထားသော စာမျက်နှာအရေအတွက်ကို လျှော့ချခြင်းဖြင့်၊ စနစ်၏ စွမ်းဆောင်ရည်ကို ထိခိုက်စေရုံသာမက မှတ်ဉာဏ်အပိုင်းပိုင်း တစ်ခုလုံးကိုပါ လျှော့ချနိုင်မည်ဖြစ်သည်။

ထိန်းချုပ်ကိရိယာအသစ်ကို ထုတ်လုပ်သည့် Facebook ဆာဗာများတွင် လအတော်ကြာ စမ်းသပ်ခဲ့ပြီး ယခုအချိန်အထိ ဤစမ်းသပ်မှုကို အောင်မြင်သည်ဟု ခေါ်ဆိုနိုင်သည်- စွမ်းဆောင်ရည် ဆုံးရှုံးမှုမရှိသည့်အပြင် အမှားအယွင်းအရေအတွက် တိုးလာခြင်းမရှိသဖြင့် မှတ်ဉာဏ်သုံးစွဲမှု သိသိသာသာ ကျဆင်းသွားသည်ကို သတိပြုမိခဲ့သည်- အချို့သောသူများ၊ ဆာဗာများ 1GB အထိ။ ဤကိန်းဂဏန်းသည် အတ္တဆန်သည်၊ ဥပမာ၊ အစောပိုင်း စမ်းသပ်မှုများတွင် အနည်းငယ်နိမ့်သော ရလဒ်များကို ပြသခဲ့သည်-

  • ဝဘ်ရှေ့တန်းတွင် 650-700 MB
  • ဒေတာဘေ့စ် cache ပါရှိသော ဆာဗာတွင် 750-800 MB
  • DNS ဆာဗာတွင် 700 MB

>>> GitHub ရှိ စာရေးသူ၏ စာမျက်နှာ


>>> အစောပိုင်းစမ်းသပ်မှုရလဒ်များ

source: linux.org.ru

မှတ်ချက် Add