Performans yönetimi

arkadaşlar bir kaç pratik yaparken while kullanlarmin artmasina bagli olarak islemci kullaniminin arttigini gordum. Cok fazla whle kullanmak islemciye zarar verirmi

İşlemciye zarar verecek şeyler ısı, toz ve kötü kullanımdır.

Aşağıdaki gibi sonsuz bir while döngüsü kullanmak, CPU’nun % 100 çalışmasına sebep olur. Ancak hafıza kullanımında bir artış olmaz.

while True: continue

Yukarıdaki döngüyü çalıştırmadan önceki CPU sıcaklığına bakıyorum:

asus-isa-0000
Adapter: ISA adapter
cpu_fan:     2700 RPM
temp1:        +53.0°C  

acpitz-virtual-0
Adapter: Virtual device
temp1:        +53.0°C  (crit = +93.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Package id 0:  +54.0°C  (high = +72.0°C, crit = +90.0°C)
Core 0:        +50.0°C  (high = +72.0°C, crit = +90.0°C)
Core 1:        +49.0°C  (high = +72.0°C, crit = +90.0°C)

Şimdi döngüyü çalıştırıyorum ve bir kaç saniye sonra fan hızına ve sıcaklığa tekrar bakıyorum:

asus-isa-0000
Adapter: ISA adapter
cpu_fan:     3000 RPM
temp1:        +58.0°C  

acpitz-virtual-0
Adapter: Virtual device
temp1:        +58.0°C  (crit = +93.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Package id 0:  +58.0°C  (high = +72.0°C, crit = +90.0°C)
Core 0:        +57.0°C  (high = +72.0°C, crit = +90.0°C)
Core 1:        +55.0°C  (high = +72.0°C, crit = +90.0°C)

Fan hızı, 2700 rpm’den 3000 rpm’ye çıktı. İşlemci çekirdeklerindeki sıcaklık da 6-7 derece arasında artış gösterdi. Yani işlemcilerdeki sıcaklık arttıkça fan da işlemcileri soğutmak için otomatik olarak daha hızlı dönmeye başlayacaktır. Bu da ana kartın ısınmasına yol açar.

Ancak eğer kodu şöyle yazsaydık:

container = []
while True: container.append("a")

Bu yukarıdaki işlem hem CPU kullanımının hem de hafıza kullanımının artışına sebep olacaktı ve bilgisayarınız bir süre sonra donacaktı.

Eğer programınız işlemcinin aşırı ısınmasına neden oluyorsa, o zaman dikkatli olmakta yarar var. Ancak size yukarıda gösterdiğim ilk döngü işlemcinin sadece % 100 kullanılmasına neden olur, sıcaklık artışı da tek o program için tehlikeli bir artış değildir.

Aynı programı 3 farklı oturumda tekrar çalıştırdığımda CPU’daki son durum şöyle oluyor:

asus-isa-0000
Adapter: ISA adapter
cpu_fan:     3100 RPM
temp1:        +62.0°C  

acpitz-virtual-0
Adapter: Virtual device
temp1:        +62.0°C  (crit = +93.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Package id 0:  +63.0°C  (high = +72.0°C, crit = +90.0°C)
Core 0:        +63.0°C  (high = +72.0°C, crit = +90.0°C)
Core 1:        +61.0°C  (high = +72.0°C, crit = +90.0°C)

@dildeolupbiten’e ek olarak şunları söylemek istiyorum, işlemci kullanımının artması programınızın aralıksız işlem yapıp işlemci çekirdeğini olabildiğince kullanmasından kaynaklı. Bunun önüne geçmek için her döngüde time.sleep fonksiyonunu ufak bir değer ile çağırabilirsiniz, ki bu işlemin daha uzun süre sonra bitmesine sebep olur. Yani işlemci kullanımını zamana yaymış olur. Aynı etkiyi çoğu I/O işlemi de sağlar. Ya da programınızı optimize etmeyi deneyebilirsiniz.

Sorudaki gizli varsayim while kullaniminin artmasinin islemci kullanimini arttirmasi. Bu dogru degil; @EkremDincel aciklamis.

Yanlis varsayim uzerine sorulan soruya cevap verilemeyecegine gore soruyu en yakin varsayimsiz haline ceviriyoruz: “Islemci kullanimini fazla arttirmak islemciye zarar verir mi?” Bunun cevabi ise “genellikle hayir”; @dildeolupbiten aciklamis.