Large memory support
Jason Titus
jtitus@postini.com
Fri, 20 Feb 2004 11:21:06 -0800
This is a multi-part message in MIME format.
--------------090907020104020700080008
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
OK, one last time but this time from a non-Microsoft mail client (to
keep from garbling the patch).
Sorry to send so many emails about this, but I do think folks will be
happy to have >2GB caches!
Jason
--------------090907020104020700080008
Content-Type: text/plain;
name="bigmem.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="bigmem.patch"
Only in memcached-bigmem-1.1.10/: config.h
Only in memcached-bigmem-1.1.10/: config.log
Only in memcached-bigmem-1.1.10/: config.status
Common subdirectories: memcached-1.1.10/doc and memcached-bigmem-1.1.10/doc
Only in memcached-bigmem-1.1.10/: Makefile
diff -u memcached-1.1.10/memcached.c memcached-bigmem-1.1.10/memcached.c
--- memcached-1.1.10/memcached.c 2003-12-04 09:50:57.000000000 -0800
+++ memcached-bigmem-1.1.10/memcached.c 2004-02-18 23:27:39.000000000 -0800
@@ -336,7 +336,7 @@
pos += sprintf(pos, "STAT get_misses %u\r\n", stats.get_misses);
pos += sprintf(pos, "STAT bytes_read %llu\r\n", stats.bytes_read);
pos += sprintf(pos, "STAT bytes_written %llu\r\n", stats.bytes_written);
- pos += sprintf(pos, "STAT limit_maxbytes %u\r\n", settings.maxbytes);
+ pos += sprintf(pos, "STAT limit_maxbytes %llu\r\n", settings.maxbytes);
pos += sprintf(pos, "END");
out_string(c, temp);
return;
@@ -1279,7 +1279,7 @@
settings.port = atoi(optarg);
break;
case 'm':
- settings.maxbytes = atoi(optarg)*1024*1024;
+ settings.maxbytes = (size_t) atoi(optarg)* (size_t) 1024* (size_t) 1024;
break;
case 'c':
settings.maxconns = atoi(optarg);
diff -u memcached-1.1.10/memcached.h memcached-bigmem-1.1.10/memcached.h
--- memcached-1.1.10/memcached.h 2003-12-04 09:50:57.000000000 -0800
+++ memcached-bigmem-1.1.10/memcached.h 2004-02-18 23:11:28.000000000 -0800
@@ -10,7 +10,7 @@
struct stats {
unsigned int curr_items;
unsigned int total_items;
- unsigned long long curr_bytes;
+ size_t curr_bytes;
unsigned int curr_conns;
unsigned int total_conns;
unsigned int conn_structs;
@@ -24,7 +24,7 @@
};
struct settings {
- unsigned int maxbytes;
+ size_t maxbytes;
int maxconns;
int port;
struct in_addr interface;
@@ -147,17 +147,17 @@
/* slabs memory allocation */
/* Init the subsystem. The argument is the limit on no. of bytes to allocate, 0 if no limit */
-void slabs_init(unsigned int limit);
+void slabs_init(size_t limit);
/* Given object size, return id to use when allocating/freeing memory for object */
/* 0 means error: can't store such a large object */
-unsigned int slabs_clsid(unsigned int size);
+unsigned int slabs_clsid(size_t size);
/* Allocate object of given length. 0 on error */
-void *slabs_alloc(unsigned int size);
+void *slabs_alloc(size_t size);
/* Free previously allocated object */
-void slabs_free(void *ptr, unsigned int size);
+void slabs_free(void *ptr, size_t size);
/* Fill buffer with stats */
char* slabs_stats(int *buflen);
Common subdirectories: memcached-1.1.10/scripts and memcached-bigmem-1.1.10/scripts
diff -u memcached-1.1.10/slabs.c memcached-bigmem-1.1.10/slabs.c
--- memcached-1.1.10/slabs.c 2003-09-05 15:37:36.000000000 -0700
+++ memcached-bigmem-1.1.10/slabs.c 2004-02-18 23:08:52.000000000 -0800
@@ -49,10 +49,10 @@
} slabclass_t;
static slabclass_t slabclass[POWER_LARGEST+1];
-static unsigned int mem_limit = 0;
-static unsigned int mem_malloced = 0;
+static size_t mem_limit = 0;
+static size_t mem_malloced = 0;
-unsigned int slabs_clsid(unsigned int size) {
+unsigned int slabs_clsid(size_t size) {
int res = 1;
if(size==0)
@@ -67,7 +67,7 @@
return res;
}
-void slabs_init(unsigned int limit) {
+void slabs_init(size_t limit) {
int i;
int size=1;
@@ -88,7 +88,7 @@
static int grow_slab_list (unsigned int id) {
slabclass_t *p = &slabclass[id];
if (p->slabs == p->list_size) {
- unsigned int new_size = p->list_size ? p->list_size * 2 : 16;
+ size_t new_size = p->list_size ? p->list_size * 2 : 16;
void *new_list = realloc(p->slab_list, new_size*sizeof(void*));
if (new_list == 0) return 0;
p->list_size = new_size;
@@ -120,7 +120,7 @@
return 1;
}
-void *slabs_alloc(unsigned int size) {
+void *slabs_alloc(size_t size) {
slabclass_t *p;
unsigned char id = slabs_clsid(size);
@@ -160,7 +160,7 @@
return 0; /* shouldn't ever get here */
}
-void slabs_free(void *ptr, unsigned int size) {
+void slabs_free(void *ptr, size_t size) {
unsigned char id = slabs_clsid(size);
slabclass_t *p;
Only in memcached-bigmem-1.1.10/: stamp-h
--------------090907020104020700080008--