MPI ile Dağıtık Sistemlerde Dinamik Yük Dengeleme: MD5 Kırıcı Projesi
🚀 Paralel programlama mimarileri üzerinde başarıyla test edilmiştir.
🎯 Projenin Çıkış Noktası ve Amacı
Bu proje, Paralel Programlama dersindeki teorik bilgileri (MPI, süreçler arası haberleşme, hızlandırma analizi) pratik bir laboratuvar ortamına dökmek amacıyla geliştirilmiştir. Geleneksel sabit veri dağıtımı yerine, sistem kaynaklarını en verimli şekilde kullanan Master-Worker (Usta-İşçi) mimarisi kurgulanmıştır.
💡 Geliştirme Notu: Şifre kırma (brute-force) senaryosu, yüksek başarımlı hesaplama (HPC) dünyasında “utanç verici derecede paralel” (embarrassingly parallel) problemlerin en iyi test yatağıdır. Proje; mesajlaşma maliyetini,
MPI_ANY_SOURCEile asenkron yönetimi ve ölçeklenebilirlik kavramlarını deneyimlemek için tasarlanmıştır.
⚙️ Teknik Mimarisi ve İletişim Protokolü
Sistem, Master sürecin işçi süreçleri yönettiği tamamen dinamik bir yapıya sahiptir:
- İletişim Katmanı:
MPI(Message Passing Interface) üzerinde özel tanımlı etiketler (TAG_WORK_REQUEST,TAG_WORK_DATA,TAG_RESULT_FOUND). - Yük Dengeleme: Master süreç, işçilerden gelen taleplere göre
chunk_size(blok boyutu) bazlı görev ataması yapar. - Senkronizasyon:
MPI_IprobeveMPI_ANY_SOURCEkullanımıyla kilitlenme (deadlock) yaşamayan, asenkron haberleşme protokolü. - Hızlandırma Analizi: Amdahl Kanunu baz alınarak, süreç sayısı arttıkça elde edilen teorik ve gerçek hızlandırma karşılaştırması.
🛠️ Kullanılan Teknolojiler
- Diller: C++, Bash (Test süreçleri için)
- Kütüphaneler: OpenMPI, Frank Thilo MD5 Library
- Platform: Kali Linux, VirtualBox, Linux Kernel Network Stack