Часто Задаваемые Вопросы по FreeBSD 2.X, 3.X, 4.X и 5.X


Увеличение и уменьшение адресного пространства ядра


По умолчанию размер адресного пространства ядра равен 256 МБ во FreeBSD 3.X и 1 ГБ во FreeBSD 4.X. Если вы используете FreeBSD в качестве сервера с интенсивной сетевой нагрузкой (скажем, большой FTP или HTTP сервер), вы можете обнаружить, что 256 МБ недостаточно.

Каким же образом можно увеличить адресное пространство? Здесь есть два момента. Во-первых, вам нужно указать ядру выделить большее количество адресного пространства для самого ядра. Во-вторых, так как ядро загружается в верхнюю часть адресного пространства, вам нужно уменьшить адрес загрузки так, чтобы он не вышел за верхнюю границу.

Первая проблема решается увеличением значения константы NKPDE в файле src/sys/i386/include/pmap.h. В случае 1 ГБ адресного пространства он должен выглядеть примерно так:

#ifndef NKPDE #ifdef SMP #define NKPDE 254 /* addressable number of page tables/pde's */ #else #define NKPDE 255 /* addressable number of page tables/pde's */ #endif /* SMP */ #endif

Для вычисления значения NKPDE разделите желаемый объём адресного пространства (в мегабайтах) на четыре и вычтите из получившегося числа единичку в случае однопроцессорной машины и двоечку в случае многопроцессорного ядра.

Для достижения второй цели вам нужно правильный адрес для загрузки ядра: просто отнимите размер адресного пространства (в байтах) от 0x100100000; результат будет равным 0xc0100000 для адресного пространства в 1 ГБ. Установите значение константы LOAD_ADDRESS в файле src/sys/i386/conf/Makefile.i386 в это значение; затем установите значение счётчика в начале списка секций в файле src/sys/i386/conf/kernel.script в то же самое значение, как это сделано здесь:

OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(btext) SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/obj/elf/home/src/tmp/usr/i386-unknown-freebsdelf/lib); SECTIONS { /* Read-only sections, merged into text segment: */ . = 0xc0100000 + SIZEOF_HEADERS; .interp : { *(.interp) }

После этого переконфигурируйте и перестройте ядро.


Начало  Назад  Вперед