مدیریت و بهره وری پلات ها برای فارمینگ ارز دیجیتال چیا به وسیله نرم افزار Plotman
در مطالب پیشین سایت در مورد برداشت ارز دیجیتال چیا و انقلابی که این ارز دیجیتال در فروش هارد و سرور پدید آورد ، صحبت کردیم که حتما برای یکی از مراحل این فرآیند ساخت پلاتهای مناسب برای فارمینگ ارز دیجیتال چیا است.
پلاتها،فایلهایی بر روی هارد دیسک سیستم هستند که هر کدام با توجه به تنظیمات ابتدایی فضایی را به خودشان اختصاص میدهند. اِف کِی نِت در این مطلب قصد دارد که در مورد اتوماتیک سازی و مدیریت پلاتینگ ارز دیجیتال چیا صحبت کند ، همراه ما باشید.
Plotman چیست؟
Plotman ابزاری برای مدیریت فرآیند پلاتینگ ارز دیجیتال چیا میباشد. این ابزار به کاربر اجازه میدهد تا پارامترهای مختلفی را پیکربندی کند و برنامه زمانی عملیات مربوط به پلات سازی را تنظیم کند.
به طور معمول این فرآیند یک کار بدون توقف و همیشگی است. Plotman کمک میکند تا پلاتها در tempها و مقاصد مختلف تعادل داشته باشند.
همچنین این ابزار امکاناتی را جهت انتقال پلاتهای ساخته شده کامل به ماشینهای فارمینگ در اختیار کاربران قرار میدهد. بد نیست بدانید که این عملیات Archiving نام دارد. از طرفی به کمک plotman میتوانید بر روی میزان پیشرفت کار و دستکاریهای صورت گرفته هم نظارت داشته باشید.
این ابزار قدرتمند و کارآمد تا حد زیادی اتوماتیک سازی ساخت پلاتها را ساده میکند. البته که اشتباه برداشت نکنید.
اگر که در این مسیر مبتدی هستید پیشنهاد میکنیم تا ابتدا کار ساخت پلاتها را به صورت دستی تجربه کنید – این کار کمک میکند تا ببینید پلاتها چطور عمل میکنند و هر سخت افزار در شرایط مختلف به چه صورت واکنش نشان میدهد.
جالب است بدانید که این برنامه به طور کلی بخشی از هسته اصلی چیا و شبکه آن نیست! Plotman بیشتر یک برنامه مجزاست که هنوز در دست توسعه و تغییر قرار دارد.
برنامه plotman تماما توسط کاربران داوطلب طراحی و ساخته شده است. برنامهای که علاوه بر لینوکس بر روی سیستم عامل Mac هم به خوبی کار میکند. علاوه بر این، برخی از کاربران برنامه را به کمک یک WSL بر روی ویندوز هم اجرا کردهاند
هدف و نحوه عملکرد برنامه Plotman
برنامه plotman اساسا مبنی بر چند فرضیه طراحی و ساخته شده است. فرضیههایی که نمیدانیم بهینه هستند یا نه! با این حال برنامه توانسته از فاز اولیه طراحی عبور کند.
- در برداشت ارز دیجیتال چیا برای ساخت پلاتها در هر مرحله سیستم از منابع مختلف و ترکیبی استفاده میکند. از دیسکهای IO گرفته تا مموری و حتی CPU. اما جالب است که این منابع ثابت هستند. برای اینکه بتوانید استفاده بهینهای از منابع داشته باشید باید سعی کنید در طول زمان انتظارات آنها را برآورده کنید.
- در پلات سازی باید ابتدا ظرفیت سخت افزار را تشخیص دهید و ببینید که اصلا برای انجام یک عملیات دیگر توانایی دارد یا خیر؟ گاهی اوقات این عدم آمادگی سخت افزار ممکن است تنها تاخیر زمانی باشد. اما به طور کلی بهتر است که تمامی معیارها را در نظر بگیرید، از جمله تعداد عملیاتی که در حال انجام است، یا فرآیندهایی که در یک tmp ویژه انجام میشوند، یا حتی چقدر از انجام آخرین کار گذشته است؟(به صورت کلی یا بر روی یک tmp)
- فرآیند پلاتینگ مقیاسپذیر عموما از یک یا چند ماشین ساخت پلات استفاده میکند – جدا از یک یا چند کشاورز. جدا کردن این فرآیند پلات سازی از فضای ذخیره سازی پلاتها بر روی ماشینها، میزان انعطاف پذیری و استحکام سیستم را بیشتر میکند. در نهایت هم ساخت پلاتها در یک درایو محلی و سپس کمک گرفتن از یک فرآیند انتقال قابل تنظیم میتواند کمک زیادی کند.
- فراموش نکنید که برای تقویت استحکام باید وابستگی با کدهای هسته چیا را کاهش دهید. این یعنی برنامه plotman باید بی طرف باشد و تنها به کمک دانشی که منجر به ساخت پلاتها میشود عملیات مرتبط را انجام دهد. این نرم افزار برای شناسایی عملیات در حال اجرا و باز، فایلهای سیستم عامل را بررسی میکند. همچنین تمامی فرآیندهای آغاز شده توسط برنامه، خروجی خودشان را به logfileها انتقال میدهند. این کار اجازه میدهد تا plotman به کمک فایلهای log روند پیشرفت کارها را زیر نظر بگیرد.
دلیل اصلی استفاده از برنامه Plotman، plotman interactive است که منجر به انجام فرآیندهای زیر میشود:
- نظارت بر وضعیت سیستم – عملیات پلات سازی در حال انجام و پیشرفت آنها. همچنین با توجه به پارامترهای پیکربندی شده پلات سازیهای جدید را هم برنامه ریزی میکند.
- نظارت بر روی پلاتهای کامل موجود در ماشین پلاتر محلی و آرشیو کردن آنها برای ماینرهای ریموت(این کار اختیاری است)
- نمایش وضعیت سیستم – پلات سازی فعلی، tmpها، مقاصد و همچنین مسیر آرشیو کردن.
علاوه بر اینها میتوانید از پلاتهای plotman تنها برای انجام کارهایی مثل توسعه پلات سازی و آرشیو کردن پلاتهای کامل شده استفاده کنید.
راهنمای نصب Plotman در لینوکس
برای نصب این برنامه در لینوکس کافیست مراحل زیر را دنبال کنید:
- Plotman فرض میکند که یک فایل نصب ارز دیجیتال چیا بر روی سیستم موجود است. برای فعال کردن محیط چیا تنها کافیست که این دستور را تایپ کنید: path/to/your/chia/install/activate/
- سپس به کمک دستور زیر میتوانید plotman را نصب کنید:
pip install –force-reinstall git+https://github.com/ericaltendorf/plotman@main<
- در این مرحله برنامه به دنبال فایل yaml بر روی سیستم میگردد. برای ساخت یک فایل پیش فرض با همین نام و نمایش موقعیت آن ، دستور زیر را وارد کنید: plotman config generate<
- به همین راحتی میتوانید برنامه را نصب کنید. برای اجرای برنامه هم تنها کافیست تا نسخه آن را وارد و تایید کنید.
پیکربندی و اجرای plotman interactive
Dirها و درایوها
این برنامه فرض میکند که قرار است کاربر تعدادی tmp(مسیرهای سریعی که برای -t استفاده میشوند) و تعدادی درایو(جایی که پلاترهای تکمیل شده منتشر میشوند) را در نرم افزار ایجاد و پیکربندی کند.
به یاد داشته باشید که اگر از عملکرد archiving استفاده کنید مقصد نهایی شما destination نخواهد بود – البته این مقصد هنوز هم نقطهای است که پلاتها تا رسیدن به دست فارمرها قرار خواهند داشت.
زمابندی plotman علاوه بر اینکه با توجه به وضعیت کلی سیستم(نحوه اجرای عملیاتهای متعدد، در حالی که آخرین کار شروع شده است)، بلکه با توجه به وضعیت درایو tmp(تعداد کارهایی که در حال حاضر در مسیر tmp انجام میشوند و مقدار پیشروی آنها) انجام میشود.
استفاده نرمال از tmpها زمانی است که آنها را به عنوان نقاط نصب بلوکهای دستگاهی که استفاده میکنید تنظیم کنید.
اینجا منظور از Block Drives برای مثال درایوهای فیزیکی و یا دستگاههای RAID است. بیشتر مستندات plotman هم با همین فرض جلو میروند. با تمام اینها، این مورد ضروری نیست.
در برخی شرایط ممکن است مجبور شوید با مسیرهای چندتایی بر روی بلوک دستگاه، به عنوان دایرکتوریهای tmp جداگانه به صورت منطقی برخورد کنید.
اکثر مواقع داشتن یک درایو واحد dst کافیست. اگر که به جای یک درایو چندین درایو داشته باشید، نه تنها بافر بزرگتری برای پلاتینگ خواهید داشت بلکه plotman مجبور میشود برای جلوگیری از همزمانی IOها پلاتینگها و عملیات archiving را توزیع کند.
اگر که شما مجموعهای از HDDهای قدیمی ۱ یا ۲ ترابایتی داشته باشید میتوانید یک مجموعه ایدهآل dst درست کنید.
زمانبندی
شما میتوانید برای شروع یک کار جدید به راحتی plotman را تحت شرایط دلخواه خودتان پیکربندی کنید. از طرفی زمانی که تمامی شرایط در نظر گرفته شده برآورده شوند عملیات مورد نظر آغاز میشود.
همچنین قادر هستید حداکثر تعداد عملیات موازیِ مرتبط با پلاتها را تعیین کنید. از طرفی میتوانید یک پارامتر stagger هم تعریف کنید.
البته این مورد باعث میشود که کارهای دیگر از نظر زمانی دیرتر انجام شوند و وقفهای این وسط پیش بیاید.
بد نیست بدانید که حداکثر کارهایی که همزمان انجام میشوند راهی کارآمد برای محدود کردن میزان مموری است که برای پلاتینگ چیا استفاده میشود.
برای جلوگیری از ازدحام و شروع همزمان کارها باید Global staggering را تنظیم کنید.
یک رویکرد عالی برای مشخص کردن مقدار اولیه این است که تصمیم بگیرید چه تعداد عملیات قرار است به صورت همزمان و موازی انجام شوند و مدت زمانی که قرار است به خوشان اختصاص دهند را حساب کنید.
در نهایت هم با تقسیم این مقادیر میتوانید فرکانس را پیدا کنید. به عنوان مثال اگر میخواهید ۱۲ عملیات را به صورت همزمان اجرا کنید و انتظار دارید که اجرای آنها ۸ ساعت زمان ببرد، در نتیجه ۴۰ دقیقه یک مقدار منطقی برای global stagger خواهد بود.
جالب است بدانید که به ازای هر tmp dir محدودیتی برای حداکثر عملیاتها دارید. این مقدار با توجه به ظرفیت درایوها و منابع IO مشخص میشود.
به عنوان مثال یک درایو ۱ ترابایتی میتواند به راحتی ۳ عملیات پلات staggered را انجام دهد(حتی دیده شده که توان انجام ۴ عملیات را نیز داشته است).
اگرچه اینجا سرعت درایو هم بی تاثیر نیست و گاها ممکن است حتی ۳ عملیات هم زیاد باشد. در این شرایط کاربر ممکن است برای اجرای ۲ عملیات به سراغ یک SATA SDD برود.
انجام Staggering بیشتر از اینکه به زمان وابسته باشد به پیشروی کارها متکی است. میزان پیشروی توسط پلاتینگ چیا اندازه گیری میشود(۱، ۲، ۳ یا ۴)، درست شبیه به subphaseها.
Subphaseها یا همان فازهای زیر مجموعه نامی است که بر روی پیشروی پلاترهای چیا گذاشته شده است و هر کدام به صورت زیر تعریف میشوند:
- در فاز ۱-۳، فاز زیرمجموعه صفر، مقدار اولیه است
- در فاز ۱، فاز زیر مجموعه ۱-۷ با جداول محاسباتی ۱ تا ۷ تطابق دارد
- در فاز ۲، فاز زیر مجموعه ۱-۶ با جداول backpropagating 7 تا ۲ مطابقت دارد
- در فاز ۳، فاز زیر مجموعه ۱-۶ با جداول فشرده سازی ۱،۲ تا ۶،۷ تطابق دارد
- در فاز ۴، تمامی عملیات به عنوان فاز زیر مجموعه صفر در نظر گرفته میشود
در برنامه plotman فازها به وسیله شاخصهای زیر مجموعه تعریف میشوند – بدین صورت: phase:subphase.
گاهی اوقات هم به شکل phase:major:minor ارائه میشوند. به عنوان مثال وقتی که با فاز ۳:۴ مواجه میشویم منظور فاز ۳، جدول فشرده سازی ۴ و ۵ است.
Staggering در دایرکتوریهای tmp که در پیشروی فرآندها خلاصه شدهاند، به کمک فازها اندازهگیری میشوند.
اینجا هدف این است که عملیات جدید پیش از اینکه کار قبلی به یک نقطه از پیشروی نرسیده شروع نشود.a
بایگانی – Archiving
اکثر کاربران ارز دیجیتال چیا عملیات بایگانی یا همان Archiving را نادیده میگیرند و ترجیح میدهند که به صورت مستقیم پلاتها را در درایوهای مزراع خودشان ایجاد کنند. شما میتوانید به راحتی با حذف خطوط کد بایگانی از فایل پیکربندی این کار را انجام دهید.
اجرا
زمانی که برای اولین بار plotman را اجرا میکنید باید یک فایل config بسازید. برای این کار میتوانید از config generate پلاتمن استفاده کنید. در نهایت هم میتوانید فایل پیکربندی را در موقعیت مورد نظرتان ویرایش کنید.
بعد از پیکربندی فایل، میتوانید به سرعت عملیات پلات سازی را شروع کنید. با اجرای plotman interactive یک صفحه بررسی اجمالی را مشاهده میکنید.
با فرض اینکه هیچ عملیات پلات سازی در حال انجام نیست، پلاتمن باید بتواند آمادگی ماشین برای اجرای اولین کار را تشخیص دهد و آن را شروع کند.
از طرفی تا زمانی که ماشین را در حالت اجرا و آماده باش بگذارید، پلاتمن به محض تشخیص آمادگی سیستم کارهای مورد نظر را شروع میکند – البته با توجه به پیکربندیهایی که قبلا انجام دادهاید.
این عملیاتها بعد از شروع کار دیگر وابستگی به پلاتمن ندارند و تا زمان تکمیل شدن به کارشان ادامه میدهند. اگر هم که میخواهید به هر دلیلی فرآیند پلات سازی و ساخت پلاتهای جدید را متوقف کنید تنها کافیست کلید p را انتخاب کنید یا از برنامه خارج شوید.
صفحه نمایش plotman interactive
زمانی که برنامه plotman interactive را اجرا میکنید صفحه برنامه اطلاعات زیر را برایتان نمایش میدهد:
اولین خط وضعیت سیستم را نمایش میدهد. وضعیت پلات سازی نشان میدهد که آیا ساخت پلاتها را آغاز کردهاید یا نه؟ اگر هم که شروع نکردهاید دلیل آن را به شما میگوید.
همچنین وضعیت بایگانی سیستم نشان میدهد که در حال حاضر مشغول archiving هستید یا خیر؟ یا اینکه پلاتی در درایوها برای آرشیو کردن موجود است یا نه؟
خط دوم در صفحه نمایش یک نمای گرافیکی از روند پیشرفت کارهای پلاتها نشان میدهد. پیشروی تمامی کارها توسط نمای میلهای یا فازهای ۱ تا ۴ نمایش داده میشوند.
فازها/فازهای زیرمجموعه به همراه یک کار واحد درون آنها کاراکتر (.) را نمایش میدهد و آنهایی که دو عملیات دارند با : نمایش داده میشوند.
همین طور زمانی که صحبت از تعداد کارهای ۴ یا بیشتر از آن باشد علامت ! نمایش داده میشود. این یک روش سریع برای درک موقعیت پلات سازی سیستم و تعداد عملیاتهای در حین انجام و پیشروی آنهاست.
در خط سوم صفحه نمایش برنامه میتوانید تعدادی کلید اختصاری را مشاهده کنید. فرض بر این است که tmp و dst پیشوندهای یکسانی دارند و در برنامه محاسبه و نمایش داده شدهاند.
البته میتوانید هر کدام را به پسوند منحصر به فرد خودش ارجاع دهید. به عنوان مثال اگر که /mnt/tmp/00، /mnt/tmp/01، /mnt/tmp/02 یا … داشته باشیم آنها را به صورت پیشوند /mnt/tmp نمایش میدهیم و در مراحل بعدی میتوانیم با ۰۰ یا ۰۱ به آنها اشاره کنیم.
جالب است بدانید که دایرکتوریهای مرتبط با آرشیوها هم یکی است، با این تفاوت که این مسیرها بر روی یک هاست ریموت قرار دارند و میتوانید با یک ماژولی که مجددا همگام سازی شده به آنها دسترسی داشته باشید.
محتوایی که در جدول بعدی مشاهده میکنید اطلاعات مربوط به عملیات پلاتینگ فعال است. از طرفی اگر که فرآیندهای متعددی به صورت همزمان در حال اجرا باشند تنها با نمادهای اختصاری نمایش داده میشوند(البته که لیست کامل این موارد از طریق وضعیت پلاتمن در دسترس است).
این جدول اطلاعات متنوعی در مورد کار پلاتها ارائه میکند. از جمله ID پلاتها، مسیرهای استفاده شده، walltime، فاز فعلی پلاتها، فازهای زیر مجموعه، هزینه و حتی فضای استفاده شده توسط tmpها بر روی درایوها.
در جدول بعدی میزان استفاده tmp و دایرکتوریهای dst نمایش داده میشود. جدول مربوط به tmpها فازی که عملیات پلات سازی در آن قرار دارد را نشان میدهد – همچنین مشخص میکند که آیا برای انجام کارهای جدید پلات سازی آماده است یا خیر؟
جدول دیگری که اینجا میبینید dst است. این جدول نشان میدهد که چه مقدار پلات جمع آوری شده است؟ چقدر فضای خالی باقی مانده؟ مراحلی که کارها در آن قرار دارند کداماند؟ و در آخر اینکه اولویت پلاتهای تکمیل شده برای انتقال به مزارع را نشان میدهد.
یکی دیگر از جدولهایی که با آن سر و کار دارید، میزان فضای خالی درایوهای روی مزارع ریموت را نشان میدهند. درایوهایی که به عنوان مقاصد بایگانی پیکربندی شدهاند.
این اطلاعات از طریق df بر روی ssh قابل دسترسی هستند. بنابراین برای استفاده از این دیتا باید یک ssh بدون رمز عبور داشته باشید که برای برداشتهای ریموت پیکربندی شده است.
آخرین بخش موجود در این صفحه نمایش گزارشی از اقدامات انجام شده را نمایش میدهد – منظور همان اقدامات مربوط به بایگانی و پلات سازی است.
این یکی از کارآمدترین قسمتهای برنامه است که اطلاعات مفیدی در اختیارتان میگذارد. فقط فراموش نکنید که این اطلاعات دائمی و همیشگی نیستند – به این معنی که اگر یک فرآیند جدید پلاتمن را شروع کنید این بخش خالی میشود.
استفاده از خط فرمان Plotman
نرم افزار پلاتمن برای فارمینگ ارز دیجیتال چیا تعدادی ابزار خط فرمان را به کاربران پیشنهاد میدهد:
وضعیت – status: نمایش لیستی از عملیاتهای فعال پلاتینگ فعلی
جزئیات – details: نمایش جزئیات مربوط به عملیات فعال پلاتینگ، از جمله موقعیت فایلهای log و دلایل مرتبط
تعلیق شدن – suspend: به تعلیق درآوردن یک فرآیند پلاتینگ
شروع مجدد – resume: شروع مجدد یک فرآیند به تعلیق درآمده پلاتینگ
حذف کردن – kill: حذف یک فرآیند پلاتینگ و پاک کردن تمامی فایلهای tmp مرتبط با آن
تمامی دستوراتی که کارها را مدیریت میکنند، پیشوندی را به عنوان ID پلات انتخاب میکنند – این ID رشته HEXای است که منحصرا برای پلات مورد نظر ساخته شده است.
پیشوند ۸ کاراکتری اختصاص داده شده به plot در ابزارهای پلاتمن نمایش داده میشود – البته زمانی که دستورات را صادر میکنید میتوانید به سراغ پیشوندهای منحصر به فردی که برای شناسایی پلات هستند بروید.
از طرفی ابزارهای خط فرمان عملیات مربوط به اسکریپت نویسی را در شرایط غیر معمولی که ممکن است کارآمد باشد، تسهیل میکنند.
به عنوان مثال اگر که یک درایو tmp کاملا پر به نام /tmp/03 داشته باشید، به احتمال زیاد میخواهید تمامی عملیاتهای موجود در آن را متوقف کنید:
for id in `plotman status | tail -n+2 | grep /tmp/03 | cut -c1-8` ; do plotman suspend $id ; done
در نهایت میتوانید بعد از انجام این کار فرآیندی که در حال اتمام است را مجددا آغاز کنید یا کاری که به تازگی شروع شده است را تماما حذف کنید.
آنالیز plotman
اجرای آنالیز پلاتمن بر روی فایلهای log اطلاعات استاتیک کارآمدی را در اختیارتان میگذارد – به عنوان مثال مدت زمانی که هر فاز به خودش اختصاص میدهد.
با اینکه این آنالیزها کمی ابتدایی هستند اما با این حال روشی سریع و نسبتا راحت برای نظارت و بررسی عملکرد مجموعهای از عملیاتها به حساب میآیند.
پلاتمن بر روی ویندوز و مک
به طور کلی این نرم افزار در درجه اول برای سیستم عامل لینوکس طراحی و توسعه داده شده است.
اما نه تنها بر روی سیستم عامل مک بلکه به کمک یک WSL بر روی ویندوز هم اجرا میشود. اگر هم که در اجرای این برنامه با مشکل برخورد کردید میتوانید به سراغ فرومهای مرتبط بروید و به دنبال راه حل باشید.
مشارکت در plotman
تیم پلاتمن از توسعه دهندگان و مشارکتهای جدید کاملا استقبال میکند. زیرا اگر که مجموعهای از داوطلبان برای توسعه این برنامه فعالیت نمیکردند در حال حاضر خبری از Plotman نبود.
تنها چالشی که اینجا با آن روبرو هستیم این است که فرآیند ساخت پلات هر مزرعه کاملا منحصر به فرد است، به همین خاطر اغلب اوقات قابلیتهایی که برای اضافه شدن به برنامه پیشنهاد میشوند هم یونیک هستند.
با این حال برای حفظ یکپارچگی، استفاده آسان از برنامه و همچنین افزایش اطمینان به پلاتمن سعی میشود امکانات جدید به صورت کلیتر در نظر گرفته شوند.
با انجام این کارها میتوانید کمک شایانی به مجموعه پلاتمن کنید:
- قبل از تغییرات اساسی حتما آنها را با توسعه دهندگان در میان بگذارید. این کار باعث میشود که تغییرات همزمان با هم تداخلی نداشته باشند و هر کدام که اولویت بیشتری دارند اعمال شوند. شما میتوانید با جستجوی #dev بر روی کانال chia_platform توسعه دهندگان پلاتمن را پیدا کنید.
- اگر که قرار است چندین مورد را در برنامه تغییر دهید حتما آنها را به وظایف جداگانه تقسیم کنید. در این حالت اختلاف نظر در مورد تغییرات کمتر پیش میآید.
- حتما تغییرات اصلی و ابتدایی را در شاخه توسعه – development branch قرار دهید.
نتیجهگیری و آینده پلاتمن
جالب است بدانید که این برنامه تنها در ابتدای مسیر به عنوان مجموعهای از اسکریپتها آغاز به کار کرد. حتی به سختی هم میتوانست فرآیند پلات سازی سیستم را بر عهده بگیرد.
اما انتظار میرود که در آینده نزدیک تمامی باگهای سیستمی و داخلی برنامه برطرف شوند. علاوه بر عملکرد برنامه، تمرکز ویژهای بر روی رابط کاربری آن است و توسعه دهندگان به دنبال ساده سازی محیط برنامه هستند. همچنین به زودی فرآیند پیکربندی، زمانبندی و بایگانی پلاتها هم سادهتر میشوند.
به طور کلی این برنامه هنوز در دست توسعه قرار دارد و جا برای رشد آن بسیار است. برخی از توسعه دهندگان وعده اتوماسیون فرآیند پیکربندی را به کاربران دادهاند – این موضوع عملکرد نرم افزار را چندین برابر بهتر و سریعتر میکند. از طرفی در آینده میزان یکپارچگی پلاتمن با نرم افزارهای شبکه ارز دیجیتال چیا بیشتر خواهد شد. باید منتظر ماند و دید آیا این وعدهها عملی خواهند شد یا خیر؟