Hacker News

Zig – io_uring နှင့် Grand Central Dispatch std.Io အကောင်အထည်ဖော်မှုများ ဆင်းသက်လာသည်။

Zig – io_uring နှင့် Grand Central Dispatch std.Io အကောင်အထည်ဖော်မှုများ ဆင်းသက်လာသည်။ ဤစူးစမ်းရှာဖွေမှုသည် io_uring တွင်၎င်း၏အရေးပါမှုနှင့် ဖြစ်နိုင်ခြေရှိသောအကျိုးသက်ရောက်မှုကို ဆန်းစစ်ခြင်းဖြစ်သည်။ အဓိက သဘောတရားများ လွှမ်းခြုံထားသည်။ ဤအကြောင်းအရာကို လေ့လာသည်- အခြေခံမူများနှင့်...

2 min read Via ziglang.org

Mewayz Team

Editorial Team

Hacker News

Zig ၏ စံပြစာကြည့်တိုက်သည် အဓိက မှတ်တိုင်တစ်ခုသို့ ရောက်ရှိသွားသည်- ဇာတိ io_uring နှင့် Grand Central Dispatch (GCD) std.Io အတွက် နောက်ခံများ တရားဝင် ဆင်းသက်လာခဲ့ပြီး၊ စွမ်းဆောင်ရည်မြင့်၊ ပလပ်ဖောင်း-ဇာတိ အညီအညွတ် I/O ကို အလားအလာ အကောင်းဆုံး ခေတ်မီ စနစ်ပရိုဂရမ် ဘာသာစကားတစ်ခုသို့ ယူဆောင်လာပါသည်။ Mewayz နောက်ကွယ်ရှိ 207-module လည်ပတ်မှုစနစ်ကဲ့သို့ မျိုးဆက်သစ်စီးပွားရေးပလပ်ဖောင်းများကို စွမ်းအားပေးသည့် အခြေခံအဆောက်အအုံကို တည်ဆောက်သူများအတွက် - ဤဖွံ့ဖြိုးတိုးတက်မှုသည် backend ထိရောက်မှုနှင့် အတိုင်းအတာ၏ခေတ်သစ်ကို အချက်ပြပါသည်။

io_uring ဆိုတာ ဘာလဲ နှင့် ခေတ်မီ အပလီကေးရှင်းများအတွက် အဘယ်ကြောင့် အရေးကြီးသနည်း။

Linux kernel 5.1 တွင် မိတ်ဆက်ထားပြီး၊ io_uring သည် စွမ်းဆောင်ရည်မြင့် အပြိုင်အဆိုင် I/O အင်တာဖေ့စ်တစ်ခုဖြစ်ပြီး အပလီကေးရှင်းများက လည်ပတ်မှုစနစ်နှင့် မည်သို့အပြန်အလှန်တုံ့ပြန်ပုံတို့ကို အခြေခံကျကျ ပြောင်းလဲပေးသည့် စွမ်းဆောင်ရည်မြင့် asynchronous I/O အင်တာဖေ့စ်တစ်ခုဖြစ်သည်။ သမားရိုးကျ I/O မော်ဒယ်များသည် စာဖတ်ခြင်း သို့မဟုတ် စာရေးခြင်းလုပ်ဆောင်မှုတစ်ခုစီအတွက် တစ်ဦးချင်းစနစ်ခေါ်ဆိုမှုများပြုလုပ်ရန် ပရိုဂရမ်များကို တွန်းအားပေးသည် — တန်ဖိုးကြီးသော အသွားအပြန်ခရီးများသည် အတိုင်းအတာတစ်ခုအထိ စွမ်းဆောင်ရည်ကို ပိတ်ဆို့စေပါသည်။ io_uring သည် ၎င်းကို အသုံးပြုသူနေရာနှင့် kernel အကြား မျှဝေထားသော ring buffer ဖြင့် အစားထိုးပြီး အပလီကေးရှင်းများမှ ထောင်ပေါင်းများစွာသော I/O လုပ်ဆောင်ချက်များကို အနည်းငယ်သာလွန်စေခြင်းဖြင့် အပြီးသတ်နိုင်စေပါသည်။

