Каково текущее состояние реализации x32 ABI в Ubuntu по состоянию на 14.04?

11

В 14.04 примечания к выпуску содержат следующее предложение:

Также появилась поддержка X32 ABI (64-битный режим с 32-битными указателями).

Я думаю, что это заслуживает немного большего объяснения. Когда вы используете поисковую систему, чтобы узнать больше о «x32 ABI», вы можете в лучшем случае найти статью в Википедии , но в основном это Phoronix и Slashdot, которые не кажутся очень полезными.

Я хотел бы видеть некоторые проницательные ответы на:

  • Как или что из x32 ABI в настоящее время реализовано в 14.04?
    • Включен ли он по умолчанию в 14.04 64-бит или есть какие-то дополнительные шаги, необходимые для настройки x32 ABI?
    • Какие компоненты или какое программное обеспечение может использовать x32 ABI?
  • Существуют ли реальные преимущества на машине / установке с x32 ABI?
    • Каково потребление памяти по сравнению с 32-битными и 64-битными установками по умолчанию?

В идеале x32 ABI должен был объединить лучшее из обоих миров: большинство улучшений скорости x86-64 и более низкое потребление памяти для пользователей на более старом 64-битном оборудовании, у которого не было много оперативной памяти .

LiveWireBT
источник
Мне самому интересно это. Одна вещь, которую я могу вам рассказать об использовании памяти x32, это то, что она использует 32-битную адресацию (то же ограничение 4GB, что и x86). Поскольку 64-разрядные процессоры используют 64-разрядную адресацию памяти, ссылки на память должны храниться в 64-разрядной памяти - в два раза больше 32-разрядных, необходимых для хранения ссылок на память в 32-разрядном режиме. Таким образом, 64-разрядная неявно хуже в памяти в некоторых случаях, когда используется много ссылок на память (указатели).
Чак Р
здесь исследование о производительности и x32: cds.cern.ch/record/1528222/files/LHCb-TALK-2013-060.pdf
Postadelmaga

Ответы:

5

На 64-битной установке вы будете испытывать большие различия в использовании памяти (особенно для таких приложений, как chrome, firefox, mysql и java).

Это хорошо известный побочный эффект 64-битных ОС, так как 64-битные ОС имеют и другие преимущества.

Вот оно x32 ABI: функция ядра, предназначенная именно для ограничения этой проблемы.

Что такое x32 ABI:
согласно этому PDF-документу он обеспечивает большое преимущество памяти по сравнению с 64-битной нормальной ОС (даже улучшение на 40%).

Теперь, если я понял, x32-ABI требует :

  • Ядро Linux 3.4 скомпилировано с CONFIG_X86_X32 = y
  • Gcc 4,7
  • Бинутилс 2.22
  • Glibc 2.16
  • Перекомпиляция всех системных библиотек, требуемых приложением, с помощью gcc -mx32

Как это попробовать В
новом ядре по умолчанию установлен обязательный флаг, поэтому вам нужно только правильно скомпилировать пакет (здесь Gentoo для определенных правил;)
В Ubuntu я не уверен, что для этого есть репозиторий / ppa, во всяком случае, Debian и Arch есть какое-то решение:

Debian

арочный

Postadelmaga
источник
Я полагаю, что нужно добавить параметры ядра в grub, как сказано в вики Debian.
Ярно
1
С точки зрения конечного пользователя Ubuntu, установка системы Ubuntu x32-ABI кажется слишком сложной :(
jarno