موضوعی که در اینجا درباره اش صحبت میکنم، پیش از این به صورت عملی تجربه کرده ام و تأیید آن را از اهل فن گرفته ام. این نوشتار برای کاربران سطح متوسط مهارتی قابل درک است. یکی از دوستانم کارهایش را با نرمافزار فتوشاپ انجام میدهد. پارسال تصمیم گرفت که کامپیوتر خود را ارتقا بدهد. کامپیوترهایش مادربرد چیپست اینتل همراه با ۲ گیگابایت رم DDR2 و پردازنده سری ۷۰۰۰ اینتل دو هسته ای بودند. سیستم عامل ویندوز XP SP3 و از فتوشاپ نگارش ۷ استفاده میکرد.
تغییراتی به شرح زیر در دستگاهها ایجاد کردم:
- افزایش رم به ۴ گیگابایت
- افزودن یک هارددیسک جدید ۱۰۰۰ گیگابایتی
- نصب سیستم عامل ویندوز سون ۶۴ بیتی که
بتواند از تمام حافظه ی رم استفاده کند. چرا که نگارش ۳۲ بیت ویندوز در حالت عادی فقط حدود ۳ گیگابایت رم را میتواند آدرس دهی و استفاده نماید. آخرین تغییر هم نصب فوتوشاپ نگارش CS5 Me 64 bit بود.
دوستم مقاومت کرد از این جهت که تمام آرشیو کارهایش با نگارش ۷ کار شده بود و به دلیل ناسازگاری فونتها به هم میریخت و باعث دوباره کاری میشد. ولی من با این دلیل که نگارش جدید علاوه بر امکانات فوق العاده، از حجم فایل کمتر و به دلیل ۶۴ بیت بودن از منابع سیستم نیز بیشترین استفاده را میکند، او را قانع کردم که یک بار برای همیشه روی فایل هایش اندکی وقت بیشتر صرف کند و در عوض برای کارهای بعدی سرعت عمل بیشتر را به دست آورد.
پرسش: چرا پردازنده یا کارت گرافیک را ارتقا ندادم؟
پاسخ: این کار مستلزم ارتقاء کامل مادربرد و منبع تغذیه و رم(DDR3) بود. به علاوه اگر قرار بود مثلاً پردازنده دو هسته ای سری ۷۰۰۰ اینتل را ارتقا دهم رم ۴گیگابایت تناسبی با آن نداشت و حداقل به رم دوکاناله ی ۸ گیگابایتی نیاز داشتم.
نکته ی دیگر اینکه کارهایی که با فتوشاپ انجام میدادند مانند تابلو و بنر و … اغلب حجم حافظه بالا و حجم فایل زیادی روی هارد دیسک داشتند.
این را از کجا فهمیدم؟
با استفاده از برنامه Task Manager بخش Performance، درصد استفاده ی پردازنده را در چند کار که غالب کارها مشابه آنها بودند، بررسی کردم و دیدم که به طور میانگین کمتر از ۲۵% پردازنده استفاده میشود و زمان بیشتر پردازنده به دلیل اینکه منتظر خواندن و نوشتن فایل حجیم از هارددیسک است، بیکار میماند. طبیعتاً اگر میانگین درصد استفاده از پردازنده بیشتر از ۵۰% میشد لازم بود که پردازنده نیز ارتقا یابد.
در مورد کارت گرافیک هم ماهیت برنامه فتوشاپ به گونه ای است که پیش نمایشهای پیچیده سه بعدی و … در کارهای چاپی لازم نمیشود. از این رو کارت گرافیکهای سری Nvidia 8000 کافی بودند.
خب! رسیدیم به بخش کلیدی کار یعنی استفاده از هارددیسک دوم که بخش عمده ی افزایش سرعت در اینجا اتفاق میافتد. برای این کار لازم است عملکرد فتوشاپ را هنگام کار با فایلهای پرحجم در سیستم عامل ویندوز توضیح دهم اگر برنامه Microsoft Word را دقت کنید میبینید که هنگام بازکردن یک فایل، پرونده ی موقتی هم در همان پوشه تشکیل میدهد که مخفی است و پس از بستن آن فایل، پرونده ی موقت هم به طور خودکار پاک میشود. در اصطلاح این فایل را Temporary File میگویند.
برنامه ی فتوشاپ هم از فایل موقت برای هر پرونده استفاده میکند که اصطلاح Scratch File را در این برنامه برای فایل موقت به کار میبرند.
معمولاً اندازه فایل موقت فتوشاپ به حجم پرونده ی اصلی، نوع جلوهها و فیلترهایی که حین ویرایش فایل به کار میبریم و احتمال زیاد به مدت زمانی که فایل را باز نگه داشتهایم و اغلب کارهای زیادی روی آن انجام دادهایم بستگی دارد. از این رو گاهی ممکن است یک فایل مثلاً ۴۰۰ مگابایتی را که در کارهای پوستر و تابلو و … این حجم عادی است باز کنیم و حجم پرونده ی موقت آن بیشتر از ۱ گیگابایت شود.
درواقع برنامه فتوشاپ با ۲ فایل پرحجم به طور همزمان سروکار پیدا میکند و روی یک هارددیسک درخواستهای متعدد خواندن و نوشتن برای دو فایل باعث میشود که سیستم عامل هم به زحمت بیفتد و پشت سرهم صف انتظار ایجاد کند و این همان زمانی است که قوی ترین پردازنده هم بیکار خواهد ماند. چون پردازنده اطلاعات را فقط از حافظه اصلی (رم) میخواند و همیشه حافظه ی هارددیسک حداقل ۱۰۰۰۰ مرتبه کندتر از حافظه ی رم عمل میکند.
گاهی در همین حالت از طرف ویندوز پیغام خطای پرشدن هارددیسک نمایش داده میشود. چرا که به طور معمول فایل موقت فتوشاپ روی همان همان پارتیشنی ایجاد میشود که برنامه فتوشاپ و به احتمال زیاد(بسته به روش نصب کاربر) خود ویندوز هم در آن قرار دارد.
ممکن است در تنظیمات منوی Edit->Preferences->Plugin &Scratch Disk پارتیشنهای دیگری ( مانند D: ، E: و … بسته به تنظیمات پارتیشن بندی هارددیسک) انتخاب کنید. توجه داشته باشید که پارتیشنهای روی یک هارددیسک فیزیکی در عمل اثر چندانی روی سرعت کار ندارند. هارددیسک از صفحات دایره ای شکل تشکیل شده است که با سرعت چند هزار دور در دقیقه حول یک محور میچرخند و بازوی خواندن و نوشتن(هد) با حرکت در امتداد شعاع دایرهها اطلاعات را میخواند. پارتشن بندی هارددیسک به چند بخش، صرفاً یک تقسیم منطقی ایجاد میکند وبه معنی ایجاد هارددیسک جداگانه نیست. نتیجه این که وقتی یک فایل را از پارتیشن D: به E: کپی میکنید به لحاظ کندی در عمل تفاوت محسوسی با اینکه روی همان پارتیشن D: از پوشه ای به پوشه ی دیگر کپی کنید ندارد. پس در عمل هم اگر فایل اصلی در یک پارتیشن و فایل موقت در پارتیشن دیگری ایجاد شود باعث درگیر شدن و در اصطلاح “اره بده تیشه بگیر” میشود . پس در همین حال که جریان دعوای بین دو فایل برنامه فتوشاپ را برایتان تعریف میکنیم یک مدعی دیگر پیدا میشود.
حافظه مجازی یا فایل تبادلی ویندوز که به آن Virtual Memory، Page File، Swap File، هم میگویند. اندازه ی آن به طور پیش فرض ویندوز معمولاً از ۵/۱ برابر تا ۳ برابر مقدار حافظه رم در تغییر است.مثلاً اگر حافظه ی رم ۲ گیگابایت باشد، حجم حافظه ی مجازی از ۳گیگابایت اندازه اولیه (Initial Size) تا ۶ گیگابایت اندازه بیشینه (Maximum Size) در تغییر است.
اگر این حافظه را غیرفعال کنید به هنگام اجرای برنامه با حجم بالاتر از حافظه رم آزاد سیستم، به مشکل برمیخورید.
هنگامیکه چند برنامه را به طور همزمان باز میکنید مدیر حافظه سیستم عامل برنامهها (پنجرهها ) پس زمینه را به نفع برنامه ی پیش زمینه که پنجره ی آن روی بقیه پنجرهها قرار گرفته است از حافظه ی اصلی (رم) به حافظه ی مجازی (روی هارددیسک) منتقل میکند تا برنامه با اولویت بالاتر (البته به انتخاب کاربر) حافظه رم بیشتری در اختیار داشته باشد.
حال ممکن است از یک برنامه فعال استفاده کنید و بقیه برنامهها را ببندید. اگر همین برنامه از فایلها و دادههای پرحجمتر از حافظه ی اصلی(رم) سیستم استفاده نمایید بازهم مدیر حافظه سیستم عامل مجبور است که برحسب میزان تقاضای جدید بخشی از دادههای موجود در حافظه ی اصلی را به حافظه ی مجازی روی هارددیسک منتقل کند و دایم در حال خواندن و نوشتن روی هارددیسک خواهد بود. یک مثال از این کارکرد را با برنامه ی فتوشاپ توضیح میدهم.
فرض کنید حافظه ی رم سیستم ۲ گیگابایت باشد. بخشی از این در اختیار سیستم عامل و برنامههای جانبی درحال اجرا و … و در نهایت مثلاً ۱٫۸ گیگابایت برای برنامه ی فتوشاپ آزاد است. برنامه ی فتوشاپ را که اجرا میکنید بخش بیشتری از حافظه اشغال میشود و حافظه ی آزاد به کمتر از ۹۰۰ مگابایت میرسد. حالا یک فایل تصویری ۱٫۵ گیگابایتی – که مثلاً یک بنر ۲ متر در ۱ متری است- باز میکنید. بنر را زوم (بزرگنمایی) میکنید. بخشی که روی صفحه پیش نمایش است در حافظه اصلی قرار میگیرد و بقیه که خارج از محدوده پنجرهی پیش نمایش است در حافظه ی مجازی هارددیسک توسط سیستم عامل ذخیره تهنشین (اصطلاح من درآوردی خودم) میشود. زمانی که تصویر را مثلاً افقی حرکت میدهید که بخش دیگر آن را ببینید آنها را از هارددیسک به حافظهی رم منتقل میکند و بخشی که از محدوده خارج میشود بلافاصله توسط مدیر حافظه ی سیستم عامل از حافظه ی رم به هارددیسک منتقل میشود.
خب با این توصیف ویندوز و فتوشاپ هم در حافظه ی رم و مهمتر از آن در دسترسی به حافظه ی هارددیسک درخواست هم زمان دارند. تصادم سه درخواست همزمان (فایل حافظه ی مجازی ویندوز، فایل در حال ویرایش و فایل موقت فوتوشاپ) از هارددیسک باعث افزایش شدید انتظار و کندی سیستم میشود .
چه باید کرد؟
حداقل ۲ هارددیسک لازم است که حافظه ی موقت فتوشاپ روی یک پارتیشن هارددیسک دیگری به جز هارددیسکی که ویندوز روی آن قرار دارد تنظیم گردد. اگر هارد دیسک دوم مثلاً به عنوان آرشیو فایلها استفاده میشود و بخواهیم یکی از فایلهای آن راتوسط همین فتوشاپ باز کنیم بهتر است که نخست فایل را از هارد دوم به یکی از پارتیشنهای هارد اول کپی کنیم و در محل جدید بازکنیم. چرا که اگر فایل موردنظر در همان هارددیسکی باشد که فایل موقت فتوشاپ قرار دارد دوباره همان مشکل برخورد همزمان پیش میآید. حالت ایده آل این است که از ۳ هارددیسک فیزیکی استفاده کنیم.
- روی یکی حافظه ی مجازی ویندوز باشد.
- دومی(Work) برای بازکردن فایل موردنظر فتوشاپ
- و سومینیز برای حافظه ی موقت فتوشاپ تنظیم شود.
تا این مرحله را اگر انجام دهیم در عملکرد برنامه ی فتوشاپ یا هر برنامه ای با عملکرد مشابه در کار با فایلهای بزرگ، افزایش چشمگیر سرعت را خواهیم دید ولی این همه ی آنچه که میخواهیم نیست. هنوز برای افزایش سرعت جا داریم.
افزایش سرعت دسترسی به هارد دیسک
برای این منظور دو کار را میتوانیم به طور مستقل انجام دهیم. ولی این که کدام یک از این دو کار اثر بیشتری دارد من آزمایش نکردم. چون برای افزایش بیشینه ی سرعت دسترسی هر دو کار را انجام دادم.
فورمت کردن با بیشترین اندازه ی ممکن برای کلاستر
زمانی که یک پارتیشن را فورمت میکنید سیستم عامل خانههای حافظه ی آن را آدرس دهی میکند تا قابل استفاده شود. نکته ی مهم این است که کوچک ترین واحد ذخیره سازی در هارد دیسک بایت نیست. کلاستر (بلوک) در سطح سیستم عامل مطرح میشود. عبارتهای Allocation unit، Block و Cluster در سیستم عامل به یک مفهوم به کار میروند. در واقع سیستم عامل به جای این که بایت به بایت اطلاعات را از دیسک بخواند آنها را به صورت گروهی میخواند تا هد خواندن/نوشتن هارد دیسک مراجعه ی کمتری به آن داشته باشد. به هنگام فورمت هارد دیسک این که اندازه ی پیش فرض کلاستر چند بایت باشد به حجم کل دیسک و حداکثر تعداد خانه هایی که امکان آدرس دهی هست بستگی دارد. در سیستم عامل قدیمیداس میکروسافت که از سیستم مدیریت فایل FAT16 استفاده میشد حداکثر ۲ به توان ۱۶ یعنی ۶۵۵۳۶ خانه قابل آدرس دهی بود. بیشترین اندازه برای هر کلاستر هم ۳۲۷۶۸ بایت (۳۲ کیلوبایت) در نظر گرفته شده بود. به همین دلیل بیشترین اندازه برای هر پارتیشن برابر با حاصل ضرب این دو عدد یعنی ۲۱۴۷۴۸۳۶۴۸ بایت (۲ گیگابایت) بود. در سیستم فایلی FAT 32 و NTFS هم تعداد کلاسترها بسیار بیشتر از حالت قبلی هست و هم بیشترین اندازه برای هر کلاستر.
مقایسه ی جامع سیستمهای فایلی را در این آدرس میتوانید ببینید:
http://www.ntfs.com/ntfs_vs_fat.htm
مفهوم دقیقتر کلاستر را با یک مثال توضیح میدهم. اگر اندازه ی فایل ۱ بایت باشد به اندازه ی ۱ کلاستر فضا خواهد گرفت. اندازه ی کلاستر اگر ۴ کیلو بایت باشد و فایل ما ۵ کیلو بایت حجم داشته باشد، به اندازه ی دو کلاستر کامل یعنی ۸ کیلو بایت فضا میگیرد. حجم فایل بر حسب بایت با عبارت Size و همان حجم بر حسب کلاستر با عبارت Size on disk نمایش داده میشود و اندازه ی کلاستری همیشه بزرگتر یا مساوی با اندازه ی بایتی خواهد بود.
در حالت پیش فرض وقتی که از پنجره ی My Computer بخواهیم یک پارتیشن را فورمت کنیم اندازه ی پیش فرض ۴ کیلوبایت برای هر کلاستر تعیین میگردد که یک اندازه ی متوسط است.
هر چه اندازه ی کلاستر بزرگتر باشد، سیستم عامل در هر بار فرمان خواندن و نوشتن حجم بیشتری را میخواند و تعداد مراجعه ی آن به دیسک کمتر میشود. ولی یک اثر جانبی هم دارد، اصراف در فضای ذخیره سازی. یعنی اگر مثلا اندازه ی کلاستر را ۶۴ کیلو بایت بگیریم هر فایل ۱ بایتی هم ۶۴ کیلوبایت حجم خواهد گرفت. این کار برای پارتیشنی که فایلهای متعدد با اندازههای کوچک در آن باشد، باعث اتلاف قال توجه فضای ذخیره سازی خواهد شد. به همین خاطر این کار یعنی انتخاب اندازه ی کلاستر بزرگ را فقط باید برای پارتیشنی در نظر بگیریم که فایلهای حجیم در آن ذخیره میشود. فایلهای حجیم میتوانند فایلهای ویدئویی یا عکسهای پر حجم باشند. فایل حافظه ی مجازی ویندوز و فایل موقت فوتوشاپ هم که اشاره کردیم در چنین حالتی میتوانند با سرعت بیشتر خوانده شوند.
پس علاوه بر این که دیسک مجزا برای این فایلهای در نظر میگیریم بهتر آن است که به هنگام فورمت آنها با سیستم NTFS برای Allocation unit size بیشترین اندازه ی ممکن یعنی ۶۴ کیلوبایت را در نظر بگیریم. (در نگارشهای آینده ی ویندوز ممکن است اندازههای بزرگتر هم در دسترس باشد)
این افزایش سرعت را به هنگام کپی فایل از یک دیسک به دیسک دیگر نیز مشاهده خواهید کرد.
گام آخر، استفاده از بافر خواندن و نوشتن دیسک (کش یا حافظه ی میانی)
فرض کنید میخواهید گلدانها را آب بدهید. در حالت عادی یک پارچ را زیر شیر آب میگیرید و پس از پر شدنش، شیر آب را میبندید و گلدانها را آب میدهید تا پارچ خالی شود. این کار را تکرار میکنید تا همه ی گلدانها را آب بدهید. زمان انتظار شما هم برای رفت و آمد و هم برای پر شدن پارچ زیر شیر آب خواهد گذشت. حالا میخواهید این زمان انتظار را کاهش دهید. میتوانید یک تشت بزرگتر را زیر شیر آب قرار دهید. هنگامیکه شما در حال آبیاری گلدانها هستید شیر آب (با حجم مناسب) باز و تشت در حال پر شدن است. برای پر کردن پارچ کافی است آن را یکباره از آب تشت پر کنید و دیگر نیازی نیست که پارچ را زیر شیر بگیرید و منتظر پر شدنش بمانید.
حافظه ی کش در جاهای مختلفی مطرح میشود. یک جا در پردازنده ی کامپیوتر که در واقع اطلاعات از حافظه ی رم اول وارد کش پردازنده میشوند که به دلیل نزدیکی به پردازنده سریعتر قابل دسترس اند. یعنی مثلا به هنگام اجرای یک برنامه دستورها در خانههای پشت سر هم حافظه ی رم قرار دارند و پردازنده هر بار یک دستور را میخواند و اجرا میکند. حال برای این که به هنگام این مراجعه به حافظه زمان را از دست ندهد در یک بار خواندن به جای یک بایت مثلا ۵۱۲ کیلوبایت دستور العمل را از حافظه ی رم به داخل حافظه ی پردازنده (کش) میخواند. هر بار که این پردازشها تمام شد یا با دستور پرش (jump , go to) به آدرسی که در این محدوده ی خوانده شده قرار ندارد، بخواهد برود بلوک دیگری از دستورها را از حافظه ی رم میخواند.
یک جا هم در هارد دیسک که سیستم عامل از حافظه ی رم به عنوان واسطه استفاده میکند و معمولا بیشتر از آن مقدار داده ای که درخواست خواندن یا نوشتن داده شده ابتدا در حافظه ی رم قرار میدهد و پس از پایان عملیات خواندن و نوشتن روی یک بلوک از داده ها، به یک باره آنها را در حافظه ی دیسک مینویسد. اگر پیش از نوشتن اطلاعات قطعی شده روی هارد دیسک، برق سیستم قطع شود، اطلاعات از بین خواهد رفت.
البته همه ی تکنولوژیهای کش مربوط به پردازنده یا هارد دیسک به همین سادگی که بیان کردیم نیستند.
در بخش Device Manager ویندوز در شاخه ی Disk Drives روی هارد دیسک راست کلیک کرده، گزینه ی Properties را انتخاب نمایید. در پنجره ی ویژگیهای هارد دیسک، برگه ی Policies را باز کنید. گزینه ی اول به طور پیش فرض برای افزایش سرعت عمل نوشتن روی هارد دیسک فعال است و حافظه ی کش را برای هارد دیسک مورد نظر فعال میکند. با این حال ویندوز در فاصله ی زمانی معین حافظه ی کش را خالی میکند و دادهها را روی هارد دیسک مینویسد. این کار میتواند گهگاه باعث افت سرعت پردازش برنامهها شود. با فعال کردن گزینه ی دوم در برگه ی Policies میتوانید ویندوز را از این کار هم باز دارید. همان طور که در شکل میبینید ویندوز توصیه کرده است که کامپیوتر به منبع برق پشتیبان تا در صورت قطع برق اطلاعات از بین نرود.
خب!
ما به این منبع برق پشتیبان کاری نداریم. چون این ویژگی را فقط روی هارد دیسکی که حافظه ی مجازی روی آن تنظیم شده است فعال خواهیم کرد. یعنی برای دیسکی که فایل کاری ما روی آن ذخیره شده است گزینه ی دوم را غیر فعال میکنیم تا احتمال از بین رفتن تغییرات بر اثر قطع برق به کمترین میزان برسد.
جمع بندی پایانی
برای افزایش سرعت کار برنامه هایی که با فایلهای حجیم سر و کار دارند کارهای زیر را باید انجام دهیم:
اگر برنامه از فایل موقت استفاده میکند (مانند فوتوشاپ) هارد دیسک فیزیکی (و نه پارتیشن) جداگانه باید برای آن در نظر بگیریم و مسیر فایل موقت را روی هارد دیسکی که مخصوص این کار است تنظیم کنیم. میتوان برای این کار یک هارد دیسک کم حجم و قدیمیتر هم استفاده کرد. چون دادههای موقت پس از هر بار اجرا پاک میشوند و نیازی به ذخیره سازی آنها نیست.
فایل کاری را روی هارد دیسک فیزیکی دیگری که مسیر فایل موقت برنامه روی آن نیست، باز کنیم. اگر فایل مورد نظر در جای مناسب نباشد، نخست آن را داخل پارتیشن و دیسک مناسب کپی کنیم، سپس توسط برنامه آن را باز کنیم.
پارتیشن هایی که فایلهای پر حجم (خواه دائم یا موقت) روی آنها ذخیره میشود با بزرگ ترین اندازه ی ممکن برای کلاستر (در اینجا ۶۴ کیلوبایت) فورمت کنیم.
اگر یو پی اس نداریم فقط برای دیسکهای مربوط به فایل موقت تنظیمات کش را در برگه ی Policies مشخصات هارد دیسک Device Manager انجام دهیم. اگر از یو پی اس باتری دار استفاده میکنیم میتوانیم برای تمام هارد دیسکها تنظیمات کش را فعال کنیم تا از بیشترین سرعت ممکن خواندن و نوشتن بهره ببریم.
در صورت امکان برای بیشترین کارآیی از ۳ هارد دیسک فیزیکی استفاده کنیم:
- یکی برای فایل کاری (که سیستم عامل و برنامهها هم میتواند در یک پارتیشن از همین دیسک نصب شوند)
- یکی برای فایل موقت برنامه کاربردی مورد استفاده (مثلا فوتوشاپ)
- یکی برای حافظه ی مجازی ویندوز (Virtual Memory)