اطلاعیه

بستن
هنوز اطلاعیه ای در دست نیست.

ابزار stress-ng برای تحمیل لود بالا و استرس تست روی cpu در لینوکس

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    ابزار stress-ng برای تحمیل لود بالا و استرس تست روی cpu در لینوکس

    به عنوان ادمین سیستم شما ممکن است بخواهید وضعیت سرورهای لینوکسی خود را در زمانی که آنها تحت فشار Load بالا هستند مانیتور و امتحان کنید. ابزار stress که لینوکس در اختیار شما میگذارد، میتواند شیوه خوبی برای ادمین ها و برنامه نویسان سیستم به منظور :
    • فعالیت های منظم و به جا روی یک سیستم
    • مانیتور اینترفیس های کرنل سیستم عامل
    • تست اجزای سخت افزاری لینوکس خود همانند CPU, Memory, Disk device و سخت افزارهای دیگر برای مشاهده Performance آنها به هنگامی که زیر فشار هستند.
    • اندازه گیری بار مصرف متفاوت پاور روی یک سیستم
    میباشد.

    همچنین توصیه میشود مطالعه کنید :

    httpstat - یک ابزار آمارگیری Curl برای تست سرعت لود سایت

    چگونه 90 درصد از memory خود را در linux برای تست اشغال کنیم؟

    استرس تست ظرفیت شبکه با استفاده از iperf3 در لینوکس


    در این پست ما 2 ابزار مهم stress و Stress-ng را برای تست stress در سیستم لینوکس تان مورد بررسی قرار خواهیم داد.


    1 - Stress
    یک ابزار تولید کننده workload (بار کاری) میباشد که برای اندازه گیری میزان فشار CPU, Memory, I/O و Disk مورد استفاده قرار میگیرد.



    2 - Stress-ng
    ورژن جدید و آپدیت شده ابزار Stress میباشد که سیستم شما را برای اهداف و قابلیت های زیر تست میکند.
    • محاسبه CPU
    • فشار درایو
    • همگام سازی I/O
    • پایپ I/O
    • cache thrashing
    • VM stress
    • فشار سوکت ها
    • ایجاد و خاتمه ی فرآیند
    • خواص context switching


    اگر چه این ابزار برای تست سیستم تان مناسب هستند اما نباید توسط هر کاربری از سیستم مورد استفاده قرار بگیرد.

    نکته : شدیدا توصیه میشود که شما این ابزار را با مجوز root اجرا کنید زیر آنها میتوانند ماشین لینوکس شما را به سرعت تحت فشار قرار دهند و همچنین بتوانید از Error های خاص سیستم روی سخت افزارهای ضعیف جلوگیری کنید.



    طریق نصب ابزار Stress در Linux

    برای نصب این ابزار روی Debian و مشتقات آن همانند Ubuntu و Mint دستور زیر را اجرا کنید.
    کد:
    $ sudo apt-get install stress
    دستور stress در لینوکس








    برای نصب ابزار Stress روی لینوکس CentOS/RHEL و Fedora شما نیاز دارید که ابتدا ریپازیتوری Epel را فعال کنید و سپس دستور زیر را برای نصب اجرا کنید.
    کد:
    [FONT=monospace]# yum install stress[/FONT]
    syntax عمومی برای استفاده از دستور Stress به شرح زیر میباشد.
    کد:
    [FONT=monospace]$ sudo stress option argument[/FONT]
    یکسری آپشن هایی که شما میتوانید با دستور Stress استفاده کنید به شرح زیر میباشد.
    • برای spawn کردن N تعداد worker spinning برروی تابع sqrt()، از گزینه ی –cpu N استفاده کنید.
    • برای spawn کردن N تعداد worker spinning برروی تابع sync()، از گزینه ی –io N استفاده کنید.
    • برای spawn کردن N تعداد worker spinning برروی تابع malloc()/free()، ازگزینه ی –vm N استفاده کنید.
    • برای تخصیص حافظه به هر worker vm، از گزینه ی –vm-bytes N استفاده کنید.
    • به جای آزادسازی و تخصیص مجدد منابع حافظه، شما می توانید حافظه را توسط استفاده از گزینه ی –vm-keep ، redirty نمایید.
    • Sleep را برای N ثانیه قبل از آزادسازی حافظه توسط –vm-hang N تنظیم کنید.
    • برای spawn کردن N تعداد worker spinning برروی تابع write()/unlink()، از گزینه ی –hdd N استفاده کنید.
    • شما می توانید یک timeout بعد از N ثانیه با استفاده از گزینه ی –timeout N تنظیم کنید.
    • یک فاکتور wait را برای N میلی ثانیه قبل از شروع هر کاری با استفاده از گزینه ی –backoff N تنظیم کنید.
    • برای نمایش جزئیات بیشتر هنگامیکه stress در حال اجرا است، از گزینه ی –v استفاده کنید.
    • از گزینه ی –help برای نحوه ی استفاده ی دستور stress استفاده کنید.




    نحوه استفاده از Stress روی سیستم های لینوکسی

    1. برای امتحان کردن تاثیر دستور هر زمان که آن را اجرا میکنید ابتدا باید دستور Uptime را اجرا کرده و میانگین Load را در جایی یادداشت کنید.

    سپس دستور stress را برای spawn تعداد 8 worker spinning برروی sqrt() با یک timeout 20 ثانیه اجرا کنید. بعد از اجرا کردن دستور stress باز دستور uptime را اجرا کنید و میانگین Load را با میزانی که قبلا یادداشت کرده بودید مقایسه کنید.
    کد:
    linuxzone@linuxzone ~ $ uptime
    linuxzone@linuxzone ~ $ sudo stress --cpu  8 --timeout 20
    linuxzone@linuxzone ~ $ uptime
    نمونه خروجی
    کد:
    linuxzone@linuxzone ~ $ uptime    
     17:20:00 up  7:51,  2 users,  load average: 1.91, 2.16, 1.93     [<-- Watch Load Average]
    linuxzone@linuxzone ~ $ sudo stress --cpu 8 --timeout 20
    stress: info: [17246] dispatching hogs: 8 cpu, 0 io, 0 vm, 0 hdd
    stress: info: [17246] successful run completed in 21s
    linuxzone@linuxzone ~ $ uptime
     17:20:24 up  7:51,  2 users,  load average: 5.14, 2.88, 2.17     [<-- Watch Load Average]

    2. برای spawn کردن 8 worker برروی sqrt() با یک timeout 30 ثانیه ، با نمایش جزئیات، دستور زیر را اجرا کنید.
    کد:
    linuxzone@linuxzone ~ $ uptime
    linuxzone@linuxzone ~ $ sudo stress --cpu 8 -v --timeout 30s
    linuxzone@linuxzone ~ $ uptime
    نمونه خروجی
    کد:
    linuxzone@linuxzone ~ $ uptime
     17:27:25 up  7:58,  2 users,  load average: 1.40, 1.90, 1.98     [<-- Watch Load Average]
    linuxzone@linuxzone ~ $ sudo stress --cpu 8 -v --timeout 30s
    stress: info: [17353] dispatching hogs: 8 cpu, 0 io, 0 vm, 0 hdd
    stress: dbug: [17353] using backoff sleep of 24000us
    stress: dbug: [17353] setting timeout to 30s
    stress: dbug: [17353] --> hogcpu worker 8 [17354] forked
    stress: dbug: [17353] using backoff sleep of 21000us
    stress: dbug: [17353] setting timeout to 30s
    stress: dbug: [17353] --> hogcpu worker 7 [17355] forked
    stress: dbug: [17353] using backoff sleep of 18000us
    stress: dbug: [17353] setting timeout to 30s
    stress: dbug: [17353] --> hogcpu worker 6 [17356] forked
    stress: dbug: [17353] using backoff sleep of 15000us
    stress: dbug: [17353] setting timeout to 30s
    stress: dbug: [17353] --> hogcpu worker 5 [17357] forked
    stress: dbug: [17353] using backoff sleep of 12000us
    stress: dbug: [17353] setting timeout to 30s
    stress: dbug: [17353] --> hogcpu worker 4 [17358] forked
    stress: dbug: [17353] using backoff sleep of 9000us
    stress: dbug: [17353] setting timeout to 30s
    stress: dbug: [17353] --> hogcpu worker 3 [17359] forked
    stress: dbug: [17353] using backoff sleep of 6000us
    stress: dbug: [17353] setting timeout to 30s
    stress: dbug: [17353] --> hogcpu worker 2 [17360] forked
    stress: dbug: [17353] using backoff sleep of 3000us
    stress: dbug: [17353] setting timeout to 30s
    stress: dbug: [17353] --> hogcpu worker 1 [17361] forked
    stress: dbug: [17353] linuxzone@linuxzone ~ $ uptime
     17:27:59 up  7:59,  2 users,  load average: 5.41, 2.82, 2.28     [<-- Watch Load Average]

    3. برای spawn کردن یک worker تابع malloc() و free() با یک timeout 60 ثانیه، دستور زیر را اجرا کنید.
    کد:
    linuxzone@linuxzone ~ $ uptime
    linuxzone@linuxzone ~ $ sudo stress --vm 1 --timeout 60s
    linuxzone@linuxzone ~ $ uptime
    نمونه خروجی
    کد:
    linuxzone@linuxzone ~ $ uptime
     17:34:07 up  8:05,  2 users,  load average: 1.54, 2.04, 2.11     [<-- Watch Load Average]
    linuxzone@linuxzone ~ $ sudo stress --vm 1 --timeout 60s
    stress: info: [17420] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd
    stress: info: [17420] successful run completed in 60s
    linuxzone@linuxzone ~ $ uptime
     17:35:20 up  8:06,  2 users,  load average: 2.45, 2.24, 2.17     [<-- Watch Load Average]

    4. برای spawn تعداد 4 worker spinning برروی sqrt()، 2 worker spinning برروی تابع sync()، 2 worker برروی تابع malloc()/free()، با یک timeout 20 ثانیه و تخصیص حافظه ی 256MB برای هر vm worker ، دستور زیر را اجرا کنید.
    کد:
    linuxzone@linuxzone ~ $ uptime
    linuxzone@linuxzone ~ $ sudo stress --cpu 4 --io 3 --vm 2 --vm-bytes 256M --timeout 20s
    linuxzone@linuxzone ~ $ uptime
    نمونه خروجی
    کد:
    linuxzone@linuxzone ~ $ uptime
     17:40:33 up  8:12,  2 users,  load average: 1.68, 1.84, 2.02     [<-- Watch Load Average]
    linuxzone@linuxzone ~ $ sudo stress --cpu 4 --io 3 --vm 2 --vm-bytes 256M --timeout 20s
    stress: info: [17501] dispatching hogs: 4 cpu, 3 io, 2 vm, 0 hdd
    stress: info: [17501] successful run completed in 20s
    linuxzone@linuxzone ~ $ uptime
     17:40:58 up  8:12,  2 users,  load average: 4.63, 2.54, 2.24     [<-- Watch Load Average]


    نحوه نصب ابزار Stress-ng در لینوکس

    برای نصب ابزار stress-ng دستورات زیر را با توجه به نوع سیستم عامل تان اجرا کنید.
    کد:
    $ sudo apt-get install stress-ng             [on [B]Debian[/B] based systems]
    # yum install stress-ng                      [on [B]RedHat[/B] based systems]
    دستور stress-ng در لینوکس








    ساختار کلی برای استفاده از این دستور به شرح ذیل میباشد :
    کد:
    $ sudo stress-ng option argument
    یکسری اپشن هایی که در این دستور میتوانید با stress-ng استفاده کنید :
    • برای استارت کردن N مورد از هر تست stress، می توانید از گزینه ی –all استفاده کنید.
    • برای استارت کردن N پروسس برای تمرین CPU توسط کارکردن پی درپی از طریق تمام روش های متفاوت تست فشار CPU ، از گزینه ی –cpu-methodoption استفاده کنید. روشهای بسیاردردسترسی وجود دارند که شما می توانید استفاده کنید، برای مشاهده ی آنها می توانید از manpage آن استفاده کنید.
    • برای متوقف کردن پروسس CPU stress بعد از N bogo عملیات، ازگزینه ی –cpu-ops N استفاده کنید.
    • برای استارت کردن تست پروسس های N I/O stress ، از گزینه ی –io N استفاده کنید.
    • برای متوقف کردن پروسس io stress بعد از N bogo عملیات از گزینه ی –io-ops N استفاده کنید.
    • برای استارت کردن تست پروسس های N vm stress از گزینه ی –vm N استفاده کنید.
    • برای ویژگی مقدار حافظه ی هر پروسس vm، از گزینه ی –vm-bytes N استفاده کنید.
    • برای متوقف کردن پروسس های vm stress بعد از N bogo عملیات، از گزینه ی –vm-ops N استفاده کنید.
    • از گزینه ی –hdd N برای استارت کردن پروسه ی تمرین برای N هارد دیسک استفاده کنید.
    • برای متوقف کردن پروسس hdd stress بعد از N bogo عملیات، از گزینه ی –hdd-ops N استفاده کنید.
    • شما می توانید یک timeout بعد از N ثانیه با استفاده از گزینه ی –timeout N استفاده کنید.
    • برای ایجاد یک گزارش خلاصه بعد از عملیات bogo ، شما می توانید از گزینه ی –metrics یا –metrics-brief استفاده کنید. گزینه ی –metrics-brief گزینه های غیز صفر را نمایش می دهد.
    • شما می توانید همچنین N پروسس را استارت کنید که با استفاده از mkdir و rmdir و استفاده از گزینه ی –dir N دایرکتوری ها را ایجاد یا حذف خواهد کرد.
    • برای متوقف کردن عملیات پروسس دایرکتوری از گزینه ی –dir-ops N استفاده کنید.
    • برای استارت کردن Nپروسس مصرف CPU که در حال حاضر در سطوح nice تمرین خواهند کرد، از گزینه ی –nice N استفاده کنید. هنگامیکه از این گزینه استفاده می کنیم، هر تکرار یک فرایند child را که مابین همه ی سطوح nice در حال اجرای یک حلقه برای 0.1 ثانیه بر سطح ازکار خواهد انداخت و خارج خواهد شد.
    • برای متوقف ساختن حلقه ی nice ، از گزینه ی –nice-ops N استفاده کنید.
    • برای استارت کردن Nپروسس هایی که مد فایل را توسط chmod(2) و fchmod(2) تغییر می دهند،از گزینه ی –chmod N استفاده کنید. بزرگترین مقداربرای N را به خاطر داشته باشید . عوامل استرس زا بین تمام حالت های ترکیبی بیت هایی که شما با chmod(2) مشخص کرده اید کار خواهند کرد.
    • شما می توانید عملیات chmod را با استفاده از گزینه ی –chmod-ops N متوقف سازید.
    • شما می توانید از گزینه ی –v برای نمایش اطلاعات بیشتر در باره ی عملیات استفاده کنید.
    • از گزینه ی –h برای help استفاده نمایید.



    چگونگی استفاده از دستور Stress-ng در Linux

    1.برای اجرای 8 CPU stressor با timeout 60 ثانیه و یک خلاصه در انتهای عملیات به صورت زیر عمل کنید.
    کد:
    linuxzone@linuxzone:~$ uptime
    
    linuxzone@linuxzone:~$ sudo stress-ng --cpu 8 --timeout 60 --metrics-brief
    linuxzone@linuxzone:~$ uptime
    نمونه ی خروجی
    کد:
    linuxzone@linuxzone:~$ uptime
     18:15:29 up 12 min,  1 user,  load average: 0.00, 0.01, 0.03     [<-- Watch Load Average]
    linuxzone@linuxzone:~$ sudo stress-ng --cpu 8 --timeout 60 --metrics-brief
    stress-ng: info: [1247] dispatching hogs: 8 cpu
    stress-ng: info: [1247] successful run completed in 60.42s
    stress-ng: info: [1247] stressor      bogo ops real time  usr time  sys time   bogo ops/s   bogo ops/s
    stress-ng: info: [1247]                          (secs)    (secs)    (secs)   (real time) (usr+sys time)
    stress-ng: info: [1247] cpu              11835     60.32     59.75      0.05       196.20       197.91
    linuxzone@linuxzone:~$ uptime
     18:16:47 up 13 min,  1 user,  load average: 4.75, 1.47, 0.54     [<-- Watch Load Average]

    2.برای اجرای 4 FFT CPU stressor با یک timeout 2 دقیقه به صورت زیر عمل کنید.
    کد:
    linuxzone@linuxzone:~$ uptime
    linuxzone@linuxzone:~$ sudo stress-ng --cpu 4 --cpu-method fft --timeout 2m
    linuxzone@linuxzone:~$ uptime
    نمونه خروجی
    کد:
    linuxzone@linuxzone:~$ uptime
     18:25:26 up 22 min,  1 user,  load average: 0.00, 0.26, 0.31     [<-- Watch Load Average]
    linuxzone@linuxzone:~$ sudo stress-ng --cpu 4 --cpu-method fft --timeout 2m
    stress-ng: info: [1281] dispatching hogs: 4 cpu
    stress-ng: info: [1281] successful run completed in 120.01s
    linuxzone@linuxzone:~$ uptime
     18:27:31 up 24 min,  1 user,  load average: 3.21, 1.49, 0.76     [<-- Watch Load Average]

    3.برای اجرای 5hdd stressor و متوقف کردن پس از 100000 bogo عملیات، دستور زیر را اجرا کنید.
    کد:
    linuxzone@linuxzone:~$ uptime
    linuxzone@linuxzone:~$ sudo stress-ng --hdd 5 --hdd-ops 100000
    linuxzone@linuxzone:~$ uptime
    نمونه ی خروجی
    کد:
    linuxzone@linuxzone:~$ uptime
     18:29:32 up 26 min,  1 user,  load average: 0.43, 1.00, 0.67     [<-- Watch Load Average]
    linuxzone@linuxzone:~$ sudo stress-ng --hdd 5 --hdd-ops 100000
    stress-ng: info: [1290] defaulting to a 86400 second run per stressor
    stress-ng: info: [1290] dispatching hogs: 5 hdd
    stress-ng: info: [1290] successful run completed in 136.16s
    linuxzone@linuxzone:~$ uptime
     18:31:56 up 29 min,  1 user,  load average: 4.24, 2.49, 1.28     [<-- Watch Load Average]

    4.برای اجرای 8 CPU stressor، 4 I/O stressor و 1 virtual memory stressor با استفاده اط 1GB از حافظه مجازی برای 1 دقیقه، دستور زیر را اجرا کنید.
    کد:
    linuxzone@linuxzone:~$ uptime
    linuxzone@linuxzone:~$ sudo stress-ng --cpu 4 --io 4 --vm 1 --vm-bytes 1G --timeout 60s --metrics-brief
    linuxzone@linuxzone:~$ uptime
    نمونه خروجی
    کد:
    linuxzone@linuxzone:~$ uptime
     18:34:18 up 31 min,  1 user,  load average: 0.41, 1.56, 1.10     [<-- Watch Load Average]
    linuxzone@linuxzone:~$ sudo stress-ng --cpu 4 --io 4 --vm 1 --vm-bytes 1G --timeout 60s --metrics-brief
    stress-ng: info: [1304] dispatching hogs: 4 cpu, 4 iosync, 1 vm
    stress-ng: info: [1304] successful run completed in 60.12s
    stress-ng: info: [1304] stressor      bogo ops real time  usr time  sys time   bogo ops/s   bogo ops/s
    stress-ng: info: [1304]                          (secs)    (secs)    (secs)   (real time) (usr+sys time)
    stress-ng: info: [1304] cpu               1501     60.07      2.67     10.39        24.99       114.93
    stress-ng: info: [1304] iosync          381463     60.01      0.00     12.90      6357.10     29570.78
    linuxzone@linuxzone:~$ uptime
     18:35:36 up 32 min,  1 user,  load average: 4.66, 2.80, 1.59     [<-- Watch Load Average]
    خلاصه : همانطور که توصیه شد این ابزارها از آنجایی که تاثیری های خاصی روی سیستم دارند باید توسط مجوزهای Supper User اجرا شوند. این ابزار برای مدیریت کلی سیستم در لینوکس مفید میباشد. امیدوارم این پست برای شما مفید واقع شود و اگر هر ایده اضافی درباره نحوه تست گرفتن وضعیت سلامت سیستم تان با استفاده از این دستورات یا هرگونه ابزار دیگری دارید با ما به اشتراک بگذارید.
    همچنان با ما همراه باشید.
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 02-07-2021, 02:59 PM.

درباره انجمن منطقه لینوکسی ها

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

شبکه های اجتماعی
در حال انجام ...
X