'Stress-ng' Aracını Kullanarak Linux'ta Yüksek CPU Yükü ve Stres Testi Nasıl Uygulanır?


Bir Sistem Yöneticisi olarak, Linux sistemleriniz yüksek yük altındayken durumunu incelemek ve izlemek isteyebilirsiniz. Bu, Sistem Yöneticileri ve Programcıları için aşağıdakileri yapmak için iyi bir yol olabilir:

  1. Bir sistemdeki etkinliklerin ince ayarını yapın.
  2. işletim sistemi çekirdek arayüzlerini izleyin.
  3. Stres altındaki performanslarını gözlemlemek için CPU, bellek, disk aygıtları ve diğerleri gibi Linux donanım bileşenlerinizi test edin.
  4. Bir sistemdeki farklı güç tüketen yükleri ölçün.

Bu kılavuzda, Linux sistemlerinizde stres testi için iki önemli araca, stres ve stres-ng'ye bakacağız.

1. stres – sisteminizi CPU, bellek, G/Ç ve disk stresinin yapılandırılabilir ölçümüne tabi tutmak için tasarlanmış bir iş yükü oluşturma aracıdır.

2. stres-ng – sisteminizi aşağıdaki özellikler açısından test eden stres iş yükü oluşturma aracının güncellenmiş bir sürümüdür:

  1. CPU hesaplama
  2. stresi yönlendirmek
  3. G/Ç senkronizasyonları
  4. Boru G/Ç
  5. önbellek atma
  6. VM stresi
  7. soket vurgulama
  8. süreç oluşturma ve sonlandırma
  9. bağlam değiştirme özellikleri

Bu araçlar sisteminizi incelemek için iyi olsa da, yalnızca herhangi bir sistem kullanıcısı tarafından kullanılmamalıdır.

Önemli: Bu araçları kök kullanıcı ayrıcalıklarıyla kullanmanız önemle tavsiye edilir, çünkü bunlar Linux makinenizi çok hızlı bir şekilde zorlayabilir ve kötü tasarlanmış donanımlarda belirli sistem hatalarını önleyebilir .

Linux'ta 'stres' Aracı Nasıl Kurulur

Stres aracını Debian'a ve onun Ubuntu ve Mint gibi türevlerine yüklemek için aşağıdaki komutu çalıştırın.

sudo apt-get install stress

RHEL/CentOS ve Fedora Linux'a stres yüklemek için EPEL deposunu açmanız ve ardından aşağıdaki yum komutunu yazmanız gerekir. Aynı:

yum install stress

Stres kullanımının genel sözdizimi şöyledir:

sudo stress option argument

Stres ile kullanabileceğiniz bazı seçenekler.

  1. sqrt() işlevinde dönen N işçiyi oluşturmak için aşağıdaki gibi –cpu N seçeneğini kullanın.
  2. Sync() işlevinde dönen N işçiyi oluşturmak için –io N seçeneğini aşağıdaki gibi kullanın.
  3. Malloc()/free() işlevlerinde dönen N işçiyi oluşturmak için –vm N seçeneğini kullanın.
  4. VM çalışanı başına bellek ayırmak için –vm-bytes N seçeneğini kullanın.
  5. Bellek kaynaklarını serbest bırakmak ve yeniden tahsis etmek yerine –vm-keep seçeneğini kullanarak belleği yeniden yönlendirebilirsiniz.
  6. –vm-hang N seçeneğini kullanarak belleği boşaltmadan önce uykuyu N saniyeye ayarlayın.
  7. Write()/unlink() işlevlerini kullanan N sayıda işçiyi doğurmak için –hdd N seçeneğini kullanın.
  8. –timeout N seçeneğini kullanarak N saniye sonra bir zaman aşımı ayarlayabilirsiniz.
  9. Aşağıdaki gibi –backoff N seçeneğini kullanarak herhangi bir iş başlamadan önce N mikrosaniyelik bir bekleme faktörü ayarlayın.
  10. Stres çalıştırırken daha ayrıntılı bilgi göstermek için -v seçeneğini kullanın.
  11. Vurgu kullanımına ilişkin yardımı görüntülemek veya kılavuz sayfasını görüntülemek için –help'i kullanın.

Linux sistemlerinde stresi nasıl kullanırım?

1. Komutu her çalıştırdığınızda etkisini incelemek için önce çalışma süresi komutunu çalıştırın ve yük ortalamasını not edin.

Daha sonra, 20 saniyelik bir zaman aşımı ile sqrt() üzerinde dönen 8 işçiyi oluşturmak için stres komutunu çalıştırın. Stresi çalıştırdıktan sonra çalışma süresi komutunu tekrar çalıştırın ve yük ortalamasını karşılaştırın.


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

2. 30 saniyelik bir zaman aşımı ile sqrt() üzerinde dönen ve işlem hakkında ayrıntılı bilgi gösteren 8 işçi oluşturmak için şu komutu çalıştırın:

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

3. malloc() ve free() işlevlerinin bir çalışanını 60 saniyelik zaman aşımı süresiyle çoğaltmak için, aşağıdaki komutu çalıştırın.

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

4. 20 saniyelik bir süre ile sqrt() üzerinde dönen 4 işçiyi, Sync() üzerinde çalışan 2 işçiyi, malloc()/free() üzerinde çalışan 2 işçiyi oluşturmak ve VM çalışanı başına 256 MB, aşağıdaki komutu çalıştırın.

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