Kernel/PAE
< Kernel
Внимание! Настоящая статья устарела и описывает положение вещей примерно на 2009 год (с правками форматирования текста до 2015 года). Такого флейвора ядра у нас больше нет.
PAE (Intel Physical Address Extension)
Что такое PAE и почему им не следует пользоваться?
Это очередной аппаратный хак, который позволяет 32-битным процессорам работать с памятью за пределами 32-битного адресного пространства.
В ALT Linux 4.0+ поддержка PAE включена в некоторых 32-битных (i586) ядрах; на весну 2008 основное из них — std-pae.
Мнения специалистов
Repeat after me: virtual space needs to be bigger than physical space. Not "as big". Not "smaller". It needs to be bigger, by a factor of at least two, and that's quite frankly pushing it, and you're much better off having a factor of ten or more. [...] So you could allocate user pages in it, but you had huge problems with things like internal kernel data structures, which can be the bulk of your memory needs under some (not that unusual) loads. Directory caches, inodes, etc couldn't use it, and in general it meant that under Linux, if you had more than 4GB of physical memory, you generally ran into problems (since only 25% of memory was availble for normal kernel stuff - the rest had to be addressed through small holes in the tiny virtual address space). [...] So no, PAE does not mean that you can use more than 4GB of RAM. Even before PAE, the practical limit was around 1GB, and PAE didn't move that post a fraction of an inch!
Ядра std-smp и std-pae отличаются только одной опцией конфигурации: в std-smp используется HIGHMEM4G, а в std-pae - HIGHMEM64G. (Дифф между конфигами больше одной строки, поскольку там показываются и зависимые опции, которые устанавливаются автоматически.) Необходимость сборки двух вариантов ядра для i586 вызвана тем, что ядро, собранное с HIGHMEM4G, не может использовать более 4GB RAM, зато работает на всех процессорах >= i586, в то время как ядро, собранное с HIGHMEM64G, может использовать до 64GB RAM, но не работает на процессорах, не поддерживающих режим PAE (поддержка PAE появилась начиная с Pentium Pro, кроме того, первые варианты Pentium M также не поддерживают PAE). На самом деле пакеты ядер std-pae должны были бы иметь архитектуру i686, а не i586, но я не знаю, есть ли способ заставить incoming пересобирать пакеты именно таким образом. Для архитектуры x86_64 всё это неактуально, поэтому вариант std-pae существует только на i586.
Вообще ядро std-pae действительно нужно использовать только при наличии как минимум 4G RAM; в остальных случаях устанавливать его обычно не имеет смысла (разве что очень хочется использовать в 32-разрядном ядре имеющуюся в процессоре поддержку NX (запрет исполнения кода на уровне страниц) - эта возможность поддерживается только при использовании PAE). К сожалению, именно на этом ядре swsusp работать не может - реализация swsusp в 2.6.18 на i386 несовместима с PAE. Для использования swsusp придётся установить вариант ядра std-smp (релизы std-smp и std-pae с одинаковыми номерами отличаются только конфигурацией - в std-pae включена опция HIGHMEM64G, в std-smp - HIGHMEM4G).
vsu@