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