Re: [PATCH] Making i/dhash_entries cmdline work as it use to.

From: David Howells
Date: Tue Jul 13 2004 - 07:34:53 EST



> Actualy, it doesnt look like we need MAX_SYS_HASH_TABLE_ORDER at all so
> I'm resending the patch which now limits the max size of a hash table to
> 1/16 total memory pages. This would keep people from doing dangerous
> things when using the hash_entries.

That's an enormous limit. Consider the fact that you will have a multiplicity
of such hash tables, each potentially eating 1/16th of your total memory
(remember, the bootmem allocator's only real limit is how big a chunk of
memory it can allocate in one go).

Do you have numbers to show that committing an eighth of your memory (8GB if
you have 64GB - two hash tables at 4GB apiece) to hash tables is almost
certainly not worth it.

For instance, the dcache:

(*) Assuming 64GB of memory, of which 1/16th allocated to the dcache
hash table and 1/16th allocated to the inode hash table.

(*) dcache hash buckets are 16 bytes apiece on PPC64.

(*) 4GB hash table gives you 256 Meg hash buckets.

(gdb) p ((4ULL<<30)/16) / 1024 / 1024
$1 = 256

(*) The dentry struct on PPC64 is approx 256 bytes in size.

(*) The remaining 56GB could provide 224 Meg dentries if allocated to
nothing else.

(gdb) p (56ULL<<30) / 256 / 1024 / 1024
$2 = 224

(*) So you'd end up with more buckets in the hash table than you could
possibly allocate dentry structures.

David
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/