Changeset 738

Show
Ignore:
Timestamp:
03/03/08 05:08:26 (6 months ago)
Author:
dormando
Message:

Don't re-calculate the slab class id.
slabs_alloc() internally calls slabs_clsid(), so an eviction case would crawl the list of slab classes three times.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/server/items.c

    r737 r738  
    8989        return 0; 
    9090 
    91     it = slabs_alloc(ntotal); 
     91    it = slabs_alloc(ntotal, id); 
    9292    if (it == 0) { 
    9393        int tries = 50; 
     
    120120            } 
    121121        } 
    122         it = slabs_alloc(ntotal); 
     122        it = slabs_alloc(ntotal, id); 
    123123        if (it == 0) return NULL; 
    124124    } 
  • trunk/server/memcached.h

    r716 r738  
    292292void  mt_item_update(item *it); 
    293293void  mt_run_deferred_deletes(void); 
    294 void *mt_slabs_alloc(size_t size); 
     294void *mt_slabs_alloc(size_t size, unsigned int id); 
    295295void  mt_slabs_free(void *ptr, size_t size); 
    296296int   mt_slabs_reassign(unsigned char srcid, unsigned char dstid); 
     
    321321# define item_unlink(x)              mt_item_unlink(x) 
    322322# define run_deferred_deletes()      mt_run_deferred_deletes() 
    323 # define slabs_alloc(x)              mt_slabs_alloc(x
     323# define slabs_alloc(x,y)            mt_slabs_alloc(x,y
    324324# define slabs_free(x,y)             mt_slabs_free(x,y) 
    325325# define slabs_reassign(x,y)         mt_slabs_reassign(x,y) 
     
    354354# define item_update(x)              do_item_update(x) 
    355355# define run_deferred_deletes()      do_run_deferred_deletes() 
    356 # define slabs_alloc(x)              do_slabs_alloc(x
     356# define slabs_alloc(x,y)            do_slabs_alloc(x,y
    357357# define slabs_free(x,y)             do_slabs_free(x,y) 
    358358# define slabs_reassign(x,y)         do_slabs_reassign(x,y) 
  • trunk/server/slabs.c

    r724 r738  
    219219 
    220220/*@null@*/ 
    221 void *do_slabs_alloc(const size_t size) { 
     221void *do_slabs_alloc(const size_t size, unsigned int id) { 
    222222    slabclass_t *p; 
    223223 
    224     unsigned int id = slabs_clsid(size); 
    225224    if (id < POWER_SMALLEST || id > power_largest) 
    226225        return NULL; 
  • trunk/server/slabs.h

    r724 r738  
    1818 
    1919/** Allocate object of given length. 0 on error */ /*@null@*/ 
    20 void *do_slabs_alloc(const size_t size); 
     20void *do_slabs_alloc(const size_t size, unsigned int id); 
    2121 
    2222/** Free previously allocated object */ 
  • trunk/server/thread.c

    r653 r738  
    572572/******************************* SLAB ALLOCATOR ******************************/ 
    573573 
    574 void *mt_slabs_alloc(size_t size) { 
     574void *mt_slabs_alloc(size_t size, unsigned int id) { 
    575575    void *ret; 
    576576 
    577577    pthread_mutex_lock(&slabs_lock); 
    578     ret = do_slabs_alloc(size); 
     578    ret = do_slabs_alloc(size, id); 
    579579    pthread_mutex_unlock(&slabs_lock); 
    580580    return ret;