برنامه نویسی

محدود کردن استفاده از حافظه Docker در ویندوز

به عنوان یک توسعه دهنده وردپرس، استفاده کردم XAMPP برای مدت طولانی، اما به دلایل زیادی، برخی از آنها را می توانید در این مقاله دیگر مشاهده کنید: چرا من از XAMPP به Docker تغییر کردم، تصمیم گرفتم به یک محیط داکر.

به نظر می رسد، علاوه بر منحنی یادگیری با Docker، و همه چیزهای دیگر، مشکل دیگری پیش آمد. دستگاه ویندوز ضعیف من به دلیل تلاش برای اجرای سایر فرآیندها مانند فایرفاکس و VS Code کند شده است. اساساً کار کردن غیرممکن بود.

وقتی WSL 2 در حال اجرا بود، Task Manager را باز کردم و متوجه شدم که فرآیند نامگذاری شده است vmmem بخش قابل توجهی از حافظه‌ام را جذب می‌کرد و سرعت دستگاهم را کاهش می‌داد و هر کار دیگری را غیرممکن می‌کرد.

vmmem چیست؟

vmmem فرآیندی است که تمام منابع مصرف شده توسط VM لینوکس شما را در حین اجرای WSL نشان می دهد. طبق مستندات مایکروسافت، مقدار RAM که به WSL اختصاص می‌یابد به شماره ساخت ویندوز شما بستگی دارد. در دستگاه‌هایی که نسخه 20175 یا بالاتر را اجرا می‌کنند، RAM به 50 درصد از کل حافظه یا 8 گیگابایت محدود می‌شود، هرکدام که کوچک‌تر باشد. در ساخت‌های قدیمی‌تر از 20175، WSL می تواند تا 80 درصد از RAM میزبان شما را مصرف کند.

در حین کار بر روی این مقاله، من در حال اجرا هستم ویندوز 10 بیلد 19044، بنابراین WSL من 80٪ از RAM میزبان من (8 گیگابایت) را ذخیره می کند. خوشبختانه، ما می توانیم WSL 2 را سفارشی کنیم برای محدود کردن تعداد هسته‌های CPU، استفاده از حافظه، فضای تعویض و غیره. با تشکر فراوان از همه کسانی که در این شماره GitHub پاسخ دادند و اشاره کردند که چگونه می توان این کار را انجام داد.

راه حل

برای حل این مشکل، مراحل را طبق مستندات مایکروسافت دنبال می کنم.

یک فایل wslconfig ایجاد کنید

شما باید a ایجاد کنید wslconfig فایل زیر فهرست نمایه کاربر ویندوز شما (C:\Users\YourUsername.wslconfig). در هنگام راه اندازی، WSL این فایل را در صورت وجود می خواند و خود را بر اساس آن پیکربندی می کند. در این فایل، شما می توانید به WSL 2 بگویید که چه مقدار RAM، فضای تعویض، هسته های CPU و سایر منابع را باید اختصاص دهد..

من فقط روی محدود کردن استفاده از حافظه تمرکز کردم، اما شما می توانید هر گزینه دیگری را که می خواهید پیکربندی کنید، برای گزینه های بیشتر به اسناد مایکروسافت مراجعه کنید. wslconfig. که من در حال حاضر از آن استفاده می کنم در زیر آمده است (رم زیادی برای کار با آن ندارم):

[wsl2]
memory=2GB
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

تنها با دو خط، اکنون می‌توانم Docker را روی دستگاهی با 8 گیگابایت رم اجرا کنم. پس از راه اندازی مجدد و راه اندازی docker-compose up دوباره، محیط من بدون کاهش سرعت دستگاه من کاملاً کار می کند. بررسی Task Manager، vmmem دیگر بیش از 2 گیگابایت مصرف نمی کند.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

همچنین ببینید
بستن
دکمه بازگشت به بالا