اعلان ترمینال در رایانه های شخصی لینوکس.
Fatmawati Achmad Zaenuri / Shutterstock

فرمان Linux (19459009] free ] نشان می دهد که چه مقدار از حافظه کامپیوتر شما در حال استفاده است و چه مقدار هنوز هم برای برنامه ها در دسترس است برای استفاده. خروجی آن می تواند برای افراد ناآگاه گیج کننده باشد ، اما ما به شما نشان خواهیم داد که چگونه آن را بفهمید.

فرمان رایگان

فرمان رایگان خلاصه ای سریع از حافظه را در یک پنجره ترمینال چاپ می کند. گزینه های زیادی ندارد و آستین های خود را فریب نمی دهد ، و یادگیری نحوه استفاده از آن زمان و تلاش زیادی نمی کند. یادگیری تفسیر صحیح از اطلاعات ارائه شده ، با این حال ، داستان دیگری است. خیلی آسان است که با آنچه رایگان به شما می گوید اشتباه گرفته شود.

بخشی از این به دلیل اصطلاحات است – مانند تفاوت بین "رایگان" و "در دسترس" و بخشی از آن به دلیل درونی است. عملکرد روال مدیریت حافظه و فایل سیستم هسته لینوکس. اگر از حافظه یدکی استفاده کنید که هسته می تواند از آن استفاده خوبی کند ، آن را برای اهداف خاص خود وام می گیرد.

ما قصد داریم شیرجه را به مکانیسم های اساسی و روال داده تبدیل کنیم تا بتوانید از آنچه در زیر هود می گذرد قدردانی کنید ، و اینکه چگونه همه این موارد در استفاده از حافظه دسترسی تصادفی شما تأثیر می گذارد ( RAM).

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

بیایید را آزاد کنیم بدون گزینه و ببینیم چه می گیریم:

 رایگان 

 فرمان رایگان در یک پنجره ترمینال 

<div> [19659006] این به شکلی زشت پیچیده شده است. در رایانه خود ، می توانید پنجره ترمینال را دراز کنید. در اینجا یک جدول خروجی وجود دارد: </p>
<pre> در کل از حافظه مشترک و حافظه پنهانی مشترک استفاده شده است
مم: 2038576 670716 327956 14296 1039904 1187160
تعویض: 1557568 769096 788472 </pre>
<p> ارقام به صورت کیبایتی ارائه شده است ، که 1024 بایت است. در مانجارو ، دستور <code> free </code> به عنوان <code> free -m </code> محاسبه می شود. این نیرو <code> </code> را مجبور به استفاده از مگابایت می کند ، که 1.048.576 بایت است. در توزیع های دیگر ، پیش فرض kibibytes است. </p>
<p> خط بالا در مورد حافظه سیستم گزارش می دهد ، خط پایین در فضای تعویض گزارش می کند. ما ستون ها را در اینجا معرفی خواهیم کرد ، سپس به زودی با جزئیات بیشتری به آنها نگاه خواهیم کرد. ستون های خط حافظه به شرح زیر است: </p>
<ul>
<li><strong> Total </strong>: مقدار کل RAM فیزیکی نصب شده در رایانه شما. </li>
<li><strong> استفاده شده </strong>: این توسط <code> کل </code> نصب شده است – <code> رایگان </code> + <code> Buffers </code> + <code> Cache </code>). </li>
<li><strong> Free </strong>: مقدار حافظه استفاده نشده. چرا کل = مورد استفاده + رایگان نیست؟ ما به زودی توضیح خواهیم داد. </li>
<li><strong> به اشتراک گذاشته شده </strong>: حافظه ای که توسط سیستم پرونده <code> tmpfs </code> استفاده می شود. </li>
<li><strong> Buff / cache </strong>: حافظه مورد استفاده برای بافرها و حافظه نهانگاه. [19659017] در دسترس </strong>: این یک تخمین از حافظه است که برای درخواست های حافظه سرویس از برنامه ها ، هر نرم افزار عملکردی دیگر در رایانه شما ، مانند محیط دسک تاپ گرافیکی و دستورات لینوکس در دسترس است. </li>
</ul>
<p> ستون ها عبارتند از: </p>
<ul>
<li><strong> تعداد </strong>: اندازه پارتیشن مبادله یا پرونده مبادله. </li>
<li><strong> استفاده شده </strong>: میزان فضای مبادله در استفاده. </li>
<li><strong> رایگان </strong>: باقی مانده (استفاده نشده) swap space </li>
</ul>
<h2> The wide Display </h2>
<p> برای جدا کردن <code> Buff / cache </code> در ستون های خود ، از گزینه <code> -w </code> (گسترده): </p>
<pre> free -w استفاده کنید </pre>
<p> <img class=

