0xDEADBEEF

RSS
««« »»»

Velké stránky paměti

13. 9. 2017

Transparent Hugepages: measuring the performance impact

Praktická demonstrace toho jaký dopad může mít povolení velkých stránek paměti.

Mapování z virtuální na fyzickou adresu je spravováno na úrovni stránek. Ty na x86 můžou mít několik velikostí: 4kB, 2MB nebo 1GB. Operační systém udržuje toto mapování v paměti jako stromy (přesněji řečeno trie). Aby procesor nemusel při každém přístupu do paměti procházet tímto stromem, který je taky v paměti (nebo v lepším případě v cache), obsahuje malou cache nazývanou TLB (translation lookaside buffer) pro mapování několika naposledy použitých stránek. To vede ke stavu, že pokud chci číst ze stránky, která je v TLB, je to rychlé, ale pokud chci číst z té, která tam není, OS musí provést page table walk, najít příslušné mapování, přeložit adresu a to celou operaci značně zpomalí. Velké stránky byly zavedeny z pochopitelných důvodů: Je jimi možné pokrýt větší část virtuální paměti a snížit tak počet drahých TLB miss.

Odkazovaný článek uvádí případ Java aplikace s 200GB haldou, na které povolení velkých stránek vede k nezanedbatelnému zrychlení. Program před změnou trávil 10% taktů jen překladem virtuální adresy na fyzickou a page table walk namísto užitečné práce.

Relevantní čtení:

píše k47 (@kaja47, k47)