Pametova bariera?
Jan Kasprzak
kas na fi.muni.cz
Úterý Říjen 20 14:59:24 CEST 2009
Zdravim,
mam sitovy threadovany server, ktery ma nejaka docela velka data. Jejich
nacteni trva klidne i desitky sekund. Data nacte pri startu do pameti
a pouziva na vyrizovani dotazu od klientu (read-only).
Chtel bych umet nacist novou verzi dat a zacit ji pouzitvat
bez toho, abych v prubehu nacitani na nejakou dobu prestal klientum
poskytovat sluzby.
Moje idea je nacist nova data do nove alokovane struktury,
a po jejim nacteni jen prehodit nejaky globalni pointer, a casem uvolnit
starou verzi struktury.
Asi uz se vam to asociovalo s kernelovym RCU. Ano, potreboval
bych neco podobneho v user-space. V prvni fazi by aspon stacila
informace, jak vyrobit "pametovou barieru", cili instrukci ktera
zpusobi, ze vsechny drive zadane STORE operace do pameti dobehnou
pred tou barierou a nebudou se prokladat s operacemi za touto barierou
(za barieru bych dal to finalni prehozeni pointeru). Vim ze barieru urcite
vyrobi treba I/O instrukce nebo volani sluzby jadra, ale to mi prijde
jako kanon na vrabce.
Jak levne a pokud mozno prenositelne udelat neco jako RCU
v user-space?
-Y.
--
| Jan "Yenya" Kasprzak <kas at {fi.muni.cz - work | yenya.net - private}> |
| GPG: ID 1024/D3498839 Fingerprint 0D99A7FB206605D7 8B35FCDE05B18A5E |
| http://www.fi.muni.cz/~kas/ Journal: http://www.fi.muni.cz/~kas/blog/ |
Please don't top post and in particular don't attach entire digests to your
mail or we'll all soon be using bittorrent to read the list. --Alan Cox
Další informace o konferenci Linux