/ / Kontrola stavu pamäťovej stránky programovo - linux, windows, memory, paging

Skontrolujte stav pamäťovej stránky programovo - Linux, Windows, pamäť, paging

Chcem vykonať interpolačné vyhľadávanie na veľkýcharray. Jednou z možných optimalizácií je dotknúť sa pamäťových adries, ktoré sú už načítané do hlavnej pamäte ako prvé (dotýkanie sa ich nespôsobuje chybu pevnej strany) .Napríklad, ak potrebujem čítať údaje v indexe X, môžem skontrolovať, či je táto stránka v hlavnej pamäti, ak to nie je - môžem skontrolovať jednu zo susedných stránok, ktorá je už v pamäti.

Takže potrebujem nejaký mechanizmus na kontrolu stránky na adrese (X & 0xFFFFFFFFFFFE0000) je načítaný (alebo nie). Alebo lepšie - potrebujem získať zoznam načítaných strán v rámci niektorého rozsahu adries alebo niečo takého.

Je možné v kóde užívateľského priestoru na linux alebookná (aplikácia je crossp latform)? V tomto okamihu používam iba pamäťovú vyrovnávaciu pamäť LRU posledných nedotknutých pamäťových adries s nádejou, že operačný systém nebude vymieňať nedávno použité pamäťové stránky.

odpovede:

1 pre odpoveď č. 1

Vo Win32 Api

Pozrite sa na funkciu QueryWorkingSet, aby ste zistili stav pamäte vášho procesu.

Ako efektívny spôsob načítavania stránok do fyzickej pamäte nájdete v PrefetchVirtualMemory

Najnižšia úroveň, cross-platform API kompatibilná s Windows a Linuxom, o ktorých viem, je špecifikácia POSIX.

Tiež odporúčam, aby ste sa pozreli na Win32pamäťové funkcie a linia cache Intel a pamäťové kódy L2. Je to veľmi zložité, ale môže výrazne zvýšiť výkonnosť pamäťových číta / zapisuje (ak je to hlavný cieľ).