Re: Pomalý přístup u fork-procesu k paměti alokované přes shm
Pavel Kankovsky
peak na argo.troja.mff.cuni.cz
Sobota Prosinec 17 20:32:41 CET 2016
On Mon, 12 Dec 2016, Zdeněk Janiš wrote:
> Tak jsem to zkusil předělat na SHM - výsledek obdobný...
To není žádné překvapení, protože v obou případech dochází k tomu, že si
potomek musí znovu naplnit stránkové tabulky.
Neobjevil jsem žádný rozumný způsob, jak se tomu vyhnout. To nejlepší, na
co jsem přišel, bylo na celé pole po kouscích postupně zavolat mlock() a
munlock(), ale tím jsem ušetřil tak 1/4 z nákladů na to postupné naplnění
tabulky jednotlivými výpadky (možná by úspora byla o něco větší, kdybych
to zkoušel s vyšším rlimitem na zamčenou paměť a tedy u delšími kousky).
V podstatě jsou asi tři cesty, jak se s tím vypořádat (pomineme-li
nějakou jadernou chirurgii):
1. Zorganizovat potomkům práci tak, aby se zlepšil poměr užitečné práce
k výpadkům stránek (např. nechat každého potomka provést více práce
ale jen na části pole).
2. Použít vlákna, která spolu sdílejí paměťový prostor, a tudíž i
stránkové tabulky.
3. Použít huge tables, což řádově zmenší počet výpadků stránek (a může
to mít i další výhody).
--
Pavel Kankovsky aka Peak "Que sçay-je?"
Další informace o konferenci Linux