স্ট্রেস-এনজি সরঞ্জাম ব্যবহার করে লিনাক্সে কীভাবে উচ্চ সিপিইউ লোড এবং স্ট্রেস টেস্ট চাপিয়ে দেওয়া যায়


সিস্টেম অ্যাডমিনিস্ট্রেটর হিসাবে, আপনার লিনাক্স সিস্টেমগুলি যখন উচ্চ চাপের মধ্যে থাকে তখন আপনি তার অবস্থান পরীক্ষা করতে এবং নিরীক্ষণ করতে পারেন। এটি সিস্টেম অ্যাডমিনিস্ট্রেটর এবং প্রোগ্রামারদের পক্ষে করার জন্য একটি ভাল উপায় হতে পারে:

  1. একটি সিস্টেমে সূক্ষ্ম সুরের ক্রিয়াকলাপ।
  2. অপারেটিং সিস্টেমের কার্নেল ইন্টারফেসগুলি নিরীক্ষণ করুন
  3. আপনার লিনাক্স হার্ডওয়্যার উপাদানগুলি যেমন সিপিইউ, মেমরি, ডিস্ক ডিভাইস এবং আরও অনেকের স্ট্রেসের আওতায় তাদের কর্মক্ষমতা পর্যবেক্ষণ করতে পরীক্ষা করুন
  4. কোনও সিস্টেমে বিভিন্ন পাওয়ার গ্রাসকারী লোডগুলি পরিমাপ করুন

এই গাইডটিতে আমরা আপনার লিনাক্স সিস্টেমের অধীনে স্ট্রেস টেস্টিংয়ের জন্য দুটি গুরুত্বপূর্ণ সরঞ্জাম, স্ট্রেস এবং স্ট্রেস-এনজি লক্ষ্য করব।

1. স্ট্রেস - এমন একটি ওয়ার্কলোড জেনারেটর সরঞ্জাম যা আপনার সিস্টেমকে সিপিইউ, মেমরি, আই/ও এবং ডিস্ক স্ট্রেসের একটি কনফিগারযোগ্য পরিমাপের অধীনে নকশাকৃত।

২. স্ট্রেস-এনজি - স্ট্রেস ওয়ার্কলোড জেনারেটর সরঞ্জামটির একটি আপডেট সংস্করণ যা আপনার সিস্টেমকে নিম্নলিখিত বৈশিষ্ট্যগুলির জন্য পরীক্ষা করে:

  1. সিপিইউ গণনা
  2. ড্রাইভের চাপ
  3. আই/ও সিঙ্ক করে
  4. পাইপ I/O
  5. ক্যাশে থ্র্যাশিং
  6. ভিএম স্ট্রেস
  7. সকেটকে চাপ দেওয়া
  8. প্রক্রিয়া তৈরি এবং সমাপ্তি
  9. প্রসঙ্গের স্যুইচিং বৈশিষ্ট্য

যদিও এই সরঞ্জামগুলি আপনার সিস্টেম পরীক্ষা করার জন্য ভাল তবে সেগুলি কেবল কোনও সিস্টেম ব্যবহারকারী দ্বারা ব্যবহার করা উচিত নয়।

গুরুত্বপূর্ণ: আপনি রুট ব্যবহারকারীর সুবিধাসহ এই সরঞ্জামগুলি ব্যবহার করার পরামর্শ দেওয়া হচ্ছে, কারণ তারা আপনার লিনাক্স মেশিনটিকে এত তাড়াতাড়ি চাপ দিতে পারে এবং সঠিকভাবে ডিজাইন করা হার্ডওয়ারে সিস্টেমের ত্রুটিগুলি এড়াতে পারে।

কীভাবে লিনাক্সে ‘স্ট্রেস’ সরঞ্জাম ইনস্টল করবেন

ডেবিয়ান এবং এর ডেরাইভেটিভস যেমন উবুন্টু এবং পুদিনায় স্ট্রেস টুল ইনস্টল করতে নীচের কমান্ডটি চালান run

$ sudo apt-get install stress

আরএইচইএল/সেন্টোস এবং ফেডোরা লিনাক্সের উপর স্ট্রেস ইনস্টল করতে আপনাকে EPEL সংগ্রহস্থলটি চালু করতে হবে এবং তারপরে ইনস্টল করার জন্য নিম্নলিখিত yum কমান্ডটি টাইপ করতে হবে:

# yum install stress

স্ট্রেস ব্যবহারের জন্য সাধারণ বাক্য গঠন:

$ sudo stress option argument

