Messages in this thread | | | Date | Tue, 14 Jul 2015 08:54:11 -0700 | From | Dave Hansen <> | Subject | 4.2-rc2: hitting "file-max limit 8192 reached" |
| |
My laptop has been behaving strangely with 4.2-rc2. Once I log in to my X session, I start getting all kinds of strange errors from applications and see this in my dmesg:
VFS: file-max limit 8192 reached
Could this be from CONFIG_DEFERRED_STRUCT_PAGE_INIT=y? files_init() seems top be sizing files_stat.max_files from memory sizes.
vfs_caches_init() uses nr_free_pages() to figure out what the "current kernel size" is in early boot. *But* since we have not freed most of our memory, nr_free_pages() is low and makes us calculate the reserve as if the kernel we huge.
Adding some printk's confirms this. Broken kernel:
vfs_caches_init() mempages: 4026972 vfs_caches_init() reserve: 4021629 vfs_caches_init() mempages (after reserve minus): 5343 files_init() n: 2137 files_init() files_stat.max_files: 8192
Working kernel:
vfs_caches_init() mempages: 4026972 vfs_caches_init() reserve: 375 vfs_caches_init() mempages2: 4026597 files_init() n: 1610638 files_init() files_stat.max_files: 1610638
Do we have an alternative to call instead of nr_free_pages() in vfs_caches_init()?
I guess we could save off 'nr_initialized' in memmap_init_zone() and then use "nr_initialized - nr_free_pages()", but that seems a bit hackish.
| |