လက်တွေ့ကျသော အကျိုးသက်ရောက်မှုသည် ကြီးမားသည်။ ဝဘ်ဆာဗာများ၊ ဒေတာဘေ့စ်များနှင့် SaaS ပလပ်ဖောင်းများသည် ထောင်ပေါင်းများစွာသော ပြိုင်တူချိတ်ဆက်မှုများကို ကိုင်တွယ်ဖြေရှင်းနိုင်သည့် CPU overhead နှင့် latency နည်းပါးခြင်းမှ ချက်ချင်းအကျိုးခံစားခွင့်ရှိသည်။ ကွဲပြားသော module 207 ခုရှိ တက်ကြွအသုံးပြုသူ 138,000 ကို ဝန်ဆောင်မှုပေးသည့် ပလပ်ဖောင်းတစ်ခုအတွက် — အစပျိုးသည့်ဖိုင်တစ်ခုစီကို ဖတ်ရှုခြင်း၊ ဒေတာဘေ့စ်မေးမြန်းချက်များနှင့် ကွန်ရက်တောင်းဆိုမှုများ — အမွေအနှစ် I/O နှင့် io_uring အကြား ခြားနားချက်သည် တုံ့ပြန်ချိန်မြှင့်တင်မှုများနှင့် အခြေခံအဆောက်အအုံကုန်ကျစရိတ်လျှော့ချခြင်းသို့ တိုက်ရိုက်ဘာသာပြန်နိုင်သည်။

"io_uring သည် ဆယ်စုနှစ်တစ်ခုအတွင်း Linux I/O တွင် အထင်ရှားဆုံး ထပ်လောင်းတစ်ခုဟု ဆိုနိုင်ပါသည်။ သမားရိုးကျ syscalls များ၏ context-switching overhead ကိုဖယ်ရှားခြင်းဖြင့်၊ ၎င်းသည် အသုံးပြုသူ-space ပရိုဂရမ်များကို ကုန်ကြမ်း hardware ဖြတ်တောက်မှုသို့ ချဉ်းကပ်နိုင်စေသည် — I/O သည် မည်သည့် application အတွက်မဆို game-changer ဖြစ်သည်။"

Grand Central Dispatch သည် Zig std.Io Story နှင့် မည်သို့အံဝင်ခွင်ကျဖြစ်သနည်း။

io_uring သည် Linux သီးသန့်ဖြစ်သော်လည်း Apple ၏ Grand Central Dispatch (GCD) သည် macOS နှင့် iOS တွင် ထိပ်တန်း တွဲဖက်ငွေကြေးနှင့် အလုပ်ပေးပို့ခြင်းဆိုင်ရာ မူဘောင်အဖြစ် ကာလကြာရှည်စွာ ဆောင်ရွက်ခဲ့သည်။ GCD သည် အပ်ဒြပ်ပေါင်းများကို ဆော့ဖ်ဝဲရေးသားသူကိုယ်တိုင် စီမံခန့်ခွဲခြင်းမရှိဘဲ ရရှိနိုင်သော CPU cores များတစ်လျှောက် အကောင်းဆုံးအချိန်ဇယားကို လုပ်ဆောင်နိုင်စေမည့် လည်ပတ်မှုစနစ်အား တန်းစီ-အခြေခံပုံစံသို့ အပ်ဒြပ်ဆွဲစီမံအုပ်ချုပ်မှုပုံစံသို့ ရေးဆွဲပေးပါသည်။

Backend နှစ်ခုလုံးကို စုစည်းထားသည့် std.Io abstraction အောက်တွင် ဆင်းသက်ခြင်းဖြင့် Zig အဖွဲ့သည် အမှန်တကယ်ခက်ခဲသောအရာတစ်ခုကို ရရှိခဲ့သည်- Linux နှင့် Apple ပလပ်ဖောင်းနှစ်ခုစလုံးတွင် မူရင်း၊ idiomatic async primitives များကို စုစည်းပေးသည့် async I/O API မျက်နှာပြင်တစ်ခုတည်းကို ရရှိခဲ့ပါသည်။ ဆိုလိုသည်မှာ std.Io နှင့်ဆန့်ကျင်ပြီး ရေးသားထားသော Zig ပရိုဂရမ်များသည် Linux ဆာဗာများနှင့် macOS ဖွံ့ဖြိုးတိုးတက်ရေးစက်များတွင် io_uring ကို အလိုအလျောက် အသုံးချသည် — အပလီကေးရှင်းကုဒ်တွင် ပလက်ဖောင်းအလိုက် သီးခြားခွဲမထားသော အကိုင်းအခက်ကို သုညဖြင့် ဆိုလိုသည်။