কিছু বিকল্প যা আপনি চাপ সহ ব্যবহার করতে পারেন।

  1. স্কয়ারটি() ফাংশনে স্পিন করা N কর্মীদের স্প্যান করতে, নীচে –cpu N বিকল্পটি ব্যবহার করুন
  2. এন কর্মীদের সিঙ্ক() ফাংশনে স্পিনি করতে, নীচে –io N বিকল্পটি ব্যবহার করুন
  3. এন কর্মীদের malloc()/ফ্রি() ফাংশনে স্পিনি করার জন্য, –vm N বিকল্পটি ব্যবহার করুন
  4. প্রতি ভিএম কর্মী মেমরি বরাদ্দ করতে, –vm-bytes N বিকল্পটি ব্যবহার করুন
  5. মেমরি রিসোর্সগুলি মুক্ত এবং পুনরায় স্থান দেওয়ার পরিবর্তে, –vm-keep বিকল্পটি ব্যবহার করে আপনি মেমরিটিকে redirty করতে পারেন
  6. –vm-hang N বিকল্পটি ব্যবহার করে মেমরি মুক্ত করার আগে N সেকেন্ডে ঘুম সেট করুন
  7. এন কর্মীদের লেখার()/আনলিঙ্ক() ফাংশনে স্পিনি করার জন্য, –hdd এন বিকল্পটি ব্যবহার করুন
  8. আপনি টাইমআউট এন বিকল্পটি ব্যবহার করে এন সেকেন্ডের পরে একটি টাইমআউট সেট করতে পারেন
  9. নীচে –backoff N বিকল্পটি ব্যবহার করে কোনও কাজ শুরু হওয়ার আগে এন মাইক্রোসেকেন্ডগুলির একটি অপেক্ষার ফ্যাক্টর সেট করুন
  10. স্ট্রেস চলাকালীন আরও বিশদ তথ্য প্রদর্শন করতে -v বিকল্পটি ব্যবহার করুন
  11. স্ট্রেস ব্যবহার করতে বা ম্যানপেজটি দেখার জন্য সহায়তা দেখতে শেল্পটি ব্যবহার করুন

1. আপনি যতবার কমান্ডটি চালাবেন তার প্রভাব পরীক্ষা করতে প্রথমে আপটাইম কমান্ডটি চালান এবং লোডের গড়টি নোট করুন।

এরপরে, 20 সেকেন্ডের সময়সীমা নিয়ে স্কয়ারটি() এ স্পিনিং করা 8 জন কর্মীকে স্পেন করার জন্য স্ট্রেস কমান্ডটি চালান। স্ট্রেস চলার পরে, আবার আপটাইম কমান্ড চালান এবং লোড গড়ের তুলনা করুন।

[email  ~ $ uptime
[email  ~ $ sudo stress --cpu  8 --timeout 20
[email  ~ $ uptime
[email  ~ $ uptime    
 17:20:00 up  7:51,  2 users,  load average: 1.91, 2.16, 1.93     [<-- Watch Load Average]
[email  ~ $ 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
[email  ~ $ uptime
 17:20:24 up  7:51,  2 users,  load average: 5.14, 2.88, 2.17     [<-- Watch Load Average]

২. অপারেশন সম্পর্কে বিশদ তথ্য দেখিয়ে ৩০ সেকেন্ডের সময়সীমা নিয়ে স্কয়ারটি() এ স্পিনিং করা ৮ জন কর্মীকে স্পষ্ট করতে এই কমান্ডটি চালান:

[email  ~ $ uptime
[email  ~ $ sudo stress --cpu 8 -v --timeout 30s
[email  ~ $ uptime
[email  ~ $ uptime
 17:27:25 up  7:58,  2 users,  load average: 1.40, 1.90, 1.98     [<-- Watch Load Average]
[email  ~ $ 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] [email  ~ $ uptime
 17:27:59 up  7:59,  2 users,  load average: 5.41, 2.82, 2.28     [<-- Watch Load Average]

৩. 60০ সেকেন্ডের সময়সীমা সহ মেলোক() এবং ফ্রি() ফাংশনগুলির একজন কর্মী সন্ধান করতে নিম্নলিখিত কমান্ডটি চালান run

[email  ~ $ uptime
[email  ~ $ sudo stress --vm 1 --timeout 60s 
[email  ~ $ uptime
[email  ~ $ uptime
 17:34:07 up  8:05,  2 users,  load average: 1.54, 2.04, 2.11     [<-- Watch Load Average]
[email  ~ $ 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
[email  ~ $ uptime
 17:35:20 up  8:06,  2 users,  load average: 2.45, 2.24, 2.17     [<-- Watch Load Average]

৪. স্কয়ারটি() -এ স্পিনিং করা 4 জন শ্রমিক, সিঙ্কে বিস্তৃত 2 জন শ্রমিক,) মেলোক()/ফ্রি() তে 2 সেকেন্ড সময় 20 সেকেন্ডের বাইরে রেখে এবং প্রতি ভিএম কর্মীর জন্য 256 এমবি স্মৃতি বরাদ্দ করে, এটি চালান কমান্ড নীচে।

[email  ~ $ uptime
[email  ~ $ sudo stress --cpu 4 --io 3 --vm 2 --vm-bytes 256M --timeout 20s 
[email  ~ $ uptime
[email  ~ $ uptime
 17:40:33 up  8:12,  2 users,  load average: 1.68, 1.84, 2.02     [<-- Watch Load Average]
[email  ~ $ 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
[email  ~ $ uptime
 17:40:58 up  8:12,  2 users,  load average: 4.63, 2.54, 2.24     [<-- Watch Load Average]