کسب و کار پر رونق می خواهید؟ روی سرور مجازی تمرکز کنید!

این نیاز به محاسبه مصرف سوخت را از بین می برد (که تقریباً به اندازه خود محاسبات اصلی Wasm گران است) و به روز رسانی های مکرر تعداد در حافظه را حذف می کند. من نمی‌خواهم برای چیز مهمی مانند ایجاد یک حساب کاربری یا ایجاد یک وبلاگ جدید به هیچ چیز دیگری وابسته باشم. به عنوان مثال، ساختارهای Linker و InstancePre به کاربر Wasmtime این امکان را می‌دهند که صریحاً وضوح واردات و بررسی تایپ را از قبل انجام دهد، که در بسیاری از موارد مستهلک شده است. ما یک "تخصیص دهنده نمونه" را در Wasmtime پیاده سازی کردیم که از این تکنیک کپی روی نوشتن (CoW) برای نمونه های بسیار سریع استفاده می کند. بنابراین، نمونه سازی بسیار سریع ماژول یک نیاز کلیدی برای ماشین مجازی Wasm مانند Wasmtime است. سلژیلین، دارویی که برای درمان بیماری پارکینسون استفاده می‌شود، بسیار محبوب است، زیرا مانند محرک‌ها، خلق و خو و انگیزه را افزایش می‌دهد. سیستم عامل های تولیدی مانند هسته لینوکس و همچنین macOS و Windows به این روش کار می کنند.

با دانستن آنچه من می دانم (که بسیار بیشتر از میانگین شرکت کنندگان یا حتی اکثر کارکنان CNCF است)، سخنرانی اصلی ون جونز مانند لباس پوشیدن جامعه برای واکنش به مشکلات خودساخته CNCF بود. استفاده از شخصی که در زمان پرزیدنت اوباما خدمت کردم، ون جونز، برای صحبت در مورد چیزی که آقای جونز تصویر کاملی از آن نداشت. به نظر می رسد که این باعث می شود اجرای SpiderMonkey.wasm تقریباً دو برابر سریعتر از زمان استفاده از قطع سوخت باشد. یکی از مسائلی که ممکن است یک کاربر Wasmtime در چنین شرایطی داشته باشد این است که چگونه زمان اجرای برنامه Wasm را محدود کند. به عنوان مثال، ما متوجه شدیم که وقتی هزاران ماژول Wasm (هر کدام با ابرداده DWARF خود) در یک فرآیند بارگذاری می‌شوند، سیستم بازگشایی عملکرد ضعیفی دارد. VM باید "واردات تابع" یا توانایی فراخوانی توابع از ماژول های دیگر یا زمینه جاسازی (برنامه ای که Wasmtime را تعبیه می کند) ارائه دهد. داده‌ها همچنان مستقیماً از طریق شبکه TCP/IP زیربنایی مبادله می‌شوند، اما در لایه برنامه، همتایان می‌توانند مستقیماً از طریق پیوندهای همپوشانی منطقی (که هر کدام مربوط به مسیری از طریق شبکه فیزیکی زیربنایی است) با یکدیگر ارتباط برقرار کنند.

