btest2.c

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a simple test to determine memory usage for storing object
locations in RAM, indexed by node id, and optimized for
	- rapid object id insertion, deletion
	- easy method to determine all objects in a single node

Compile with

	gcc -O -Wall `pkg-config glib-2.0 --cflags` -o btest2 btest2.c \
		`pkg-config glib-2.0 --libs`

RAM usage with 10,000,000 objects, 3-way replication: 750 MB
RAM usage with 20,000,000 objects, 3-way replication: 1.5 GB


#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <time.h>
#include <glib.h>

enum {
	N_OBJS		= 5 * 1000000,
	N_NID		= 3,
	N_NODES		= 1000,
};

static GHashTable *ht[N_NODES];

static void store_oid_in_node(int node, int oid)
{
	g_hash_table_insert(ht[node], GINT_TO_POINTER(oid), NULL);
}

int main (int argc, char *argv[])
{
	int oid, i, n_objs = 0;
	long x = 1;

	srand(time(NULL));

	/* obtain number of objects for test */
	if (argc > 1)
		n_objs = atoi(argv[1]);
	if (n_objs < 1)
		n_objs = N_OBJS;

	/* create N_NODES hash tables for oid indices */
	for (i = 0; i < N_NODES; i++) {
		ht[i] = g_hash_table_new(g_direct_hash, g_direct_equal);
		if (!ht[i])
			abort();
	}

	/* populate hash tables with N_NID-way simulated replication */
	for (oid = 1; oid < n_objs; oid++)
		for (i = 0; i < N_NID; i++) {
			int node;

			node = rand() % N_NODES;
			store_oid_in_node(node, oid);
		}

	/*
	 * once this prints, you may visit top(1) to determine
	 * memory usage
	 */

	printf("Table build completed.  Begin infinite loop...\n");

	while (1)
		x++;

	return 0;
}

--
To unsubscribe from this list: send the line "unsubscribe hail-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Fedora Clound]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux