Если у вас достаточно памяти, вы можете использовать ulimit, чтобы увеличить максимальное количество файлов, которые ваш процесс может открыть за один раз, я успешно справился со 100 000 файлов, 500 000 также должны работать.
Если это не вариант, постарайтесь убедиться, что в вашем кэш-памяти достаточно места для хранения всех записей. Кэш dentry - это отображение имени файла -> inode, которое ядро использует для ускорения доступа к файлу на основе имени файла, доступ к огромному количеству различных файлов может эффективно исключить выгоду кэш-памяти dentry, а также привнести дополнительное снижение производительности. Ядро Stock 2.6 имеет хэш-память с 256 * МБ записями ОЗУ за раз, если у вас 2 ГБ памяти, вы можете использовать чуть более 500 000 файлов.
Конечно, убедитесь, что вы выполнили соответствующее профилирование, чтобы определить, действительно ли это вызывает узкое место.