ugrás a tartalomhoz

memcached wasted?

DarkHcK · 2017. Május. 29. (H), 09.14
Sziasztok!

Szeretném kérni a tanácsotokat. Van egy debian 8.8 -as szerverem, amin fut egy Apache 2.4 + php7. Problémám, hogy felpakoltam a memcached -et (d-vel), s hozzá egy phpmemcachedadmin -t, ami számomra furán viselkedik.

Amit látok a felületen, hogy a Cache Size az következő módon oszlik meg:
Free: 71.9%
Used: 0.0%
Wasted 28.1%

Az normális, hogy nincs használatban semmi, viszont az "elpazarolt" memória 28.1%?
Előre is köszönöm a válaszokat.

Üdv
 
1

Memcached

Hidvégi Gábor · 2017. Május. 29. (H), 09.23
Ezt nézted már?

Mire használjátok a memcached-et?
2

Memcached használat

DarkHcK · 2017. Május. 29. (H), 09.35
Több Symfony 2.8 -as projektet szeretnék rajta futtatni, ahol a session és a query result cache -nek szeretném beállítani.
3

Első

Hidvégi Gábor · 2017. Május. 29. (H), 13.56
És az első kérdéssel mi a helyzet?
4

Kavarodás

DarkHcK · 2017. Május. 29. (H), 15.22
Jól értelmezem, hogy a "wasted" -el jelölt memória csak annyit takar, hogy a memcached befoglalta magának, s arra vár, hogy azt használatba vegye? Annyit tettem, hogy lejjebb vettem a méreteket, hogy több slab jöjjön létre, mivel sok az apró objektum. Egy kissé belekavarodtam a dolgokba.

Most az alábbi paraméterekkel indítom, hogy minél kevesebb legyen a wasted memory:
-n 5
-f 1.05
-I 512k
5

A wasted azt jelenti, hogy

BlaZe · 2017. Május. 30. (K), 21.50
A wasted azt jelenti, hogy lefoglalta, de nem tárol benne semmit. Vagy azért, mert kevés objectet tettél bele, vagy azért, mert ugyan sokat, de jóval kisebbeket, mint a chunk size.

A Gábor által küldött linkből, meg ebből ki lehet totózni a részleteket:
Memcached Doesn't Work the Way You Think It Does

A memcached az oprendszer slab allocatorát használja, amit arra találtak ki, hogy magas frekvenciával lehessen objecteket allokálni/felszabadítani, nagyon gyorsan. Az elsődleges felhasználási területe a kernel belső struktúrái mögött lévő memória kezelése. Mivel a memória allokáció elég költséges művelet, ezt úgy lehet elérni, hogy előre lefoglalnak memóriát. Ezt a preallokált memóriát felosztják fix méretű chunkokra, és ezeket a fix méretű chunkokat adják oda a "poolból"/teszik vissza bele, amikor allokál/felszabadít a programod. Ez baromi gyors memóriakezelést biztosít, de adott esetben nem optimális kihasználtság mellett. Ezt látod most.

Mivel a memcached mögött ez az slab allocator van + LRU eviction policyt használ, arra is fel lehet készülni, hogy ha elég nagy frekvenciával próbálsz belerámolni nagyjából ugyanakkora objecteket (ugyanabba az slab class-ba mennek), akkor elég magas eviction és cache miss rate-et tapasztalhatsz, meg ennek következtében teljesítményromlást.

A memory allocatoroknak kb mindig a sebesség, kihasználtság, töredezettség háromszögben kell valamilyen optimumot találjanak. Ezesetben itt a sebesség a fő szempont. Emiatt jogos Gábor kérdése, hogy mire akarjátok használni, tényleg ez-e a fő szempontotok. Persze ha van memóriátok, és nem hajtjátok nagyon, akkor ezekből valószínűleg kevés problémát fogtok érzékelni. Nézzétek viszont meg janoszen cikkét a session mentes weboldalakról, van még más csapda is :)
6

Emiatt jogos Gábor kérdése,

Hidvégi Gábor · 2017. Május. 31. (Sze), 06.32
Emiatt jogos Gábor kérdése, hogy mire akarjátok használni, tényleg ez-e a fő szempontotok.
Igen, a kérdés jellege miatt az volt az első gondolatom, hogy itt elég komoly, de más jellegű problémák lehetnek, és nem biztos, hogy a memcached lesz a megoldás.
8

Journey to the centre of memcached

BlaZe · 2017. Jún. 7. (Sze), 23.15
Véletlenül szembe jött, talán érdekelheti a kérdezőt, vagy bárkit, aki memcached-et használ: Journey to the centre of memcached
7

Kereső

Hidvégi Gábor · 2017. Május. 31. (Sze), 06.33
Az első kérdést azért tettem fel, mert a google-be bemásolva a "memcached wasted" szavakat ez volt az első találat.