Articles de blog de Lavon Trudel

Tout le monde (grand public)

Applicationที่ไม่สนTopologyสามารถทำThreadหนึ่งใช้Memoryที่อยู่ไกลตลอดเวลาแม้เครื่องยังมีLocal RAMว่า

CompilerอาจจัดLayoutหรือAlignmentต่างตามภาษา จึงควรใช้AttributeหรือPrimitiveที่RuntimeรองรับแทนเดาOffs

False Sharing ไม่ใช่ Data Race เพราะ Thread อาจแก้ตัวแปรแยกกันอย่างถูกต้องทุกประการ แต่ Hardware ต้องรักษา Coherence ในหน่วย Cache Line ไม่ใช่ระดับ Fie

การกรองCandidateด้วยControl ByteหลายSlotพร้อมกันช่วยลดการแตะKey/Valueจริงและทำให้Lookupใช้Cache LineกับVector Instructionได้คุ้มกว่าการตรวจEntryทีละตัวในHot Hash Tab

ผลหวยไทยยังต้องมาจากSourceที่ยืนยัน Hash Tableไม่มีความเกี่ยวข้องกับการคาดการณ

fifaviphk สามารถใช้แนวคิด Swiss Table ที่แยก Control Bytes ออกจาก Payload และตรวจ Metadata หลาย Slot พร้อมกันด้วยคำสั่งแบบกลุ่

State Liveยังต้องมีAtomicityของข้อมูลแยกจากLifetimeของNode เพราะEBRป้องกันMemoryแต่ไม่ได้ทำให้Fieldหลายตัว Consistentเอ

เมื่อ Load Factor, Hash Quality, Deletion StrategyและMemory Layoutถูกออกแบบเหมาะ Robin Hood HashingสามารถลดPointer OverheadและรักษาLookup Tailให้สม่ำเสมอขึ้นในTableที่มีสมาชิกจำนวนมา

การ Mergeผลควรเกิดหลังประมวลผลส่วนใหญ่เสร็จเพื่อไม่ให้ทุกThreadเขียนShared Counterตลอดเวล

ขนาดLineขึ้นกับArchitectureแต่64 Byteพบได้ทั่วไปและควรตรวจPlatformจริงเมื่อOptimizeต่ำระดับนี

ข้อมูลสถานะ Liveที่เปลี่ยนถี่ต้องดู Concurrency Controlเพิ่มเพราะ Hash Tableพื้นฐานไม่ได้รองรับ Writerหลายตัวโดยอัตโนมัต

Release StoreรับประกันWriteก่อนหน้าถูกเผยแพร่ก่อนค่าSynchronization ส่วนAcquire LoadรับประกันReadหลังไม่ถูกเลื่อนขึ้นก่อ

เมื่อ Control Bytes, Fifaviphkเข้าสู่ระบบ Load Factor, Tombstone CleanupและHash Qualityถูกออกแบบเหมาะ Swiss-style Hash Tableสามารถลดทั้งBranch, Pointer ChasingและMemory AccessในงานLookupที่มีสมาชิกจำนวนมา

Barrierหนักกว่าที่จำเป็นสามารถลดPerformanceจึงควรใช้Memory Orderอ่อนที่สุดที่ยังถูกต้องตามAlgorit

ระบบที่มีการลบจำนวนมากต้องจัด TombstoneหรือBackward Shiftอย่างถูกต้องเพื่อไม่ทำ Search Chainขา

การเลื่อนการคืนMemoryตามEpochช่วยให้ReaderเดินStructureได้โดยไม่ต้องประกาศHazardทุกPointer ขณะที่WriterยังสามารถถอดNodeออกทันทีและปล่อยการFreeจริงให้เกิดเมื่อReaderรุ่นเก่าหมดแล้

หลังลบ Entryหนึ่งสามารถเลื่อนEntryถัด ๆ ที่มีProbe Distanceมากกว่าศูนย์กลับหนึ่งSlotจนเจอจุดสิ้นสุดClust

Objectที่ถูกลบถูกผูกกับEpochปัจจุบันและจะถูกคืนเมื่อระบบยืนยันว่าReaderจากEpochที่เกี่ยวข้องหมดแล้

fifaviphk สามารถเร่งExact Lookupได้เมื่อHashถูกแบ่งเป็นตำแหน่งProbeกับFingerprintและCPUตรวจControl GroupหลายSlotพร้อมกั