Exemple #1
0
void
housecleanprops(void)
{
    int limit, max;
    dbref i, j;

    if ((proploaded_Q.count < 100) ||
            (proploaded_Q.count < (tp_max_loaded_objs * db_top / 100))) return;

    limit = 40;
    max = db_top;
    i = first_ringqueue_obj(&proploaded_Q);
    while (limit > 0 && max-- > 0 && i != NOTHING) {
        j = next_ringqueue_obj(&proploaded_Q, i);
        if (disposeprops_notime(i))
            limit--;
        i = j;
    }
}
Exemple #2
0
void
report_cachestats(dbref player)
{
	dbref obj;
	int count, total, checked, gap, ipct;
	time_t when, now;
	double pct;
	char buf[BUFFER_LEN];

	notify(player, "LRU proploaded cache time distribution graph.");

	total = proploaded_Q.count;
	checked = 0;
	gap = 0;
	when = now = time(NULL);
	notify(player, "Mins  Objs (%of db) Graph of #objs vs. age.");
	for (; checked < total; when -= 60) {
		count = 0;
		obj = first_ringqueue_obj(&proploaded_Q);
		while (obj != NOTHING) {
			if (DBFETCH(obj)->propstime > (when - 60) && DBFETCH(obj)->propstime <= when)
				count++;
			obj = next_ringqueue_obj(&proploaded_Q, obj);
		}
		checked += count;
		pct = count * 100.0 / total;
		ipct = count * 100 / total;
		if (ipct > 50)
			ipct = 50;
		if (count) {
			if (gap)
				notify(player, "[gap]");
			snprintf(buf, sizeof(buf), "%3ld:%6d (%5.2f%%) %*s", ((now - when) / 60), count, pct, ipct, "*");
			notify(player, buf);
			gap = 0;
		} else {
			gap = 1;
		}
	}
}