مقدمه
شاید تا کنون برای شما این سوال پیش آمده باشد که یک سیستم استورج چه پارامترهایی را داراست. بعد از شناسایی این پارامترها، سوال بعدی این است که چگونه می توان پارامترهای یک سیستم استورج را سنجید و آنرا ارزیابی کرد، و اینکه آیا ممکن است که هر سیستم استورجی را در محیط عملی زیر بار برد، مثلا 50 ادیتور غیر خطی همزمان به آن وصل کرد و بعد تازه بررسی کرد که آیا توانایی های لازم را دارد یا خیر؟
بخش مهمی از کار مهندسی simulation و emulation است. در بسیاری از موارد ما امکان انجام یک تست شرایط واقعی از یک سیستم را نداریم، و بنابراین سعی می کنیم آن شرایط واقعی را شبیه سازی کنیم تا پاسخ سیستم را در آن شرایط بررسی کنیم.
این کاری است که برنامه های filesystem benchmark tool انجام می دهند. این برنامه ها شرایط بارهای مختلفی که می توان روی سیستم استورج تحمیل کرد شبیه سازی می کنند تا مشخص شود که آن استورج چه توانایی هایی دارد.
به عنوان مثال یک برنامه بنچ مارک می تواند 50 ترد مختلف که هر کدام 67 درصد از استورج می خوانند، و 33 درصد روی استورج می نویسند ایجاد کند، که مشابه عملکرد 50 دستگاه ادیتور غیر خطی است که هر کدام دو استریم تصویر را می خوانند که روی آن ادیت کنند و یک استریم تصویر را می نویسند که خروجی آن است.
یا به عنوان مثال ایجاد باری که 4 ضبط همزمان را دارد، می تواند معادل یک ویدئو سرور اینجست چهار کاناله فرض شود. پاسخ سیستم استورج به این بارهای شبیه سازی شده، می تواند تقریب دقیقی از عملکرد آن در محیط واقعی باشد.
علاوه بر این اندازه گیری بازدهی (performance) زیر سیستم IO در کامپیوتر بسیار مهم است، چون مثلا دلیل عملکرد کند یک دیتابیس در یک سرور، می تواند بازدهی پایین IO آن باشد.
سناریوهای استفاده بسیار بیشتری می توانند وجود داشته باشند، مثلا وقتی که ما یک استورج جدید خریداری کرده ایم و می خواهیم performance آنرا اندازه گیری کنیم، یا وقتی که نوع راید یک سیستم را عوض کرده ایم و می خواهیم performance آنرا اندازه گیری کنیم، یا وقتی که می خواهیم یک سرور را برای یک کار خاص، مثلا دیتابیس، یا فایل سرور تیونینگ (tuning) کنیم. در تمامی این موارد ما نیاز به سنجیدن بازدهی زیر سیستم file IO داریم.
برنامه های زیادی در زمینه ارزیابی عملکرد استورج وجود دارد که دو تا از معروفترین آنها، IOzone و IOmeter هستند که هم برای لینوکس و هم برای ویندوز وجود دارند. از این دو برنامه IOzone به خاطر اینکه بصورت خالص سورس باز است (IOmeter با وجود اینکه الان سورس باز شده است، لیسانس اینتل دارد، و علاوه بر این واسط کنترل آن فقط ویندوزی است) بیشتر مورد توجه کاربران سورس باز است. (البته باید توجه داشت که برنامه های تست زیادی برای file IO وجود دارند مثل bonnie++ و iostat)
نکته مهم: تفاوت simulation و emulation در این است که simulation رفتار سیستم را شبیه سازی می کند، در حالیکه emulation عملکرد داخلی سیستم را شبیه سازی می کند.
نکته مهم: به خاطر ماهیت این مقاله و اینکه سوییچ های لینوکسی زیادی در آن استفاده شده است که با راست به چپ شدن در سیستم های وب امکان به هم ریخته شدن آنها وجود دارد، لطفا قبل از زدن دستورات فرمت درست آنها را در نظر بگیرید.
معرفی IOzone
برنامه IOzone یک برنامه filesystem benchmark tool است که برای بررسی عملکرد انواع استورج، از جمله دیسک ها، رایدها و استورج های پیشرفته تر استفاده می شود. خصوصیات این برنامه را می توان بصورت زیر فهرست کرد:
- این برنامه برای بسیاری از سیستم عامل ها، مثل انواع لینوکس، انواع BSD، خانواده مایکروسافت، انواع یونیکس ها (مثل AIX, SCO و بقیه) پورت شده است.
- کد آن برای سیستم عامل های 64 بیتی سازگار است.
- IOZone از توابع mmap برای عملیات IO استفاده می کند.
- سیستم ترد آن بر مبنای POSIX Threads است.
- IOzone قابلیت سنجش تک استریم و چند استریم (Single / Multiple Stream measurment) و قابلیت سنجش فایل سیستم های توزیع شده (distributed file system) یا همان کلاسترها را دارد.
- با فایل های بزرگ سازگار است.
- قابلیت رسم نمودار تاخیر (Latency) برای فایل سیستم را دارد.
- می تواند برای جلوگیری از ایجاد اثر استراگلر (Straggler Effect) می تواند عملیات Stonewalling را انجام دهد.
- قابلیت تولید فایل خروجی با فرمت Excel دارد تا بتوان نمودارهای مورد نظر را از آن ایجاد کرد یا روی اطلاعات کار تجزیه و تحلیل انجام داد.
- این برنامه برنده جایزه infoworld Bossie awards سال 2007 برای برای بهترین ابزار file I/O شده است.
- IOzone اکنون بخشی از Phoronix Test Suite که مجموعه مفصلی از انواع ابزارهای تست ویندوزی است می باشد.
- علاوه بر این IOzone در بسیاری از ابزارهای دیگر تست، مثل Inquisitor ابزار تست File I/O است. FreeNAS هم از IOzone برای تست سرعت استفاده می کند.
- ابزارهایی برای تبدیل خروجی IOzone برای نمایش گرافیکی با GNUplot که یک ابزار نمودار کشی سورس باز است هم وجود دارد.
انواع تست هایی که IOZONE انجام میدهد
IOzone می تواند 13 نوع آزمون انجام دهد، که شش تای اول آن بصورت مستقیم با پرفورمانس استورج در کار دیتابیس مرتبط هستند. البته آزمون های تخصصی تری هم وجود دارند که خارج از محدوده این مقاله قرار می گیرند.
Write: این تست بازدهی نوشتن یک فایل جدید در فایل سیستم را نشان می دهد. وقتی یک فایل برای بار اول نوشته می شود، علاوه بر اینکه محتویات فایل باید نوشته شوند، اطلاعات متادیتای آن که رد فایل را نگاه می دارند باید در فایل سیستم ایجاد شوند. (مثل اطلاعات دایرکتوری، اطلاعات تخصیص فضای دیسک). این اطلاعات جزو خود فایل نیستند، بنابراین طبیعی است که performance نوشتن فایل در بار اول، از پرفورمنس نوشتن مجدد روی آن (re-write) پایین تر باشد.
Re-Write: این تست نشان دهنده بازدهی نوشتن به یک فایل موجود است. از آنجا که متادیتای این فایل در فایل سیستم ایجاد شده است طبیعی است که بازدهی آن بالاتر از write باشد.
READ: این تست نشان دهنده بازدهی خواندن فایلی است که اکنون در فایل سیستم وجود دارد (یعنی از قبل ایجاد شده و وجود دارد)
Re-Read: این بازدهی خواندن مجدد یک فایل (که به تازگی خوانده شده است) را نشان می دهد. (یعنی وقتی یک فایل خوانده شده است، مجددا خوانده شود. این تاثیر کش سیستم را نشان می دهد و معمولا بازدهی آن بالاتر از read است)
Random Read: این تست نشان دهنده بازدهی خواندن یک فایل بصورت تصادفی از بخش های مختلف آن است، یعنی بصورت تناوبی (sequential) عملیات خواندن انجام نمی شود. بازدهی این بخش تحت تاثیر پارامترهای زیادی مانند سایز کش سیستم عامل، تعداد دیسک و نوع راید آن، نوع دیسک و seek latency و مانند این است.
Random Write: این تست نشان دهنده بازدهی نوشتن روی یک فایل در بخش های مختلف آن بصورت تصادفی است. بازدهی این بخش تحت تاثیر پارامترهای زیادی مانند سایز کش سیستم عامل، تعداد دیسک و نوع راید آن، نوع دیسک و seek latency و مانند این است.
این شش تست اول بصورت مستقیم با بازدهی استورج برای عملکرد دیتابیس در ارتباط هستند.
Backward Read: این بازدهی خواندن، وقتی فایل از عقب به جلو (بر عکس) خوانده می شود نشان می دهد. این به نظر عجیب است، ولی بعضی از برنامه ها، مانند MSC Nastran این گونه با فایل برخورد می کنند. چون سایز فایل هایی که این برنامه ها با آن سر و کار دارند بسیار بزرگ (در حد ترابایت است)، بعضی از سیستم عامل ها این رفتار را تشخیص داده و آنرا بهینه می کنند که در این تست خودش را نشان می دهد. (MSC Nastran یک نرم افزار تجزیه و تحلیل مهندسی المان محدود است)
Record Re-Write: این تست نوشتن و مجدد نوشتن فقط یک بخش کوچک و مشخص از یک فایل است. این رفتار می تواند خیلی جالب باشد زیرا:
- اگر سایز این قسمت بقدری کوچک باشد که در cache خود cpu جا شود، اعداد حاصل حیرت انگیز خواهند بود.
- اگر سایز این قسمت بیش از cache سی پی یو باشد، ولی در TLB (translation lookaside buffer) جا شود، باز هم نتایج اعداد بالایی خواهند بود.
- اگر سایز این قسمت بیش از TLB باشد، اما هنوز در cache خود سیستم عامل جا شود، بازهم performance خوب خواهد بود.
- نهایتا اینکه اگر سایز این قسمت از کش سیستم عامل هم بیشتر باشد IO واقعی سیستم فایل به نمایش در می آید.
Stride Read: این بازدهی file IO را وقتی در آن به اصطلاح گام بلند زده می شود نشان می دهد. یعنی 4 کیلو بایت از اول آن خوانده می شود، بعد 200 کیلوبایت جلو می پرد و مجدد 4 کیلو بایت خوانده می شود، مجدد 200 کیلو بایت جلو می پرد و 4 کیلوبایت می خواند و الی آخر. این رفتاری است که برنامه هایی که دیتای خود را بصورت ساخت یافته داخل فایل نگاه میدارند نشان میدهند، وبیشتر سیستم عامل ها با تشخیص این رفتار، پاسخ به آنرا بهینه می کنند.
Fwrite: این بازدهی نوشتن فایل با استفاده از تابع fwrite() را نشان می دهد.
Frewrite: مثل re-write ولی با استفاده از fwrite.
Fread: این بازدهی خواندن فایل با استفاده از تابع fread() رانشان می دهند.
Freread: مثل re-read ولی با استفاده از fread.
استفاده از fread و fwrite باعث می شود که عملیات خواندن و نوشتن با استفاده از کش سیستم عامل انجام شود، که این باعث کم شدن رجوع واقعی به فایل سیستم و در نتیجه افزایش performance می شود.
روش استفاده
سوییچ های دستور و کاربرد هر کدام
-a بصورت اتوماتیک یک مجموعه تست را انجام می دهد. این تست ها شامل فایل هایی با اندازه 64 کیلوبایت تا 512 مگابایت است که هر 13 نوع تست روی آنها انجام می شود. هر بار سایز فایل تست دو برابر می شود و تست روی آن انجام می شود (یعنی 64 و 128و 256 و الی آخر). اندازه رکورد سایز هم از 4 کیلو تا 16 مگابایت به تدریج افزایش خواهد یافت (هر پله دو برابر). اگر این با -g استفاده شود که اندازه حداکثر فایل را مشخص می کند، افزایش هر پله دو برابر تا رسیدن به اندازه فایلی که با -g داده شده است ادامه پیدا می کند.
-i بصورت دستی مشخص می کند که چه تست هایی انجام شود. پارامتر جلوی i شناسه تست (test_id) است. مثلا -i0 -i1 تست های شماره صفر و یک، یعنی read و write را انجام می دهد.
-l , -u مشخص می کند تست از چند ترد شروع شود و به چند ترد ختم شود.l حد پایین (lower) و u حد بالا (upper) است. به عنوان مثال -l1 -u10 مشخص می کند که همه تست ها اول با یک ترد انجام شود. بعد مجدد همه تست ها با 2 ترد، و همینطور الی آخر تا همه تست ها با 10 ترد انجام شود. باید در نظر داشت که این پارامتر بسیار مهم است چون بسیاری از محدودیت های file IO خود را در هنگام کار موازی چند پروسس با هم نشان می دهند. اگر پارامتر l و u یک عدد داشته باشند (مثلا -l5 -u5) کل تست ها فقط برای پنج ترد انجام می شود.
-s سایز فایلی که برای تست استفاده می شود مشخص می کند. (k/m/g) (کیلو / مگا / گیگا) مثلا -s 10g یعنی از یک فایل 10 گیگابایتی استفاده کند.
-r اندازه رکوردهایی که در تست استفاده می شود مشخص می کند. (k/m/g) (کیلو / مگا / گیگا) این اندازه قطعاتی است که فایل تقسیم (slice) می شود. به عنوان مثال در تست برای دیتابیس اوراکل، رکورد سایز باید برابر اندازه db_block_size قرار گیرد. برای فایل های ویدئویی باید رکورد سایز را بزرگتر گرفت. این پارامتر بسیار مهمی است، چون مشخص می کند که استورج شما بسته با کاربردی که برای آن در نظر گرفته شده است (مثلا دیتابیس با رکورد سایز 4 کیلو، یا استورج فایل ویدئویی با رکورد سایز 512 کیلو و بزرگتر) چه بازدهی خواهد داشت.
-t این گزینه برای سنجش throughput استفاده می شود. باید در مقابل آن تعداد ترد مورد نظر را مشخص کرد (مثلا -t 5). این گزینه با -a قابل استفاده نیست. برای اینکه تمامی تست ها با throughput با تعداد ترد مشخص انجام شود باید -i را نگذاشت.
-g این گزینه خیلی مهم است. باید توجه داشت که اگر اندازه رم دستگاه بیش از 512 مگابایت باشد، باید حتما اندازه فایل تست را از اندازه رم بیشتر انتخاب کرد، تا اینکه اثر cache حافظه را خنثی کند. به عنوان مثال اگر اندازه رم 1 گیگابایت است، باید فایل تست را 3 گیگابایت انتخاب کرد، وگرنه نتایج حاصله غیر معقول خواهد بود، چون اثر حافظه cache در نتایج تست وارد می شود). توصیه می شود که اندازه فایل موقت تست حداقل سه برابر system buffer cache باشد تا اثر آنرا خنثی کند. مثلا -g 2G فایل های تست تا اندازه دو گیگابایتی درست می کند. این گزینه فقط با -a قابل استفاده است.
مهم: گزینه -g اندازه نهایی فایلی تست را مشخص می کند و فقط با -a قابل استفاده است. به عبارت دیگر -g مشخص می کند که فایل تست در هر بار دوبرابر شدن تا چه اندازه ای بزرگ شود (که پیش فرض آن 512 مگابایت است). اما گزینه -s مشخص می کند که اندازه فایل تست در همین تست جاری چه اندازه ای باید باشد.
-R بصورت عادی خروج IOzone بصورت text و روی کنسول صفحه است، اما -R مشخص می کند که خروجی باید به فرمت excel باشد. مثلا iozone -a -R > test1.xls
-b مشخص می کند که فایل خروجی کجا باشد و فایل باینری اکسل باشد. این معمولا با -R استفاده می شود. مثلا -R -b file.xls مشخص می کند که خروجی با فرمت اکسل در فایل file.xls ذخیره شود. توجه داشته باشید که -b فایل خروجی را با فرمت باینری تولید می کند و بنابراین دیگر با ادیتور متنی قابل دیدن نیست.
-+u اطلاعات اینکه چقدر cpu مصرف شده است (CPU Utilization) را هم به خروجی اضافه می کند.
-F اجازه تست چند مونت پوینت همزمان را با هم می دهد. این با -l و -u استفاده می شود و پشت سر آن مسیر فایلهای موقتی و محل مونت آنها می آید، مثل iozone -l 2 -u 2 -r 16k -s 512M -F /u01/tmp1 /u02/tmp2 . باید توجه داشت که کاربر باید دسترسی (permission) لازم به نقاط مورد نظر را داشته باشد وگرنه خطای permision denied می دهد.
مهم: گزینه های تست اتوماتیک (-a) و تست دستی (مثلا -t) با هم قابل ترکیب کردن نیست. مثلا -t 2 -g 2G خطا می دهد. درست آن -t -s 2G است.
پارامترهای زیاد دیگری برای انواع تست با IOzone وجود دارد که از حوصله این مقاله خارج است و افراد مشتاق با مراجعه به راهنمای IOzone باید نحوه کار با آن را یاد بگیرند.
مثال های استفاده
iozone -R -b /u01/oradata/bench_u01_test.xls -r 8k -s 100m -l 2 -u 10
این دستور throughput (بر حسب KB/s کیلو بایت بر ثانیه)، برای هر کدام از 13 نوع تست، با اندازه رکورد 8 کیلو و سایز فایل 100 مگابایت، با تعداد ترد که از 2 شروع می شودو به 10 ختم می شود اندازه می گیرد و با فرمت اکسل در فایل bench_u01_test.xls ذخیره می کند. بعد می توان اطلاعات حاصله را به نمودار تبدیل کرد.
iozone -a -i 0 /mnt/temp
این فقط تست شماره صفر (یعنی write و re-write) را روی استورجی که در /mnt/temp مونت شده است انجام می دهد. (از فایل سایز 64 کیلو بایت تا 512 مگابایت)
iozone -a -i 0 -i 1
این تست های شماره صفر و یک (یعنی write/re-write و read/re-read) را در فایل سیستم جاری انجام می دهد.
iozone -a -i 0 -s 2048 -r 1024
این فقط مجموعه تست صفر (write/re-write) را با اندازه فایل 2 مگابایتی و اندازه رکورد 1 مگابایتی انجام می دهد. توجه داشته باشید که چون در اینجا گزینه -s و -r به صراحت قید شده اند، تست فقط در فایل به اندازه 2 مگابایت و رکورد سایز 1 مگابایت و فقط تست صفر انجام می شود، و پلکانی زیاد نمی شود.
iozone -i 0 -t 2 -s128m
این مجموعه تست صفر (write/re-write) را برای دو ترد و اندازه گیری throughput انجام می دهد. باید توجه داشت که -a و -t با هم نمی توانند استفاده شوند. بنابراین اگر قرار است تمامی 13 تست انجام شود، نباید -a را گذاشت، بلکه باید -i را حذف کرد، یعنی iozone -t 2.
iozone -t 2
این تمامی 13 تست را برای throughput و دو ترد همزمان انجام می دهد.
iozone -a -+u -b output.xls
این تمامی 13 تست، بصورت اتوماتیک و اضافه کردن اطلاعات مصرف cpu را در فایل خروجی ذخیره می کند.
iozone -a -g 2G -i 0
مجموعه تست صفر را بصورت پلکانی تا رسیدن به اندازه فایل 2 گیگابایتی انجام می دهد. باید توجه داشت که برای سیستم های با بیش از 512 مگابایت رم حتما گزینه -g با سه برابر اندازه رم استفاده شود تا نتایج حاصله معقول باشد. البته این از 16 کیلو بایت شروع می کند و همینطور اندازه فایل را دو برابر می کند و در هر اندازه فایل جدید، اندازه رکورد را از حد پایین تا حد بالا (که خودش در هر قدم دو برابر می شود) تست می کند. بنابراین این تست خیلی طول می کشد.
iozone -l 2 -u 2 -r 16k -s 512M -F /u01/tmp1 /u02/tmp2
تست با دو ترد (چون حداقل و حداکثر هر دو عدد 2 هستند) با فایل 512 مگابایت و اندازه رکورد 16 کیلوبایتی در دو نقطه که با -F مشخص شده است. فایل های tmp1 و tmp2 بصورت خودکار توسط IOzone برای تست ایجاد می شوند.
باید توجه داشت که بصورت عادی تا وقتی -F داده نشده باشد همه تست ها در فایل سیستم جاری (هر کجا که الان هستیم) یا جایی که مسیر آن جلوی iozone داده شده است انجام می شود، اما به هر حال همه یک نقطه را تست می کنند، بنابراین اگر هدف تست چند پارتیشن مجزا، ولی همزمان با هم باشد، حتما باید -F داده شود و به تعداد -u هم مسیر جلوی -F داده شود.
iozone -a -s2g -r1m /mnt/storage
این تمامی 13 تست را با اندازه فایل 2 گیگابایت و اندازه رکورد یک مگابایت روی نقطه /mnt/storage انجام می دهد.
نحوه تفسیر خروجی
IOzone در خطوط اول خروجی، دستور داده شده برای تست، ورژن برنامه و اطلاعات جانبی آنرا چاپ می کند و سپس به چاپ نتایج خروجی می پردازد.
نتایج خروج در حالت اتوماتیک بصورت یک جدول که اندازه فایل و اندازه رکورد و سرعت در هر تست در آن مشخص شده است چاپ می شوند. در حالتی که هر تست جدا شده است اعداد حداقل و حداکثر برای نتایج تست نشان داده می شوند.
خود سایت IOzone یک فایل اکسل نمونه به نام lab_graphs1.xls دارد که نشان می دهد چطور می توان نتایج را به نمودار گرافیکی تبدیل کرد. علاوه بر این در این فایل بسیار زیبا نشان داده شده است که تغییر اعداد در هر حالت به چه پارامتری وابسته هستند که مطالعه و دیدن آن توصیه اکید می شود.
اسکریپت هایی برای تبدیل نتایج IOzone به نمودار توسط برنامه GnuPlot هم وجود دارد که قابل استفاده است.
خود راهنمای IOzone در چند صفحه آخر انواع نمودارها را کشیده است و توضیح داده است که هر بخش اعداد چرا زیاد و کم شده اند که حتما باید مطالعه شود.
نکات مهمی که باید به خاطر داشت
مجددا تاکید می شود که اندازه فایل تست که با پارامتر -g مشخص می شود بسیار مهم است. اگر این عدد درست انتخاب نشود نتایج تست بسیار عجیب و غریب و غیر واقعی خواهند بود. همینطور وقتی از -t یا -l استفاده می شود انتخاب درست عدد -s بسیار مهم است.
باید توجه داشت که انتخاب صحیح تست نسبت به کاربرد آن بسیار مهم است و باید در پارامترهای آن و نحوه چینش آن دقت زیادی کرد.
در تست های من گزینه -s با سایز بیشتر از 1 گیگابایت با -t کار نمی کرد و خطا می داد.
نتایج یک تست کامل ممکن است زمان زیادی ببرد، بنابراین باید از قبل زمانبندی انجام کار در نظر گرفته شود.
علاوه بر این افراد باید عادت کنند که IOzone را در مورد هر نوع سیستم استورجی که برخورد می کنند، از یک usb flash ساده، تا هارددیسک کامپیوتر خودشان، تا یک سیستم استورج گران قیمت بکارببرند و نتایج آنرا تجزیه و تحلیل کنند، تا اینکه با پارامترهای سیستم استورج و اعداد تقریبی آن آشنا شوند.
ما برای استورج های ویدئویی، باید فایل های با سایز بزرگ (چند گیگابایتی)، با رکورد سایزبزرگ (مثلا 512 کیلوبایت یا یک مگابایت) در نظر بگیریم، که چون اندازه فایل خیلی بزرگ است، تاثیر کش سیستم عامل و کلا تاثیر کش در آن بسیار کم خواهد بود.
برای نصب iozone در سیستم های ubuntu می توان از sudo apt-get install iozone3 استفاده کرد.
تست های read/ re-read و write / re-write خیلی سریع انجام می شوند، اما مابقی تست ها مانند random read زمان طولانی برای تکمیل می برند. بنابراین فکر نکنید که برنامه گیر کرده است و آنرا نبندید.
پارامترهای مهم در پرفورمانس استورج
باید توجه داشت که پارامترهای زیادی در بازدهی یک استورج مهم هستند، که وابستگی زیادی به ساختار و نوع آن استورج دارند. از یک دیسک تنها، تا یک استورج توزیع شده (Distributed) فاصله و تفاوت های تکنولوژیکی زیادی وجود دارد. بعضی از پارامترهای مهم در بازدهی استورج به صورت زیر هستند:
- سرعت گردش هارد دیسک (مثلا 7200 دور، یا 10 هزار دور، یا 15000 دور بر دقیقه)
- سرعت باس ارتباطی (مثلا ساتا 1، یا ساتا 2، sas، یا FC)
- حجم بافر استورج (64 مگابایت، یا بیشتر)
- سیستم راید استفاده شده (راید 0، 1، 5، 6، 10)
- اندازه بلوک سایز raid
- سرعت و پهنای باند کنترلر سیستم.
- نوع فایل سیستم استفاده شده (ntfs, ext3, ext4, zfs, xfs)
- نوع نیمه هادی استفاده شده و ساختار چینش آن در حافظه های SSD.
این پارامترها هر کدام بر حسب استفاده ای که قرار است از استورج شود، باید تنظیم شوند، و اصولا ممکن است استورجی که بسیار عالی است، با تنظیمات غلط بازدهی پایینی نشان دهد، یا اینکه یک استورج با کیفیت متوسط، با تنظیمات و تیونینگ مناسب یک استورج گرانقیمت را در performance پشت سر بگذارد.
اعداد تقریبی
در یک سیستم Fujitsu RX300-S5 که در آن چهار هارد MBD2147RC fujitsu SAS-600 147 Gigabyte 10k rpm بصورت راید 10 سخت افزاری بسته شده بودند، نتیجه تست با 5 ترد همزمان با دستور iozone -t5 -s1g /mnt/storage برابر 270 مگابایت برای write و 180 مگابایت برای read بود. این سایز فایل یک گیگابایت انتخاب شد که تاثیر کش سیستم حداقل شود. این اعداد به نظر منطقی و قابل اعتماد می رسند. از آنجا که سیستم راید 1 است بازدهی آن با تعداد ترد بیشتر از یکی همچنان ثابت است.
نکته جالب این است که این عدد 180 مگابایت بر ثانیه، برای 5 تا random read به 10 مگابایت بر ثانیه می رسد! (یعنی در حدود 2 مگابایت به ازای هر پروسس) و همینطور برای 5 تا random write این عدد از 270 مگابایت بر ثانیه به 17 مگابایت بر ثانیه می رسد! که نشان می دهد تفاوت بین خواندن و نوشتن ترتیبی (sequential) و تصادفی (random) تا چه حد جدی است.
بسیار مهم
هر واحد مرتبط با کار استورج باید در مورد تمامی استورج هایی که با آنها سر و کار دارد، این اعداد را استخراج و فایل های آنها را ذخیره کند، تا در طولانی مدت یک مرجع از انواع استورج و performance آنها وجود داشته باشد.
متخصص در زمینه سیستم های استورج، استریمینگ و برودکست