Já se passou um ano desde essa pergunta e não sei se você encontrou sua resposta, mas vou dizer que sua percepção de "desperdício" está errada.
A memória desperdiçada é alocada na memória para que não possa ser usada por outro aplicativo, mas ainda está disponível para o memcached.
Para simplificar a explicação, suponha que você tenha um memcache com 3MB de ram com 3 Slabs:
slab class 1: chunk size 10485 perslab 100
slab class 2: chunk size 104857 perslab 10
slab class 3: chunk size 1048576 perslab 1
Execute um único "conjunto" com um tamanho de 10k. Você verá em suas estatísticas (aproximadamente) que você tem:
0.03% used
66.6% free
33% wasted
Isso ocorre porque o memcached alocou um único bloco de "slab class 1" e 99% da memória para essa laje é "desperdiçada" e 1% é "used" Isso não significa que a laje e a memória alocadas para essa laje se foi.
Execute outro single "set" com tamanho 10k. Desta vez você verá:
0.06% used
66.6% free
32.7% wasted
Agora, você está usando 2 de 100 blocos alocados na camada 1, as estatísticas "desperdiçadas" diminuíram e as estatísticas usadas aumentaram.
Não há nada de errado com %% +% desperdiçado sendo igual a 100%. Isso não significa que você não tenha mais memória sobrando, isso significa simplesmente que você alocou pelo menos um pedaço de cada bloco.
Para ver esse problema, um "conjunto" com tamanho de 100k e outro com tamanho de 1000k
Agora você verá
36.6% used
0% free
63.3% wasted