Sdílená paměť v Linuxu

Honza

Sdílená paměť v Linuxu
« kdy: 03. 02. 2012, 18:01:58 »
Ahoj,
  potřeboval bych poradit se sdílenou pamětí. Mám rodičovský proces, který vytvoří sdílenou paměť přes:
Kód: [Vybrat]
ipc_shm=shmget(ipc_key,shm_size,0600 | IPC_CREAT | IPC_EXCL);
shmptr=shmat(ipc_shm,NULL,0);
(nadále do sdílené paměti nezapisuje, jen si občas zavolá shmat a shmdt, když monitoruje kolik
je položek zapsáno v shm potomky)

a potomci (těch je cca 300), kteří si přes sdílenou paměť přenáší data:
Kód: [Vybrat]
ipc_shm=shmget(ipc_key,shm_size,0600);
shmptr=shmat(ipc_shm,NULL,0);

Tohle vypadá, že funguje, tj. pokud mám nastaven shm_size na 50MB. Problém je nyní, když jsem nastavil
shm_size na 1GB. Celé se to začalo chovat divně.
Přijde mi jako kdyby proces při volání shmat zůstal viset a na něco čekal... Nevím, jestli není problém v tom,
že cat /proc/sys/kernel/shmmax mluví o max 200MB. Což je divné, protože volání shmget normálně projde a
žádnou chybu nevrátí... Přijde mi, že MySQL taktéž používá sdílenou paměť, i více jak 1GB, a nějaký limit
v /proc na něj neplatí. Celkem mám k dispozici okolo 32GB RAM.

Může mi někdo fundovaně říci, jak sdílená paměť funguje? Tj. odkud se přidělená paměť bere,
jak je řešeno mapování do uživatelských procesů, apod. Stačí odkaz, nemůžu na nic rozumného
přijít.

Předem děkuji za jakékoliv nakopnutí správným směrem.

Honza


« Poslední změna: 08. 02. 2012, 23:50:51 od Petr Krčmář »


PCnity

  • *****
  • 685
    • Zobrazit profil
    • E-mail
Re:Shared memory v Linuxu
« Odpověď #1 kdy: 03. 02. 2012, 19:16:24 »
Skus si nastavit v /etc/sysctl.conf

kernel.shmmax = 23622320128
kernel.shmall = 23622320128

Toto je napriklad ca. 22 GiB

Honza

Re:Shared memory v Linuxu
« Odpověď #2 kdy: 03. 02. 2012, 19:31:56 »
Ahoj,
a nemelo by volani shmget skoncit s nejakou chybou?
Prece se to nemuze tvarit, ze je vse ok...

Diky,
H.

Vaclav Havel

Re:Shared memory v Linuxu
« Odpověď #3 kdy: 04. 02. 2012, 10:23:48 »
Tezka pomoc, muzete mrknout na zdrojaky jadra jak je to tam udelane (IPC) nebo to nechat velkemu buckovi.

Trapi me jina vec, chodim do sauny a ne a ne shodit kila dolu, konecne vim proc, muze za to tahle mrska E=mc2.

DarkKnight

Re:Shared memory v Linuxu
« Odpověď #4 kdy: 04. 02. 2012, 10:31:49 »
vaclav - jako ze mas jednak casticove, tak i vlnove vlastnosti?