On 23 Nov 2011, at 14:40, Alan DeKok wrote:
I've pushed some changes to the VALUE_PAIR structure:
- rearrange struct members to remove padding This saves ~8 bytes of memory on 64-bit machines
- allocate only the needed part of the "data" field This prevents allocating 256 entry array for "integers"
The result is that the VP structure is now 52 bytes for most common attributes (integer, ipaddr), instead of 312. For many VPs, that should save a *lot* of memory.
I'm also investigating moving the "name", "attribute", and "vendor" fields out of the VP, and replacing them with a pointer to a DICT_ATTR. That should save only a small amount of memory, and may not be worth it.
I'd imagine that would require a lot of code changes too, there's no API for getting the name of the attribute, you just access the struct member directly. Though that's more of a grep and replace type thing that anything that requires thought.
Let me know if you have any issues.
I don't see much point in trying to reduce the memory footprint any further. What would help is allowing arbitrary length strings, but that requires changing a *lot* of code.
Mmm arbitrary length strings. -Arran Arran Cudbard-Bell a.cudbardb@freeradius.org Betelwiki, Betelwiki, Betelwiki.... http://wiki.freeradius.org/ !