به همین دلیل است که نمونه سازی بدون کپی کردن چیزی هنوز یک رویکرد صحیح است. سیترون می‌گوید که هنوز در حال مذاکره با چندین خریدار بالقوه از جمله تمام تولیدکنندگان بزرگ کنسول‌های بازی هستند. دیسک های کوچک گران تر از اندازه استاندارد هستند و در همه درایوها کار نمی کنند. و تعداد کمی دیگر نیز وجود دارد. همانطور که در جدول 3.2 نشان داده شده است، این یک چالش بود، زیرا بخش قابل توجهی از مشارکت کنندگان IndieWeb سفیدپوست، مرد هستند و در آمریکای شمالی یا سایر مناطق غربی مستقر هستند. برخی از اصول IndieWeb نتیجه گرا هستند، منظور من از آنها به اهدافی اشاره دارد که باید به عنوان نتیجه ساخت و استفاده از یک سایت IndieWeb به دست آیند. همچنین جزئیاتی در مورد یک چارچوب برنامه کاربردی جدید برای ویندوز 8 با نام رمز "Jupiter" ظاهر شد، که برای ساخت برنامه های "غوطه ور" با استفاده از XAML (مانند Windows Phone و Silverlight) استفاده می شود که می تواند از طریق یک سیستم بسته بندی جدید و یک شایعه توزیع شود. فروشگاه اپلیکیشن توافقنامه مجوز نرم افزار ویندوز برای مجوزهای از پیش بارگذاری شده به نرم افزار اجازه می دهد تا در صورتی که کاربر مایل به استفاده از آن نباشد، برای بازپرداخت به OEM "برگردانده شود".

به عبارت دیگر، این یک ساختار نرم افزاری است که در حافظه فعال یک میزبان Hyper-V کار می کند که عملکرد سوئیچینگ فریم اترنت را انجام می دهد. اما در حال حاضر، این رویکرد مبتنی بر حافظه مجازی در مقایسه با مقداردهی اولیه حافظه صریح قبلی بسیار سریع است. اکنون که ما برنامه Wasm را راه اندازی کرده ایم، باید به آن کمک کنیم تا با برنامه های ابتدایی زمان اجرا سریع، در سریع ترین زمان ممکن اجرا شود! درعوض، یک مقدار منفرد که به ندرت تغییر می‌کند را می‌توان یک بار توسط یک رشته بیدار دوره‌ای لمس کرد و این یک وقفه را برای همه رشته‌های کارگر در کد Wasm "پخش" می‌کند. این نوعی ابرداده است که توضیح می‌دهد که کد کامپایل‌شده در هر نقطه‌ای مقادیری را روی پشته قرار می‌دهد. با استفاده از این ابرداده، Wasmtime "unwinder" می‌تواند وضعیت برنامه را مهندسی معکوس کند: فریم پشته یک فراخوانی تابع فعال را در یک زمان درک می‌کند، در نهایت متوجه می‌شود چه کسی آن را فراخوانی کرده و پشته را تکرار می‌کند تا زمانی که به ورودی اولیه برسد. واسم برای انجام این کار، نیاز به روشی برای ردیابی حالت "هنوز مقداردهی اولیه" و متمایز کردن آن از حالت عادی در زمان اجرا است، و سپس باید این مورد را بررسی کرده و مقداردهی اولیه را با یک دانه بندی خوب – برای یک مورد – انجام دهید. درست قبل از استفاده از آن

در نتیجه همه این کارها، زمان نمونه گیری SpiderMonkey. wasm از حدود 2 میلی ثانیه (تولید اولیه مشتاقانه تمام هیپ و سایر ساختارهای داده) به 5 میکروثانیه یا 400 برابر سریعتر رسید. پس از ساختن پیاده‌سازی اولیه کپی روی نوشتن در بالا، بعد متوجه شدیم که زمان اجرا Wasmtime زمان قابل توجهی را صرف مقداردهی اولیه ساختارهای داده قبل از شروع به اجرای کد Wasm کامپایل‌شده می‌کند. به طور کلی، می‌توانیم کیفیت کد تولید شده را با پیاده‌سازی پاس‌های بهینه‌سازی بیشتر، تنظیم قوانین انتخاب دستورالعمل در صورت نیاز، و بهبود الگوریتم‌های اصلی مانند تخصیص ثبت برای پشتیبانی از روش‌های اکتشافی و رویکردهای پیشرفته‌تر، بهبود بخشیم. ما از میزبانی وب ابری، میزبانی سرور ابری پشتیبانی می کنیم و خدمات میزبانی اختصاصی را با نرخ مقرون به صرفه ارائه می دهیم. از تمرین‌کنندگان در مورد دام‌هایی که باید اجتناب کنید و بهترین روش‌ها در مورد نحوه استفاده از Argo در محیط ابری خود بیاموزید.