Zig ၏ Async I/O ခရီးစဉ်နောက်ကွယ်ရှိ သမိုင်းဆိုင်ရာ ဆက်စပ်အကြောင်းအရာကား အဘယ်နည်း။

Zig ၏ တည်ငြိမ်သော async ဇာတ်လမ်းဆီသို့ လမ်းကြောင်းသည် သိသိသာသာ ထပ်ခါထပ်ခါ ဖြစ်နေသည်။ ဘာသာစကား၏ အစောပိုင်းဗားရှင်းများတွင် စမ်းသပ်ဆဲ async/await အစီအမံတစ်ခု ပါဝင်ပြီး ဒီဇိုင်းကို အဖွဲ့မှ ပြန်လည်စဉ်းစားပြီး နောက်ပိုင်းတွင် ဖယ်ရှားလိုက်ပါသည်။ ဘာသာစကားသဒ္ဒါတွင် ထည့်သွင်းထားသော သီးခြားတူညီသောငွေကြေးပုံစံကို ကျူးလွန်မည့်အစား Zig core အဖွဲ့သည် စံစာကြည့်တိုက်အဆင့်တွင် I/O abstraction အလွှာကို ရွေးချယ်ခဲ့သည် — ကွဲပြားသော စီမံအုပ်ချုပ်မှုဗျူဟာများဖြင့် ဆက်လက်တည်ရှိနေမည့်တစ်ခုကို ရွေးချယ်ခဲ့သည်။

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →

ဤဒဿနသည် Zig ၏ ပိုမိုကျယ်ပြန့်သော ဒီဇိုင်းကျင့်ဝတ်များနှင့် ကိုက်ညီသည်- လျှို့ဝှက်ထိန်းချုပ်စီးဆင်းမှု၊ ပြတ်သားစွာ ခွဲဝေချထားမှုနှင့် ကြိုတင်မှန်းဆနိုင်သည့် ယန္တရားများ။ std.Io အင်တာဖေ့စ်သည် ကွန်မြူနတီ ဆွေးနွေးငြင်းခုံမှု၊ ပုံတူရိုက်ခြင်းနှင့် လက်တွေ့ကမ္ဘာမှ တုံ့ပြန်ချက် နှစ်ပေါင်းများစွာ၏ အထွတ်အထိပ်ကို ကိုယ်စားပြုသည်။ ဆင်းသက်ခြင်း io_uring နှင့် GCD နောက်ခံများသည် Zig ၏ async ဂေဟစနစ်အတွက် အဆင်သင့်ဖြစ်သော စမ်းသပ်မှုမှ ထုတ်လုပ်ရေးသို့ ကူးပြောင်းခြင်းကို အမှတ်အသားပြုပါသည်။

SaaS နှင့် Business Platform Infrastructure အတွက် လက်တွေ့ကျသောသက်ရောက်မှုများကား အဘယ်နည်း။

