Linux ağında yoğun bir ağ uygulaması geliştirmek için, ne tür bir mimari tercih edilir? Bu uygulama, bu uygulamanın genellikle birden fazla çekirdek (sanal veya fiziksel) içeren makinelerde çalıştırılacağıdır. Performansın temel kriter olduğunu düşünürsek, çok iş parçacıklı bir uygulamaya mi yoksa çoklu süreç tasarımına mı sahip olmak daha iyi olur? Kaynakların paylaşımı ve senkronizasyonun, birden fazla süreçten bu kaynaklara erişilmesi için bir çok program yükü olduğunu bilmekteyim, ancak daha önce de belirtildiği gibi, genel performans temel gereksinimdir ve bu yüzden bunları görmezden gelebiliriz. Ve programlama dili C/C++ olacaktır.performans - çok iş parçacıklı ya da çok işlemli uygulamalar
Çok iş parçacıklı uygulamaların (tek işlem) bile birden çok çekirdekten yararlanabileceğini ve her bir iş parçacığını bağımsız olarak farklı bir çekirdek üzerinde çalıştırabileceğini duydum (senkronizasyon sorunu olmadığı sürece). Ve bu zamanlama çekirdek tarafından yapılır. Öyleyse, çok iş parçacıklı uygulamalar ve çok işlemli uygulamalar arasında performansta fazla bir fark yok mu? Nginx çok işlemli bir mimariyi kullanıyor ve gerçekten hızlı, ancak çok iş parçacıklı uygulamalarla aynı performansı elde edebilir mi?
Teşekkürler.
@ p-l: Cevabınız için teşekkürler. Evet, plan eşit tabanlı mimariyi kullanmak ve ağ olaylarına dayanarak hareket etmektir. Ve çalışma zamanı boyunca ek iş parçacığı ve süreç oluşturulmaz. Bu, çok iş parçacıklı ve çok işlemli uygulamalar arasında performans farkı görmüyor musunuz? Örneğin: 4 çekirdekli bir sistem varsa, her iki mimarın arasında performans açısından fark edilir bir fark olmayacaktır. – sthustfo
Mümkün olan en büyük farklılıklar, zamanlamada olacaktır ve bu, görevin cpu benzeşimi ile değiştirilebilir ve her bir görevi (iş parçacığı/işlem) belirli bir cpu ile sabitler. Sunucu işlemiyle yapılan gerçek çalışmadan ve ağ bölümüyle nasıl etkileşime girdiğinden daha fazla farklılık olabilir. Belleğe erişim ile ilgili farklılıklar olabilir, ancak NUMA sisteminde genel olarak bellek paylaşımıyla ilgili iş parçacığı/işlem farklılığıyla daha az ilgili olabilir. Ancak, mevcut çekirdeklerin farklı NUMA kod parçalarının kopyalarını yapmalarına destek olabilir. bölgeler (geçmişte çekirdeğin kendisi için var). –