این راه‌حل‌های میزبانی ابری مناسب برای کسب‌وکارهای کوچک همان چیزی است که ما در این جمع‌بندی بر روی آن تمرکز کرده‌ایم. اگر نمی‌توانید با محدودیت‌های عملکردی در این زمینه زندگی کنید، مجبور می‌شوید به نسخه Enterprise و استفاده از یک مشتری بومی متوسل شوید. برای نمونه آزمایشی چند مگابایتی که از آن استفاده می‌کردیم (نسخه‌ای از موتور SpiderMonkey JS که در Wasm کامپایل شده بود)، مقداردهی اولیه شامل نوشتن ده‌ها مگابایت بود. پس از استفاده از ترفندهای حافظه مجازی مانند بالا، به صدها کیلوبایت رسیدیم. بنابراین زمان صرف شده برای پر کردن این حالت – در برخی موارد، صدها کیلوبایت حافظه، با مقداری کار برای محاسبه هر کلمه یا ساختار جداگانه – عمدتاً تلف می شود. بنابراین، به خصوص هنگام اجرای کدهای نامعتبر، برای کاربر Wasmtime مهم است که راهی برای به دست آوردن مجدد کنترل پس از یک محدودیت زمانی مشخص ایجاد کند. در دسامبر 2011، آمازون به دلیل اجرای یک معامله یک روزه برای تبلیغ برنامه جدید بررسی قیمت خود، با واکنش شدید مشاغل کوچک مواجه شد. در جوایز انتخاب توسعه دهندگان بازی 2011، Minecraft جوایزی را در دسته های بهترین بازی اولیه، بهترین بازی قابل دانلود و جایزه نوآوری به دست آورد و هر جایزه ای را که نامزد آن شده بود، برد.

شامل مفیدترین عواملی است که باید هنگام انتخاب در نظر بگیرید – پیچیدگی استفاده، رایگان/پرداخت، ادغام ها، ابزارهای ویرایش و موارد دیگر. مک نامارا گفت که به چشم‌انداز رشد AMD در شرکت‌ها اطمینان دارد، زیرا این شرکت در حال ایجاد اعتماد با مدیران ارشد فناوری در شرکت‌های بزرگ، از جمله آن‌هایی که در Fortune 500 هستند، در حال صحبت با سازنده تراشه در مورد اهداف زیرساخت مرکز داده خود برای سه تا پنج سال آینده هستند. یک آدرس ایمیل تماس برای سرور نیز می تواند وارد شود – در حالت ایده آل باید آدرس موجود شخصی باشد که سرور را در دامنه دیگری مدیریت می کند. رایانه‌های مدرن از حافظه مجازی استفاده می‌کنند: یک نمای انتزاعی از حافظه که به سیستم عامل اجازه می‌دهد یک نمای «مجازی» از فضای آدرس را از بخش‌های فیزیکی مختلف بسازد و محتوای یک «صفحه» حافظه واحد را بارگیری یا تولید کند (یک واحد کوچک، معمولاً 4 تا 16 کیلو بایت) زمانی که برای اولین بار به آن دسترسی پیدا می شود. اما حافظه مجازی به ما امکان می دهد از تکنیکی به نام "کپی در نوشتن" نیز استفاده کنیم. کنترل فرآیند باز کردن خودمان به ما امکان می دهد این مسائل را حل کنیم.