များစွာသောငှားရမ်းသူ SaaS ပလပ်ဖောင်းများအတွက် နောက်ခံအခြေခံအဆောက်အအုံကို အဖွဲ့များတည်ဆောက်ခြင်း သို့မဟုတ် အကဲဖြတ်ခြင်းအတွက် Zig io_uring ဇာတ်လမ်းသည် ခိုင်မာသောသက်ရောက်မှုများစွာရှိပါသည်-

  • အခြေခံအဆောက်အအုံကုန်ကျစရိတ်ကို လျှော့ချထားသည်- ဆာဗာတစ်ခုစီအတွက် I/O ဖြတ်တောက်မှု မြင့်မားခြင်းသည် ညီမျှသောဝန်ကို ကိုင်တွယ်ရန် လိုအပ်သော စက်အနည်းငယ်သာဖြစ်ပြီး cloud အသုံးစရိတ်ကို တိုက်ရိုက်အကျိုးသက်ရောက်စေသည်။
  • စကေးဖြင့် ခန့်မှန်းနိုင်သော latency- io_uring ၏ အစုလိုက်အပြုံလိုက် တင်ပြမှုပုံစံသည် မြင့်မားသော တွဲဖက်မှုအောက်တွင် ဖြစ်လေ့ရှိသော latency spikes များကို ချောမွေ့စေပြီး ပလက်ဖောင်းတစ်ခု၏ module များအားလုံးတွင် အသုံးပြုသူအတွေ့အကြုံကို ပိုမိုကောင်းမွန်စေပါသည်။
  • Cross-platform developer tooling- GCD ပံ့ပိုးမှုဖြင့်၊ macOS ပေါ်ရှိ developer များသည် Linux ထုတ်လုပ်မှုဆာဗာများသို့ ဖြန့်ကျက်ထားသည့် တူညီသော I/O logic ကို စက်တွင်းတွင် လုပ်ဆောင်နိုင်သည် — စမ်းသပ်ခြင်းတွင် ရေရှည်ကွာဟချက်ကို ပိတ်စေသည်။
  • အနာဂတ်-သက်သေစနစ်ဒီဇိုင်း- io_uring မွေးစားခြင်းသည် ကပ်လျက်ကိရိယာများ (ဒေတာဘေ့စ်များ၊ ပရောက်စီများ၊ အပြေးအချိန်များ) တွင် ကြီးထွားလာသည်နှင့်အမျှ Zig ၏ မူရင်းပံ့ပိုးမှုမှာ ပိုမိုကျယ်ပြန့်သောခေတ်မီ Linux ဂေဟစနစ်နှင့် ရေးဖွဲ့ရန်အတွက် ကောင်းမွန်သောနေရာဖြစ်သည်။
  • အမှိုက်စုဆောင်းခြင်းမရှိဘဲ မန်မိုရီဘေးကင်းရေး- Zig ၏ ပိုင်ဆိုင်မှုမော်ဒယ်သည် စနစ်အဆင့် ကွန်ရက်ကုဒ်တွင် အသုံးများသည့် bug အမျိုးအစားအားလုံးကို ဖယ်ရှားပေးသည့် ကြားခံစီမံခန့်ခွဲမှုအတွက် io_uring ၏ သုညကော်ပီစွမ်းရည်များနှင့် တွဲထားသည်။

ဤဂေဟစနစ်ပြောင်းလဲလာသည်နှင့်အမျှ Developer များ ကြည့်ရှုသင့်သည့် အနာဂတ်လမ်းကြောင်းများမှာ အဘယ်နည်း။

ဤနောက်ကွယ်မှ ဆင်းသက်ခြင်းသည် အစ၊ အဆုံးမှတ်မဟုတ်ပါ။ တိုးတက်မှုများစွာကို အနီးကပ်စောင့်ကြည့်ရကျိုးနပ်သည်။ ပထမဦးစွာ၊ Zig ဂေဟစနစ်သည် ပိုမိုမြင့်မားသောအဆင့် abstractions များအနီးတွင် ရင့်ကျက်ဆဲဖြစ်သည် — HTTP ဆာဗာများ၊ ဒေတာဘေ့စ်ဒရိုက်ဗာများနှင့် std.Io တွင်တည်ဆောက်ထားသော RPC frameworks များသည် ထုတ်လုပ်မှု SaaS stacks သို့ ဘာသာစကားသည် မည်မျှလျင်မြန်စွာ ရွေ့လျားသည်ကို ဆုံးဖြတ်ပေးမည်ဖြစ်သည်။ ဒုတိယ၊ io_uring ကိုယ်တိုင်က ဆက်လက်တိုးတက်နေပါသည်။ fixed buffersmultishot operations နှင့် kernel-side polling ကဲ့သို့သော အင်္ဂါရပ်များသည် Zig ၏ နောက်ကွယ်မှ အဆင့်ဆင့် ဖော်ထုတ်နိုင်သည့် အပိုစွမ်းဆောင်ရည် headroom ကို ပေးဆောင်ပါသည်။ တတိယ၊ WebAssembly runtimes သည် WASI I/O အင်တာဖေ့စ်များကို ပိုမိုဖော်ထုတ်လာသည်နှင့်အမျှ Zig ၏ abstraction အလွှာသည် ၎င်းအား ထိုပတ်ဝန်းကျင်ကို ပစ်မှတ်ထားရန် နေရာပေးထားပြီး၊ မည်သည့်နေရာမဆို စစ်မှန်စွာရေးနိုင်သည်- တစ်ခါတည်း-လည်ပတ်သည့်စနစ်ကုဒ်များကို ဖွင့်ပေးသည်။

