<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های MohammadReza Bahadori</title>
        <link>https://virgool.io/feed/@mr.bahadori1987</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-09 11:30:19</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/322796/avatar/IUp0Ze.png?height=120&amp;width=120</url>
            <title>MohammadReza Bahadori</title>
            <link>https://virgool.io/@mr.bahadori1987</link>
        </image>

                    <item>
                <title>چطوری Buffer/Cache سیستم رو کنترل کنیم</title>
                <link>https://virgool.io/@mr.bahadori1987/%DA%86%D8%B7%D9%88%D8%B1%DB%8C-buffercache-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%D8%B1%D9%88-%DA%A9%D9%86%D8%AA%D8%B1%D9%84-%DA%A9%D9%86%DB%8C%D9%85-bhwqtyv3plhh</link>
                <description>در این مبحث با توجه به نیاز به کنترل نمودن میزان بافر/کش مموری به روش های مدیریت این موضو ع میپردازیم :در نمای کلی تمام برنامه های در حال استفاده، نیازمند خواندن/نوشتن هستند و سیستم عامل ابن امر را بااستفاده از بافر/کش داخل مموری سیستم، بصورت لایو انجام می دهد.به دلیل اینکه تاخیر حضور دیسک برای خواندن / نوشتن برای یوزر محسوس نباشد، و از طرفی سرعت مموری بیشتر از دیسک می باشد، سیستم عامل اول داده ها را بر روی مموری کش میکند که این موضوع به اصطلاح بافر مموری را پر میکند تا زمانی که اطلاعات از بافر بر روی دیسک نوشته شوند. به اصطلاح drain کردن داده ها روی دیسک و reclaim کردن مموری.برای دیدن بافر/کش می توانید از دستور زیر استفاده کنید :free -hکه با توجه به خروجی می توان فاکتور های مربوط به مموری از جمله بافر/کش را ملاحظه نمود:Result:

             total        used        free      shared  buff/cache   available
Mem:          1.0Ti       2.6Gi       925Gi       3.0Mi        79Gi       999Gi
Swap:          68Gi       8.0Mi        68Giبرای تکمیل توضیحات، توجه به این موضوع که هرچقدر بافر/کش در مموری زیاد و بالا باشد میزان پرفورمنس ماشین بر اساس میزان خالی مموری کاهش میابد، به بیان دیگر نسبت میزان بافر/کش به میزان آزاد مموری معکوس می باشد که این امر در بعضی مواقع مشکل ساز می شود چراکه تاثیر تاخیر خالی شدن بافر روی پرفورمنس سیستم محسوس می شود.به همین دلیل در برخی مواقع نیاز به مدیریت این موضوع می باشد که برای آن به بررسی چند راه حل موجود می پرازیم.روش اول۱. یکی از راه حل های کنترل بافر/کش ، خالی کردن دستی آن است بدین صورت که :در قسمت proc که تمام پروسس های سیستم در آن قرار دارد، در فایل مربوط به بافر/کش مموری (/proc/sys/vm/drop_caches) ، تغییراتی ایجاد کنیم که باعث خالی شدن آن شود که این تغییرات بسته به نوع درخواست ما، از بافر/کش مموری پاک می شوند:در کل ۳ مدل جنس داده در بافر/کش ذخیره می شوند که عبارتند از : pagecache, dentries and inodesکه بنا به نیاز ما با دستورهای زیر می توانیم آنها را از مموری خارج کنیم :sync; echo 1 &gt; /proc/sys/vm/drop_cachessync; echo 2 &gt; /proc/sys/vm/drop_cachessync; echo 3 &gt; /proc/sys/vm/drop_cachesاستفاده می کنیم.روش دومکنترل میزان دقت سیستم عامل به خالی کردن بافر/کش که منتج به برگشت سریعتر میزان مموری به مموری آزاد می شود که با تغییر در تنظیمات فایل زیر انجام می شود:لازم به ذکر است که مقدار پیش فرض در این فایل مقدار ۱۰۰ می باشد و با بلاتر بردن این عدد میزان فورس کردن سیستم عامل نسبت به این موضوع بیشتر می شود.echo 150 &gt; /proc/sys/vm/vfs_cache_pressureمی توانیم نسبت به نیاز عدد جایگزین ۱۵۰ را وارد کنیم.روش سوماستفاده از Control Group است که به همان cgroup اشاره دارد. می دانیم که cgroup در کرنل لینوکس می تواند یک یا چند پروسس که عضو آن هستند را برای استفاده از منابع کنترل کند.در این روش می توانیم با ساخت یک cgroup و اضافه کردن پروسس های مد نظر به آن، برای استفاده از منابع محدودیت هایی ایجاد کنیم که البته نسبت به هر برنامه مستلزم محاسبات دقیق می باشد.برای ادامه این روش در ابتدا باید بدانیم که با کدام ورژن از cgroup کار می کنیم و همینطور باید مطمئن باشیم که پکیج های وابسته نصب باشند مانند:cgroup-tools or libcgroupدر ابتدا با دستور زیر یک cgroup میسازیم :sudo cgcreate -t $USER:$USER -a $USER:$USER -g memory:/fooحالا به عنوان مثال برای cgroup ساخته شد همحدودیت استفاده از ۲ گیگ مموری را اعمال میکنیم :sudo echo 2G &gt; /sys/fs/cgroup/foo/memory.maxو برای اطمینان از میزان محدودیت های cgroup ها میتوانیم از دستور زیر استفاده کنیم :cgget -g memory:/foo/ | grep memory.max

Result:
memory.max: 2147483648</description>
                <category>MohammadReza Bahadori</category>
                <author>MohammadReza Bahadori</author>
                <pubDate>Sun, 29 Oct 2023 17:16:40 +0330</pubDate>
            </item>
            </channel>
</rss>