Responderei a minha própria pergunta: o kernel do Linux 2.6 define o limite de arquivos abertos para 10% da memória disponível.
Fonte: link
488 void __init files_init(unsigned long mempages)
489 {
490 int n;
491
492 filp_cachep = kmem_cache_create("filp", sizeof(struct file), 0,
493 SLAB_HWCACHE_ALIGN | SLAB_PANIC, NULL);
494
495 /*
496 * One file with associated inode and dcache is very roughly 1K.
497 * Per default don't use more than 10% of our memory for files.
498 */
499
500 n = (mempages * (PAGE_SIZE / 1024)) / 10;
501 files_stat.max_files = n;
502 if (files_stat.max_files < NR_FILE)
503 files_stat.max_files = NR_FILE;
504 files_defer_init();
505 lg_lock_init(files_lglock);
506 percpu_counter_init(&nr_files, 0);
507 }