လုပ်ငန်းလည်ပတ်မှု ထိရောက်မှုကို ဦးစားပေးသည့် ပလပ်ဖောင်းများအတွက် — လုပ်ငန်းလည်ပတ်မှုစနစ်တစ်ခုလုံးကို $19–$49/လ စာရင်းသွင်းမှုအဖြစ် ချုံ့ပေးသည့် Mewayz ကဲ့သို့သော အခြေခံအဆောက်အအုံဆိုင်ရာ အဆင့်မြှင့်တင်မှုများ ပေါင်းစပ်ထားသည်။ စနစ်အလွှာရှိ ထိရောက်မှုရရှိမှုတိုင်းသည် ပိုမိုစွမ်းဆောင်နိုင်သော၊ အသုံးပြုသူများနှင့် ပိုမိုကောင်းမွန်သောအနားသတ်များအတွက် headroom သို့ ဘာသာပြန်ပေးပါသည်။

အမေးများသောမေးခွန်းများ

ယနေ့ io_uring ကို ထုတ်လုပ်မှုပတ်ဝန်းကျင်တွင် အသုံးပြုရန် ဘေးကင်းပါသလား။

ဟုတ်ကဲ့။ io_uring ကို Linux kernel 5.1 (2019) ကတည်းက ရရှိထားပြီး ယခုအခါ ထုတ်လုပ်အသုံးပြုမှုအတွက် တည်ငြိမ်သည်ဟု ယူဆပါသည်။ Redis၊ RocksDB နှင့် စွမ်းဆောင်ရည်မြင့် ကွန်ရက်ဆာဗာများ အပါအဝင် အဓိက ပရောဂျက်များကို လက်ခံကျင့်သုံးခဲ့သည်။ Zig အကောင်အထည်ဖော်မှုသည် တူညီသော kernel အင်တာဖေ့စ်များကို လိုက်နာပြီး အင်္ဂါရပ်အပြည့်အစုံအတွက် kernel 5.6 သို့မဟုတ် နောက်ပိုင်းတွင် အသုံးပြုနေသည့် ခေတ်မီ Linux ဖြန့်ဝေမှုများတွင် ထုတ်လုပ်မှုအလုပ်များများအတွက် သင့်လျော်ပါသည်။

std.Io နောက်ခံဖိုင်များကို အသုံးပြုရန် ရှိပြီးသား Zig ကုဒ်ကို ပြန်ရေးရန် လိုအပ်ပါသလား။

ထူးခြားသော ပြန်လည်ရေးသားမှုများ မလိုအပ်ပါ။ std.Io အင်တာဖေ့စ်ကို တည်ငြိမ်သော abstraction အလွှာအဖြစ် ဒီဇိုင်းထုတ်ထားသည် — ၎င်းနှင့်ဆန့်ကျင်ဘက်ရေးသားထားသော အပလီကေးရှင်းကုဒ်သည် compile ပစ်မှတ်အပေါ်အခြေခံထားသော io_uring သို့မဟုတ် GCD နောက်ခံမှ အလိုအလျောက်အကျိုးဖြစ်ထွန်းစေမည်ဖြစ်သည်။ အဓိက ရွှေ့ပြောင်းခြင်း ကြိုးပမ်းမှုတွင် အဆိုပါ နောက်ခံများ ပါဝင်သော လက်ရှိ Zig toolchain ဗားရှင်းသို့ အပ်ဒိတ်လုပ်ခြင်းနှင့် ယခင်က ပလက်ဖောင်းအလိုက် I/O syscalls များကို တိုက်ရိုက်အသုံးပြုခဲ့သည့် မည်သည့်ကုဒ်ကိုမဆို ချိန်ညှိခြင်းတို့ ပါဝင်ပါသည်။