ما چنین مسائلی را در چندین پلتفرم داشته ایم. دوم، کتابخانه سیستمی که معمولاً برای راه رفتن یک پشته با ابرداده DWARF استفاده می‌شود، به عنوان libunwind شناخته می‌شود، و اگرچه به طور گسترده استفاده می‌شود و به طور کلی قابل اعتماد است، اما مشکلات مقیاس‌پذیری قابل توجهی دارد. چشمگیرترین برد شاید پیاده روی سریع پشته باشد. طبق معیارها، این تغییر سرعت راه رفتن روی پشته را بین 64 تا 99 افزایش داد. 95٪ بسته به موقعیت، و به طور کامل بدترین حالت درجه دوم و سایر مسائل بالقوه شناخته شده یا ناشناخته مربوط به تکیه بر libunwind و ابرداده های پیچیده آن را حذف کرد. ایده کلیدی این است که از آنجایی که می توانیم (i) صفحه فیزیکی را که یک صفحه مجازی حافظه به آن اشاره دارد تغییر دهیم و (ب) مجوزهایی مانند حفاظت فقط خواندنی را اعمال کنیم، می توانیم یک کپی از "وضعیت اولیه" را در اطراف نگه داریم و با تنظیم نگاشتهای فقط خواندنی در این یک نسخه، یک پشته Wasm جدید ایجاد کنید.

این مکانیزمی است که توسط آن کد Wasm کامپایل شده با کدی که «عملیات» را شمارش می‌کند، افزایش می‌یابد، این تعداد فعلی را با یک محدودیت بررسی می‌کند و در صورت تجاوز از حد، به حلقه تماس گیرنده یا رویداد باز می‌گردد. سوخت مکانیزم موثری است، اما سنگین وزن است: نیاز به افزودن هر قطعه کد با «شمارش»، و ذخیره مکرر آن شمارش در حافظه و بررسی آن دارد. این بهینه سازی بخش بزرگ دیگری از کار انجام شده در زمان نمونه سازی یک ماژول بزرگ Wasm را حذف کرد. ما از Cranelift برای کامپایل Wasm bytecode به کد ماشین بومی استفاده می کنیم که رایانه می تواند مستقیماً آن را اجرا کند. با کامپایل استاندارد بایت کد Wasm به کد ماشین بومی، یک حلقه در Wasm به حلقه ای در کد کامپایل شده تبدیل می شود و هر تعداد تکرار را بدون محدودیت اجرا می کند.

با توجه به مشخصات Wasm، پشته Wasm باید طوری رفتار کند که انگار یک کپی جداگانه است. بنابراین Wasmtime باید راهی برای قطع اجرای Wasm در یک نقطه خاص ارائه دهد. در حالی که بیشتر زمان CPU در طول اجرای Wasm معمولاً در خود برنامه Wasm یا در "hostcalls" که فراخوانی می کند (که کدهایی هستند که کاربر Wasmtime به Wasmtime وصل می کند و ما مستقیما آنها را کنترل نمی کنیم) صرف می شود. بخش هایی از خود Wasmtime که در موارد خاصی باید اجرا شوند. این بیت های کد همان چیزی است که ما آن را "VM Runtime" می نامیم. ماشین های مجازی مهمان به طور منطقی از هایپروایزر و ماشین های مجازی دیگر جدا هستند. Microsoft Hyper-V دارای خدمات یکپارچه سازی داخلی برای سیستم عامل های مهمان (OS) متعددی است که از آنها پشتیبانی می کند. پردازنده شامل سخت‌افزاری است که بدون هزینه اضافی قابل‌توجه به ما این توانایی نقشه‌برداری مجدد را می‌دهد، و بنابراین یافتن راه‌هایی برای استفاده از «ترفندهای حافظه مجازی» اغلب بهترین راه برای پیاده‌سازی رفتار پیچیده با حافظه است. 24/7 با مطمئن ترین سخت افزار و اتصالات شبکه.

اگر شما هر گونه سوالی در رابطه با کجا و نحوه استفاده از سرور مجازی دارید، می توانید با ما در صفحه وب تماس بگیرید.

Izaiah Harrison

سازمان دهنده کل مبشر موسیقی شیطانی. گیک قهوه. خالق برنده جایزه متعصب الکل مزاحم عمومی

تماس با ما