- 论坛徽章:
- 2
|
这几天,b.s.d一直困惑于mfs过大的问题。mfs不同于其他的fs,其存储空间为内存,所有的文件及inode之类的都装载进了内存。而kernel要统管所有内存的,mfs使用的内存也不例外,而且要占用内核的内存,如果mfs过大就会挤占了内核的空间,所以不能正常启动。
所以解决的方法就是增加内核空间。在/sys/i386/include/pmap.h中
- /*
- * Size of Kernel address space. This is the number of page table pages
- * (4MB each) to use for the kernel. 256 pages == 1 Gigabyte.
- * This **MUST** be a multiple of 4 (eg: 252, 256, 260, etc).
- */
- #ifndef KVA_PAGES
- #define KVA_PAGES (1 << (30 - PDRSHIFT))
- #endif
- /*
- * Pte related macros
- */
- #define VADDR(pdi, pti) ((vm_offset_t)(((pdi)<<PDRSHIFT)|((pti)<<PAGE_SHIFT)))
- #ifndef NKPT
- #ifdef PAE
- #define NKPT 120 /* actual number of kernel page tables */
- #else
- #define NKPT 30 /* actual number of kernel page tables */
- #endif
- #endif
复制代码
可以看到如果启动了PAE,页表就会变大,否则就是缺省的30,30*4MB=120MB,所以可以修改NKPT增加页表项数。
我将NKPT修改为120后的测试结果如下。实际环境中的NKPT需要根据内存实际大小修改 |
-
1.PNG
(20.09 KB, 下载次数: 82)
测试结果
|