Facebook F14 hash cədvəllərinin açıq tətbiqi

Facebook şirkəti elan etdi hash cədvəllərinin açıq mənbə tətbiqi haqqında F14, səmərəli yaddaş istehlakı üçün optimallaşdırılmışdır. F14 Facebook infrastrukturunda əksər növ həş cədvəlləri üçün əvəzedici kimi istifadə olunur və performansı itirmədən yaddaş istehlakını azalda bilər. F14 yaddaş sərfiyyatına görə indiyədək ən səmərəli hesab edilən google::sparse_hash_map hash cədvəllərini nəzərəçarpacaq dərəcədə üstələyir. Layihə kodu C++ dilində yazılmışdır və kitabxanaya daxil edilmişdir Folly.

F14 14 ilə ikiqat hashing əsasında toqquşma həlli sisteminə malik alqoritmlərə aiddir. nümunələrin ardıcıllığı (14 yuvadan ibarət bir zəncir bir hash masası hüceyrəsində saxlanılır və hüceyrələr arasındakı interval köməkçi hash funksiyasından istifadə edərək hesablanır). Hüceyrə filtrləmə əməliyyatlarını sürətləndirmək üçün tətbiq x2_86 sistemləri üçün SSE64 vektor təlimatlarından və Aarch64 üçün NEON-dan istifadə edir ki, bu da açar zəncirləri ilə yuvaların seçilməsi və zəncir daxilində açarların süzülməsi üçün əməliyyatların icrasını paralelləşdirməyə imkan verir. 14 slotun blokları bir anda işlənir, bu, prosessor keşindən istifadənin səmərəliliyi ilə toqquşmaların sayı arasında optimal balansdır.

F14-ün xüsusi xüsusiyyəti müxtəlif məlumat saxlama strategiyalarını seçmək imkanıdır:

  • F14NodeMap - böyük və orta ölçülü düymələr üçün ən az yaddaş sərf edir. Elementlərin hər bir əlavədə malloc çağırışı ilə dolayı saxlanmasını təmin edir;
  • F14ValueMap - kiçik düymələr üçün minimum yaddaş istehlakını təmin edir. Elementlər hüceyrələrin özlərində saxlanılır (daxili). Orta və böyük düymələr üçün bu yanaşma nəzərə çarpan yaddaş yükünə gətirib çıxarır;
  • F14VectorMap - böyük cədvəllər və mürəkkəb düymələr üçün daha sürətli işləyir, lakin sadə düymələr və kiçik cədvəllər üçün daha yavaş işləyir. Elementlər davamlı məskunlaşmış massivdə yığılır və 32 bitlik indeks göstəricisi ilə ünvanlanır;
  • F14FastMap birləşmiş strategiyadır. Açar 24 baytdan azdırsa, onda F14ValueMap, daha çox olduqda isə F14VectorMap seçilir.

Facebook F14 hash cədvəllərinin açıq tətbiqi

Mənbə: opennet.ru

Добавить комментарий