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