beregne forbrugt ram

From: Claus Guttesen (none@kometen--gmail.com.lh.bsd-dk.dk)
Date: Thu 16 Dec 2010 - 18:39:31 CET


Date: Thu, 16 Dec 2010 18:39:31 +0100
Subject: beregne forbrugt ram
From: Claus Guttesen <none@kometen--gmail.com.lh.bsd-dk.dk>
To: bsd-dk@bsd-dk.dk

Hej.

Jeg har set på redis som key-value-store, og skal slette nogle nøgler,
når der bliver knapt med ram tilbage. Derfor har jeg sat ram med
maxmemory-direktivet. Problemet er at redis (i hvert fald på FreeBSD)
regner for lavt, og jeg vil ændre i redis så den bruger getrusage() i
stedet. Jeg fandt
http://unix.derkeiler.com/Mailing-Lists/FreeBSD/stable/2006-03/msg00246.html
som og bruger ru.ru_maxrss som virker fint, når den tæller op. Når
redis kommer over grænsen, sletter den indtil den er under
maxmemory-direktivet.

Problemet opstår fordi ru.ru_maxrss ikke tæller nedover med det samme,
og som resultat slettes alle nøgler fra redis. Hmm, ikke det som var
meningen. Det næste jeg vil forsøge er at læse forbrugt ram som i
/usr/src/sys/kern/kern_clock.c hvor jeg vil starte med (pseudo)

struct thread *td;
td = curthread;
p = td->td_proc;
vm = p->p_vmspace;
rss = pgtok(vmspace_resident_count(vm));

Men så ser jeg ikke hvordan curthread linkes ind. Kan nogen komme med et hint?

Er det meningen at userland skal læse forbrugt ram på den måde?

-- 
regards
Claus

When lenity and cruelty play for a kingdom, the gentler gamester is the soonest winner.

Shakespeare

twitter.com/kometen



This archive was generated by hypermail 2b30 : Fri 31 Dec 2010 - 23:00:01 CET