این نتیجه است. به جای ستون Buff / cache ، یک ستون Buffers و یک ستون Cache دریافت می کنیم. نمودارهای جدول در اینجا آمده است:

 در کل از حافظه نهان مشترک بافرهای رایگان استفاده شده است
مم: 2038576 683724 265708 14660 94568 994596 1160420
مبادله: 1557568 761416 796152 

بگذارید ببینیم ارقام موجود در ستون ها چه چیزی را نشان می دهد.

ستون کل

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

اتفاقاً ، مکانی که رایگان اطلاعات خود را از آن جمع می کند پرونده / proc / meminfo شبه پرونده است. می توانید با دستور زیر به این پرونده نگاهی بیندازید:

 کمتر / proc / meminfo 

 کمتر / proc / meminfo در یک پنجره ترمینال

خروجی یک لیست واحد است نامها و مقادیر.

 خروجی از فرمان کمتر / proc / meminfo در یک پنجره ترمینال

ستون استفاده شده

اینجا جایی است که جالب می شود.

] شکل استفاده شده نشان دهنده آنچه شما احتمالاً انتظار دارید از آن باشد ، به علاوه یک دسته از موارد دیگر. این حافظه است که به فرآیندهای اختصاص داده شده توسط برنامه های کاربر اختصاص داده می شود و توسط مواردی مانند محیط دسک تاپ GNOME یا KDE استفاده می شود. جای تعجب در آنجا نیست. اما این همچنین شامل شماره های بافرها و Cache می باشد.

RAM که برای چیزی مورد استفاده قرار نمی گیرد ، رم را هدر می دهد. کرنل از RAM یدکی برای نگه داشتن انبارها و بافرهایی استفاده می کند که به آن امکان کارآمدتر می دهد. بنابراین از این رم برای چیزی توسط هسته استفاده می شود ، اما در فضای کاربر استفاده نمی شود.

اگر درخواست حافظه دریافت شود که تنها با کنار گذاشتن برخی از رم ها می توان آن را سرویس داد که هسته برای دستگاه های خاص خود استفاده می کند ، آن چیزی است که اتفاق می افتد ، یکپارچه. آزاد کردن این RAM و استفاده از آن برای سایر برنامه های دیگر ، روی عملکرد صحیح سیستم لینوکس شما تأثیر نمی گذارد – هیچ چیز خرابی نخواهد بود ، اما ممکن است عملکرد سیستم را تحت تأثیر قرار دهد. [19659006] بنابراین این ستون به معنای "تمام رم هایی که توسط چیزی استفاده می شود ، حتی اگر بتواند فوراً قابل بازیابی باشد" است.

ستون رایگان

این ستون رقمی را برای مقدار RAM که استفاده نمی شود ، نشان می دهد. با هر چیزی از آنجا که ستون مورد استفاده حاوی چهره های Buffers and Cache است ، برای سیستم های کاملاً کارآمد لینوکس غیر معمول نیست که رم های بسیار کمی را به عنوان "رایگان" ذکر کنید.

این لزوما چیز بدی نیست و تقریباً به معنای آن است. شما یک سیستم کاملاً عادی کار کرده اید که تنظیم درست استفاده از RAM را انجام می دهد. یعنی ، RAM توسط برنامه ها و دیگر فرایندهای فضای کاربر و هسته در تلاش است تا عملکرد کامپیوتر شما را به بهترین وجه ممکن بکار برد.

The Shared Column