၎င်းသည် Rust's Tokio သို့မဟုတ် Go ၏ runtime ရှိ async I/O နှင့် မည်သို့နှိုင်းယှဉ်သနည်း။

Linux ရှိ Tokio သည် epoll ကိုအသုံးပြုသည့် မူရင်း Tokio runtime နှင့် သီးခြားရှိနေသော်လည်း tokio-uring crate မှတဆင့် io_uring ကို အသုံးပြုပါသည်။ Go ၏ runtime သည် epol-based I/O ဖြင့် ၎င်း၏ကိုယ်ပိုင်အချိန်ဇယားကို အသုံးပြုသည်။ Zig ၏ချဉ်းကပ်ပုံမှာ std.Io သည် API အဆင့်တွင် တစ်ပြိုင်တည်းခံစားရခြင်းတွင် ကွဲပြားသည် — async/await syntax မရှိကြောင်း — ဘောင်အောက်ရှိ မူရင်း async primitives သို့ ပေးပို့နေဆဲဖြစ်သည်။ ၎င်းသည် ဖတ်ရှုနိုင်မှုကို ထိန်းသိမ်းထားပြီး အက်ဆစ်ကုဒ်ဘေ့စ်များကို ရှုပ်ထွေးစေသည့် "ရောင်စုံလုပ်ဆောင်ချက်" ပြဿနာကို ရှောင်ရှားသည်။


သင်သည် သင်၏နောက်ထပ်အခြေခံအဆောက်အအုံပရောဂျက်အတွက် စနစ်ပရိုဂရမ်ဘာသာစကားများကို အကဲဖြတ်နေသည့် developer တစ်ဦးဖြစ်စေ သို့မဟုတ် ထိရောက်၍ အရွယ်အစားကြီးမားနိုင်သော နည်းပညာဖြင့် တည်ဆောက်ထားသော ပလပ်ဖောင်းများကို ရှာဖွေနေသည့် လုပ်ငန်းပိုင်ရှင်ဖြစ်စေ Zig ကဲ့သို့သော ကိရိယာများ၏ လမ်းကြောင်းသည် စွမ်းဆောင်ရည်-ပထမဆော့ဖ်ဝဲဒီဇိုင်းဆီသို့ ပိုမိုကျယ်ပြန့်သော ပြောင်းလဲမှုကို ထင်ဟပ်စေသည်။ Mewayz သည် ဤတူညီသောမူအရ တည်ဆောက်ထားသည် — တူညီသောကိရိယာများကို တစ်ဦးချင်းတပ်ဆင်ခြင်းကုန်ကျစရိတ်၏တစ်စိတ်တစ်ပိုင်းဖြင့် သုံးစွဲသူပေါင်း 138,000 ကျော်ထံ 207 ပေါင်းစပ်စီးပွားရေးဆိုင်ရာ module များကို ပေးအပ်သည်။ CRM နှင့် ခွဲခြမ်းစိတ်ဖြာချက်များမှ link-in-bio နှင့် သင်တန်းပေးပို့ခြင်းအထိ၊ လုပ်ငန်း OS တစ်ခုလုံးကို တစ်လလျှင် $19 မှစတင်၍ ရနိုင်ပါသည်။ app.mewayz.com တွင် သင်၏ အခမဲ့ အစမ်းသုံးမှုကို စတင်ပြီး ခေတ်မီပြီး ထိရောက်သော ပလက်ဖောင်းဒီဇိုင်းကို လက်တွေ့တွင် မြင်တွေ့ခံစားလိုက်ပါ။