| memtester(8) | دستورهای نگهداری سیستم | memtester(8) |
نام (NAME)
memtester - ابزار آزمایش زیرسامانه حافظه جهت بررسی خطاهای حافظه
خلاصه دستور (SYNOPSIS)
memtester [-p PHYSADDR [-d DEVICE] [-u]] <MEMORY> [ITERATIONS]
توضیحات (DESCRIPTION)
ابزار memtester یک آزمایشکننده مؤثر در فضای کاربری (userspace) برای آزمون فشار زیرسامانه حافظه است. این ابزار در یافتن خطاهای متناوب و غیرقطعی بسیار کارآمد عمل میکند. توجه داشته باشید که مشکلات در سایر بخشهای سختافزار (داغ شدن بیش از حد پردازنده، منبع تغذیه خارج از استاندارد و غیره) نیز میتواند موجب خطاهای متناوب حافظه شود، بنابراین تشخیص محل دقیق ایراد از طریق روالهای معمول عیبیابی سختافزاری بر عهده خود شماست؛ memtester صرفاً به شما کمک میکند متوجه شوید که آیا مشکلی وجود دارد یا خیر.
در صورت امکان، memtester میزان حافظه مشخصشده را با malloc(3) تخصیص میدهد. اگر این کار با شکست مواجه شود، مقدار حافظه درخواستی را کاهش میدهد تا سرانجام موفق شود. سپس تلاش میکند این حافظه را با mlock(3) قفل کند؛ در صورتی که نتواند حافظه را قفل کند، فرایند آزمایش کندتر و کارایی آن بهشدت کمتر خواهد شد. memtester را با دسترسی ریشه (root) اجرا کنید تا بتواند حافظهای را که آزمایش میکند قفل (mlock) نماید.
توجه داشته باشید که حداکثر مقدار حافظهای که memtester میتواند آزمایش کند، کمتر از کل حافظه فیزیکی نصبشده روی سیستم خواهد بود؛ چرا که سیستمعامل، کتابخانهها و محدودیتهای دیگر سیستم بخشی از حافظه در دسترس را اشغال میکنند. همچنین memtester به میزان حافظه در دسترس برای یک فرایند منفرد محدود است؛ برای نمونه، در سیستمهای ۳۲ بیتی با بیش از ۴ گیگابایت حافظه، memtester همچنان به کمتر از ۴ گیگابایت محدود خواهد بود.
دقت کنید که آگاهی از میزان حافظهای که میتوانید با اطمینان برای آزمایش تخصیص دهید بر عهده خود شماست. اگر سعی کنید حافظهای بیش از مقدار آزاد را تخصیص دهید، memtester باید متوجه این موضوع شود، مقدار را اندکی کاهش دهد و دوباره تلاش کند. با این حال، این فرایند میتواند منجر به تخصیص و قفلکردن تقریباً تمام حافظه آزاد سیستم توسط memtester شود ‐‐ اگر برنامههای دیگری در حال اجرا باشند، این اتفاق ممکن است منجر به سواپینگ بیش از حد و افت سرعت سیستم تا حدی شود که استفاده از آن دشوار گردد. اگر سیستم اجازه تخصیص بیش از حافظه واقعی در دسترس را بدهد (overcommit)، ممکن است به بنبست (deadlock) و توقف کامل سیستم منجر شود. در صورتی که سیستم دارای سازوکار کشتن فرایند در زمان کمبود حافظه (مانند OOM killer در لینوکس) باشد، ممکن است memtester یا فرایند دیگری توسط OOM killer خاتمه یابد.
بنابراین هوشمندانه انتخاب کنید.
گزینهها (OPTIONS)
- -p PHYSADDR
- به memtester دستور میدهد تا ناحیه خاصی از حافظه را که از آدرس فیزیکی PHYSADDR (به صورت هگزادسیمال) شروع میشود، از طریق mmap(2) کردن دستگاه تعیینشده با گزینه -d (در زیر، یا به صورت پیشفرض /dev/mem) آزمایش کند. این قابلیت عمدتاً برای توسعهدهندگان سختافزار، جهت آزمایش دستگاههای ورودی/خروجی نگاشتشده در حافظه (memory-mapped I/O) و موارد مشابه کاربرد دارد. توجه داشته باشید که این ناحیه حافظه در حین آزمایش بازنویسی خواهد شد، بنابراین مشخص کردن حافظهای که برای سیستم یا برنامههای دیگر تخصیص یافته امن نیست؛ انجام این کار موجب کرش کردن آنها خواهد شد. اگر الزام قطعی دارید که ناحیه خاصی از حافظه فیزیکی واقعی را آزمایش کنید، ترتیبی دهید که آن حافظه توسط نرمافزار آزمایش شما تخصیص یابد و در همین حالت تخصیصیافته نگه داشته شود، سپس memtester را با این گزینه روی آن اجرا کنید.
- -d DEVICE
- دستگاهی را مشخص میکند که همراه با گزینه -p در بالا باز شود. در صورت عدم تعیین، /dev/mem پیشفرض است.
- -u
- موجب میشود memtester دستگاه تعیینشده توسط گزینه -d در بالا را بدون پرچم O_SYNC باز کند، که در برخی سیستمها باعث میشود سیستم از معناشناسی حافظه بدون کَش (uncached) استفاده کند.
- MEMORY
- میزان حافظهای که باید تخصیص یافته و آزمایش شود، به صورت پیشفرض بر حسب مگابایت. میتوانید از پسوندهای B، K، M یا G به ترتیب برای نشان دادن بایت، کیلوبایت، مگابایت یا گیگابایت استفاده کنید.
- ITERATIONS
- (اختیاری) تعداد دفعات تکرار حلقه آزمون. پیشفرض بینهایت است.
متغیرهای محیطی (ENVIRONMENT)
اگر متغیر محیطی MEMTESTER_TEST_MASK تنظیم شده باشد، memtester مقدار آن را به عنوان یک ماسک بیتی (bitmask) از آزمونهایی که باید اجرا شوند (به جز آزمون آدرس گیرکرده یا stuck address) در نظر میگیرد. مقدار را میتوان در مبنای ۱۰ (دهدهی)، مبنای ۸ (هشتهشتی با پیشوند ۰)، یا در مبنای ۱۶ (شانزدهشانزدهی با پیشوند 0x) مشخص کرد. مقادیر بیتی مشخص متناظر با آزمونهای خاص ممکن است در نسخههای مختلف تغییر کند؛ برای یافتن مقادیر شاخص مناسب برای نسخه در حال اجرای memtester، به فهرست آزمونها در کد منبع مراجعه فرمایید. توجه داشته باشید که نادیده گرفتن برخی آزمونها زمان اجرای memtester را کاهش میدهد، اما کارایی و دقت آن را نیز کم خواهد کرد.
نکات (NOTES)
برنامه memtester جهت قفل کردن صفحات با mlock(3) باید با امتیازات ریشه (root) اجرا شود. آزمایش حافظه بدون قفل نگهداشتن صفحات در جای خود، عمدتاً بیفایده و کند خواهد بود.
کد خروج (EXIT CODE)
کد خروج memtester در صورت اجرای درست و بدون مشکل صفر (0) است. در غیر این صورت، حاصل OR منطقی مقادیر زیر خواهد بود:
- 0x01
- خطا در تخصیص یا قفل کردن حافظه، یا خطای فراخوانی دستور
- 0x02
- خطا در حین اجرای آزمون آدرس گیرکرده (stuck address)
- 0x04
- خطا در حین اجرای یکی از سایر آزمونها
نویسنده (AUTHOR)
نوشتهشده توسط Charles Cazabon.
گزارش باگها (REPORTING BUGS)
گزارش اشکالات را به <charlesc-memtester-bugs@pyropus.ca> ارسال کنید.
حق نشر (COPYRIGHT)
Copyright © 2001-2024 Charles Cazabon
این
نرمافزار
آزاد است؛
برای شرایط
تکثیر فایل
COPYING را ببینید.
هیچ ضمانتی
وجود
ندارد؛ حتی
برای
قابلیت
فروش یا
تناسب با یک
هدف خاص.
| نوامبر ۲۰۲۴ | memtester 4 |