شکل در [19459009ستونمشترک نشانگر حافظه اختصاص داده شده به نگه داشتن tmpfs سیستم های پرونده مبتنی بر RAM است. اینها سیستم های پرونده ای هستند که برای تسهیل عملکرد کارآمد سیستم عامل در حافظه ایجاد می شوند. برای دیدن کدامیک از سیستم های پرونده tmpfs ، از دستور df استفاده کنید.

گزینه هایی که ما استفاده می کنیم عبارتند از:

  • -h (Human): استفاده کنید واحدهای معقول و مناسب.
  • - جمع : یک خط با کل در انتهای خروجی نمایش دهید.
  • - نوع = tmpfs : فقط گزارش [tmffs] سیستم های پرونده.
 df -h - total --type = tmpfs 

 df -h - total --type = tmpfs در یک پنجره ترمینال

اولین چیزی که وقتی به این مقادیر نگاه می کنید به شما ضربه می زند این است که آنها چندین برابر بزرگتر از رقم ستون مشترک هستند. اندازه های نمایش داده شده در اینجا حداکثر اندازه این سیستم فایلها هستند. در واقعیت ، آنها فقط حافظه مورد نیاز خود را اشغال می کنند. شکل موجود در ستون Shared شخصی است که می توانید برای استفاده از حافظه ایمان داشته باشید.

این سیستم های پرونده ای در چیست؟ در اینجا سریع توضیح داده می شود:

  • / run : این پرونده شامل بسیاری از پرونده های موقت مانند پرونده های PID ، روزنامه نگاری سیستماتیک است که نیازی به ذخیره سازی آن در مجدد نیست ، اطلاعات مربوط به پریزهای دامنه یونیکس ، FIFO و موارد دیگر management daemons.
  • / dev / shm : این اجازه می دهد تا اجرای مدیریت حافظه سازگار با POSIX را در توزیع های لینوکس Debian و Debian مشتق شده از لینوکس انجام دهد.
  • / run / Lock : این پرونده ها را قفل می کند. اینها به عنوان نشانگر استفاده می شود تا سیستم از یک پرونده یا منابع مشترک دیگر استفاده کند. آنها حاوی PID فرآیند با استفاده از آن منبع هستند.
  • / sys / fs / cgroup : این یک عنصر اصلی این طرح است که گروه های کنترل را مدیریت می کند. فرایندها با توجه به نوع منابعی که از آنها استفاده می کنند ، به گروههای سلسله مراتبی سازماندهی می شوند. این اجازه می دهد تا از منابع استفاده شده توسط فرآیندها استفاده شود و نظارت و محدود شود.
  • / run / user / 121 : این پوشه ای است که توسط pam_systemd ایجاد شده است تا فایلهای دما را برای کاربر ذخیره کند. در این حالت ، کاربر دارای شناسه 121 می باشد. توجه داشته باشید که "کاربر" ممکن است یک کاربر معمولی ، یک Daemon یا یک فرآیند دیگر باشد.
  • / run / user / 1000 : این یک پوشه است ایجاد شده توسط pam_systemd برای ذخیره سازی پرونده های Temp برای این کاربر ، که دارای شناسه کاربری 1000 است. این کاربر فعلی ، کاربر دیو است.

ستون های بافر و کش

[ Buffer و Cache ستون ها فقط در صورتی ظاهر می شوند که از -w (گسترده) استفاده کرده باشید. بدون گزینه – w ، ارقام این دو ستون در ستون Buff / cache ترکیب می شوند.

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

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

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

ساختارهای موجود در حافظه بافر عبارتند از:

  • سر بافر : هر بافر در یک بلوک از داده ها به نام سر بافر توصیف می شود. همچنین ، اگر داده های موجود در بلوک تغییر یافته و صفحه حافظه مرتبط با آن "خاکی" شده باشد ، توصیف کننده نیاز به نوشتن داده ها را بر روی هارد دیسک پیدا می کند.
  • Inodes : Inodes اطلاعات فوق در مورد فایل ها و فهرست ها را نگه می دارد ، از جمله جایی که آنها در هارد دیسک (یا سیستم پرونده مجازی) ، اندازه پرونده ، و نشانهای زمانی پرونده هستند.
  • دندانپزشکی : یک دندانپزشکی (ورودی فهرست) ساختاری است که اطلاعات فهرست دایرکتوری را در اختیار دارد. این موارد را به عنوان لیستی از inodes برای پرونده ها و دایرکتوری ها در یک فهرست قرار دهید.

می بینید که چرا منطقی است که حافظه مورد استفاده برای مناطق بافر و حافظه نهان را به یک واحد متراکم کنید Buff / cache ستون. آنها دو قسمت از یک چیز هستند. ناحیه حافظه نهان بدون استفاده از ناحیه حافظه بافر ، فایده ای برای محتویات آن بی فایده نخواهد بود.

ستون موجود

ستون موجود مجموعه ستون Free به علاوه بخشهای بافرها و ستونهای حافظه نهان (یا ستون Buff / cache ) که می توانند بلافاصله از بین بروند. ستون موجود يك تخمين است ، و نه دقيق آن. این یک برآورد آگاهانه و دقیق است ، اما نباید آن را به عنوان آخرین بایت انجام دهید.

تغییر واحدهای صفحه نمایش

برای تغییر واحدهایی که نمایشگر ارقام رایگان است ، از یکی از گزینه های زیر استفاده کنید.

  • -b : مقادیر را با بایت نمایش می دهد.
  • -k : مقادیر را در کیبایدها نشان می دهد (که پیش فرض آن است.)
  • -m : مقادیر را در مییبایتی نمایش می دهد.
  • -g : مقادیر را در gibibytes نمایش می دهد.
  • -h : مقادیر را در واحدهای با مناسب ترین و مناسب (قابل خواندن توسط انسان) نمایش می دهد.

برای مثال مقادیر قابل خواندن توسط انسان ، از گزینه -h استفاده کنید:

 free -h 

 free -h در پنجره ترمینال

free برای هر مقدار از مناسب ترین واحد استفاده کنید. همانطور که مشاهده می کنید ، برخی از مقادیر در MiB نمایش داده می شوند ، و برخی از آنها در GiB هستند.

نمایش تعداد

گزینه - total باعث می شود که یک خط کلی نمایش داده نشود. مقادیر را از ستون های جمع ، استفاده شده ، و رایگان ستون های Mem و مبادله ]

 free -h - -total 

 free -h --- تعداد کل در یک پنجره ترمینال

گزینه شمارش

گزینه -c (count) گزینه free برای چندمین بار اجرا ، با مکث یک ثانیه بین هر یک. برای داشتن رایگان دو بار ، از این دستور استفاده کنید:

 free -h -c 2 

 free -h -c 2 را در یک پنجره ترمینال

در حال اجرا به طور مداوم

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

گزینه -s (ثانیه) مدت زمان را تعیین می کند. مکث بین هر دور رایگان . برای اجرای مداوم با مکث سه ثانیه ای بین هر بروزرسانی ، از این دستور استفاده کنید:

 free -s 3 

 free-s 3 را در یک پنجره ترمینال

را فشار دهید Ctrl + C برای متوقف کردن روند و بازگشت به سریع دستور.

ترکیب گزینه های Count and Seconds

برای داشتن رایگان با یک مکث مشخص بین هر بروزرسانی اجرا شود اما بعد از توقف تعداد مشخصی از گزارش ها ، گزینه های -s (seconds) و -c (count) را ترکیب کنید. برای داشتن رایگان پنج بار با مکث دو ثانیه بین هر بروزرسانی ، از این دستور استفاده کنید:

 free -s 2 -c 5 

 free -s 2 -c 5 in یک پنجره ترمینال

پس از ظاهر شدن پنج بروزرسانی ، فرایند به پایان می رسد و شما به خط فرمان باز می گردید.

 خاتمه خود فرمان free -s 2 -c 5 در یک پنجره ترمینال

جداسازی حافظه کم و زیاد

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

در یک سیستم عامل مبتنی بر لینوکس 32 بیتی ، CPU می تواند حداکثر 4 گیگابایت حافظه را برطرف کند. حافظه به حافظه کم و حافظه بالا تقسیم می شود. حافظه کم به طور مستقیم در بخشی از فضای آدرس جای می گیرد. حافظه بالا نقشه برداری مستقیم هسته ندارد. حافظه بالا معمولاً چیزی بالاتر از 896 مگابایت است.

این بدان معناست که خود هسته (از جمله ماژول های فعال آن) فقط می تواند از حافظه کم استفاده کند. پردازشهای کاربر – هر چیزی که خود هسته نیست- می تواند از حافظه کم و زیاد استفاده کند.

در رایانه 64 بیتی هیچ مقداری برای حافظه بالا وجود نخواهد داشت:

 free -h-l [19659014]  free -h -l در یک پنجره ترمینال  

خاطرات از این ساخته می شوند

یک جمع بندی سریع:

  • Total : مقدار رم نصب شده در سیستم شما. [19659017] استفاده شده : برابر با جمع - ( رایگان + بافر + حافظه نهان ).
  • رایگان مقدار حافظه به طور کامل توسط هر چیزی استفاده نشده است.
  • به اشتراک گذاشته شده : حافظه گرفته شده توسط سیستم های پرونده [tmffs tmpfs .
  • Buffer : ساختار داده ها که برای ارائه فهرست برای حفظ همه موارد ذخیره شده در حافظه پنهان .
  • حافظه پنهان : داده های خوانده شده از هارد ، داده های اصلاح شده در انتظار ارسال مجدد به دیسک سخت و سایر مقادیر محاسبه شده.
  • Availab le : آنچه واقعا رایگان است. تخمینی از حافظه در Free ، Buffer و Cache که می تواند برای برآورده کردن یک درخواست حافظه استفاده شود.