Lavon Trudel
Articles de blog de Lavon Trudel
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พร้อมกั