Garbage Collection Modları


Warning: count(): Parameter must be an array or an object that implements Countable in /home/kazimce1/public_html/wp-content/plugins/microkids-related-posts/microkids-related-posts.php on line 645

Garbage Collector
CLR bize iki tipte garbage collection modu kullanımı sunmaktadır :
1- Workstation garbage collection.
2- Server garbage collection.



Server GC

Server GC tipi çok işlemcili makinalar için tasarlanmış olup genellikle web, uygulama ve database sunucusu gibi hizmet veren sunucularda çalışan uygulamalar için kullanılmaktadır. Bu mod sadece çok işlemcili makinalarda için kullanabilmektedir. Server GC modunda her işlemci için bir GC heap ve bir GC thread oluşturulup paralel bir şekilde kullanılmaktadır. Bu modda saniye başına yapılan iş maksimum seviyede olup iyi ölçeklenebilirlik davranışı sergilemektedir. Özellikle dört yada daha fazla işlemcide iyi bir performans sergilemektedir. Server GC modu çok işlemcili makinalarda varsayılan olarak gelmemektedir, uygulamanızın config dosyasında Server GC modunda çalışacağını belirtmeniz gerekmektedir. Server Mode ile çalışmanın en önemli avantajı ise paralel veya multi-thread olarak çalışabilmesidir.

Workstation GC

Workstation GC modu varsayılan GC modudur. Tek işlemcili makinalarda sadece bu mod seçilebilmektedir ve normalde tek işlemcili tüm istemcilerde bu mod kullanılmaktadır. Workstation modu, kullanıcıya maksimum cevap verilebilirlik için tercih edilmekte olup Concurrent ve non-Concurrent çalışacak şekilde ele alınabilir. Varsayılan olarak Concurrent çalışma prensibi uygulanır. Buna göre GC mekanizması uygulama ile birlikte ayrı bir Thread üzerinden işlemlerini gerçekleştirir.

Eğer uygulamanızın yüzlerce instance’ı çalışıyorsa, performans için Workstation GC modunda çalışıp concurrent çalışma prensibini pasif hale getirmeyi göz önüne almalısınız. Bu işlem sonrasında daha az içerik değişimi (context switch) olacağından performans kazancı sağlayabilirsiniz.

Concurrent GC:

Concurrent GC çok işlemcili makinalarda Workstation modunda çalışıldığında kullanılabilmektedir. Bu kullanım grafik arayüze sahip uygulamalar yada uygulamanın kilitlenmemesinin hayati önem taşıdığı durumlar için uygundur. Unutmamak gerekir ki Concurrent GC sadece generation 2 ile kullanılmaktadır; generations 0 ve 1 her zaman non-concurrent ve daha hızlıdır.

Varsayılan olarak tek işlemcili yada çok işlemcili makinalarda Workstation GC modunda concurrent çalışma prensibi aktif olarak gelmektedir.

Application config dosyasından Server GC modu kullanacağımızı belirtecek olursak :

<configuration>
   <runtime>
      <gcServer enabled="true"/>
   </runtime>
</configuration>

Concurrent çalışma prensibini aktifleştırecek olursak :

<Configuration>
   <runtime>
      <gcServer enabled="false" />
      <gcConcurrent enabled="true" />
   </runtime>
</Configuration>

Ayrıca uygulamanızın hangi GC modunda çalıştığını :

GC mscorwks.dll ve mscorsvr.dll olmak üzere iki ana DLL içermektedir. Eğer uygulamanız server modda çalışıyorsa mscorsvr.dll‘i yüklenir, workstation modda ise mscorwks.dll‘i yüklenir. Process’lerden hangi dll’in yüklendiğini gözlemleyebilirsiniz.

As discussed by Tess Ferrandez (champion ASP.NET debugger)
The restrictions here are

  • you can not run the server version on a single proc box, it will default to workstation
  • you can not run concurrent while also running server
  • if the runtime is hosted, the hosts GC mode will override the configuration

Kaynak ;

Fundamentals of Garbage Collection
Garbage Collector Basics and Performance Hints
.Net Memory Management’ i Kavramak

0 thoughts on “Garbage Collection Modları”

Bir cevap yazın