Можно ли ускорить выполнение программ на процессоре atom n270 ?

Да. Можно. Быстрый переход к последнему варианту ключей для компиляции на процессорах atom

Выяснилось, что ранее не сильно оптимизирующие ключи в gcc 4.4.5 намного лучше доработаны в gcc 4.5.3.

Делюсь своими настройками, выполненными на второй рабочей системе с Gentoo, на Calculate все будет работать аналогично. Для достижения такой производительности Вам потребуется использование gcc 4.5.3.

В /etc/make.conf прописываем следующие переменные для компиляции программ с помощью emerge:

CFLAGS="-O3 -march=native -mtune=native -fomit-frame-pointer -pipe --param l1-cache-line-size=64 --param l1-cache-size=24 --param l2-cache-size=512 -mmmx -msse -msse2 -msse3 -mssse3 -ffast-math -mfpmath=both -fexcess-precision=fast -fmerge-all-constants -fno-gcse -funroll-all-loops -g0 -Wno-all"
CXXFLAGS="${CFLAGS}"

Для компиляции ускоренного ядра linux находим переменные CFLAGS_MODULE и CFLAGS_KERNEL в файле /usr/src/linux/Makefile и добавляем следующие ключи:

CFLAGS_MODULE   = -O2 -march=native -mtune=native --param l1-cache-line-size=64 --param l1-cache-size=24 --param l2-cache-size=512 -fmerge-all-constants -finline-functions -funswitch-loops -fpredictive-commoning -fgcse-after-reload -fipa-cp-clone -fno-gcse
CFLAGS_KERNEL   = -O2 -march=native -mtune=native --param l1-cache-line-size=64 --param l1-cache-size=24 --param l2-cache-size=512 -fmerge-all-constants -finline-functions -funswitch-loops -fpredictive-commoning -fgcse-after-reload -fipa-cp-clone -fno-gcse

Корректируем USE флаги, касающиеся процессора atom:
USE="-3dnow -3dnowext -altivec -ibm -mmxext -sse4 -sse4a -sse4_1 -sse5 mmx smp sse sse2 sse3 ssse3"

Размаскировываем gcc версии 4.5.3. Устанавливаем.

Проверяем какой компилятор у нас используется:

root # gcc-config -l
[1] i686-pc-linux-gnu-4.4.5 *
[2] i686-pc-linux-gnu-4.5.3

Переключаемся на новый компилятор в случае необходимости:

root # gcc-config 2

Снова проверяем:

root # gcc-config -l
[1] i686-pc-linux-gnu-4.4.5
[2] i686-pc-linux-gnu-4.5.3 *

Обновляем окружение:

root # env-update && source /etc/profile

Пересобираем ядро и мир. Результат будет. См. тест в программе nbench.

Все пакеты и ядро, собранные мною с этими параметрами работают без сбоев.

Примечание:
Некоторые версии chromium могут не собираться с ключом ffast-math из-за использования встроенного sqlite3 (для компиляции свежих версий пока можно отключать этот параметр, так как нет eduild учитывающего этот нюанс). Исключения составляют четыре пакета: sys-devel/dev86-0.16.17-r6, kde-base/kdelibs-4.7.0-r1, dev-db/sqlite-3.7.7.1 и как я говорил некоторые версии chromium. На эти четыре пакета нужны менее экстремальные ключи. Дополнительно выяснилось при обновлении kde 4.7.1 и 4.7.2 можно собрать только без ключа -ffast-math. Еще одно уточнение: в связи с обновлением библиотеки libpng15 до версии 1.5.5 с ключем -funroll-all-loops не собирается media-gfx/imagemagick.

Для сравнения какие результаты выдавал nbench ранее можно посмотреть в этом топике

P.S.
В данной статье затронута только часть оптимизации, касающаяся семейства процессоров atom. Для полной оптимизации потребуется учесть еще много нюансов. Еще один главный кандидат на оптимизацию это Ваша видеокарта. В случае использование KDE оболочки, ее тоже необходимо оптимизировать. Для оптимизации KDE используйте USE флаг raster и установите oxygen-gtk. В этом случае все будет работать так же шустро как и в других оболочках. Но это отдельные и достаточно объемные темы для разговора.

Большая просьба - при вопросах указывайте, пожалуйста, модель Вашего компьютера.

nbench.png

Алексей,подскажите пожалуйста,какие ключи и переменные необходимы для процессора Atom D510 http://ark.intel.com/products/43098.

Пожалуй, если уж играть с оптимизациями, немало производительности добавит оптимизация кода ядра под ваш кристалл

Processor type and features  --->
 Processor family  --->

Алексей Гриценко wrote:

Алексей,подскажите пожалуйста,какие ключи и переменные необходимы для процессора Atom D510 http://ark.intel.com/products/43098.

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

Покажите вывод команд $ cat /proc/cpuinfo | wgetpaste и $ gcc -march=native -E v </dev/null 2>&1 | sed -n ‘s/.* v //p’

P.S.
Убрал жирный шрифт в команде, т.к. неверно отобразилась команда (в конце появился лишний знак умножения)

cat /proc/cpuinfo здесь http://pastebin.calculate-linux.ru/ru/show/1737,а на команду gcc -march=native -E v </dev/null 2>&1 | sed -n ‘s/. v //p’* выдает : “sed: -e выражение #1, символ 13: неизвестный модификатор к `s’”

gcc -march=native -E v </dev/null 2>&1 | sed -n ‘s/. v //p’

надо вот так

Спасибо.Вот вывод :

/usr/libexec/gcc/i686-pc-linux-gnu/4.4.5/cc1 -E -quie-D_FORTIFY_SOURCE=2 -march=core2 -mcx16 -msahf --param l1-cache-size=24 --param l1-cache-line-size=64 --param l2-cache-size=512 -mtune=core2

CFLAGS="-O3 -march=core2 -mtune=core2 -fomit-frame-pointer -mcx16 -msahf -pipe --param l1-cache-line-size=64 --param l1-cache-size=24 --param l2-cache-size=512 -mmmx -msse -msse2 -msse3 -mssse3 -ffast-math -mfpmath=both -fexcess-precision=fast -fmerge-all-constants -fno-gcse -funroll-all-loops -g0 -Wno-all

Нашел даташит для atom d510. Как посмотрю отпишу что нужно еще сделать перед тем как прописывать параметры компиляции уже окончательно. Предварительно скажу, что параметры atom n270 должны быть оптимальными и для atom d510.

Все, что касается настроек для atom d510 подойдут все оптимизирующие настройки atom n270.

Кеш L2, также указываем 512, а не 1024. На каждый процессор по 512. При желании можете протестировать оба варианта кеша L2 на какой-нибудь программе работающей в 4-ре потока (или 4-ре одновременно запущенных однопотоковых), обрабатывающей данные суммарно для 4-х потоков превышающие кеш L2 в 2-3 раза, но думаю вариант с указанием L2=1024 будет перебором. Кеш L1 у Вас аналогичен atom n270 для каждого из процессоров, поэтому оставляем параметр таким же.

Большое спасибо !

Для полной оптимизации нужно еще настроить параметры ядра под Ваш компьютер и выставить USE флаги и переменные с перечислением Вашего оборудования для подхвата этих параметров командой emerge.

Попробовать получится только послезавтра,обязательно отпишусь о результатах.а чтов в Ваших параметрах ядра поменять стоит ?

Флаг -fexcess-precision=fast вызывает ошибку компилятора.

cc1: ошибка: некорректный ключ "-fexcess-precision=fast"

PS У меня, правда, не Calculate, а Gentoo(2.6.39-r3)…

Олег Воробьёв wrote:

Флаг -fexcess-precision=fast вызывает ошибку компилятора.

cc1: ошибка: некорректный ключ "-fexcess-precision=fast"

PS У меня, правда, не Calculate, а Gentoo(2.6.39-

Не важно ядро и дистр. Нужен последний glibc и gcc не ниже 4.5.3

Спасибо. Стоял glibc-2.12.1. После обновления до 2.12.2 всё собралось.
Но! При включенных графических эффектах (в КДЕ) тормозить стало вообще жутко.
Это нормально?

Олег Воробьёв wrote:

Спасибо. Стоял glibc-2.12.1. После обновления до 2.12.2 всё собралось.
Но! При включенных графических эффектах (в КДЕ) тормозить стало вообще жутко.
Это нормально?

Нет, не нормально. После установки gcc надо env-update && source /etc/profile
потом пересобрать gcc и glibc/

Затем emerge -avtuDN system world

emerge -avtbe system world --exclude calculate-source
revdep-rebuild -i && prelink -afmR

Олег Воробьёв wrote:

Спасибо. Стоял glibc-2.12.1. После обновления до 2.12.2 всё собралось.
Но! При включенных графических эффектах (в КДЕ) тормозить стало вообще жутко.
Это нормально?

Олег напишите, пожалуйста, как называется Ваш ноутбук, чтобы можно было иметь представление о Ваших комплектующих. Тогда сможем Вам вполне определенно подсказать, что именно нужно скорректировать для максимальной производительности.

P.S.
Кроме выставления CFLAGS в make.conf желательно там же подправить USE флаги и прочие переменные под Ваш ноутбук, чтобы задействовать максимальную оптимизацию, т.к., к примеру, некоторые USE флаги все же заставляют компилировать программы с поддержкой неиспользуемых процессором atom команд (3dnow и прочие). Внес изменения в описание в связи с этим. Еще один немаловажный фактор - правильное описание видеокарты в этих переменных для включения аппаратного ускорения отрисовки. Для оптимизации KDE используйте USE флаг raster и установите oxygen-gtk.

Недобук называется Acer Aspire one AOA 110-Aw
Видик - интегрированный в чипсет Intel 945G. Поддержка в ядре (не модулем).
Профиль: [4] default/linux/x86/10.0/desktop/kde *
USE=“X cosolekit dbus edit fortran -gnome gpm gtk ipv6 kde motif mudflap -ncurses nls nptl openmp pam policykit qt qt3support qt4 readline sasl slang ssl”

PS Полную пересборку системы и мира, естесственно, выполнял.

PPS С CFLAGS="-O3 -march=core2 -fomit-frame-pointer -pipe" все графические эффекты отрисовывались достаточно шустро.

Посмотрите вывод команды:

$ gcc-config -l

Если i686-pc-linux-gnu-4.5.3 не помечено звездочкой, то выполните следующие действия:

 # gcc-config i686-pc-linux-gnu-4.5.3

Если i686-pc-linux-gnu-4.5.3* помечено звездочкой, то попробуйте использовать raster:

# Сделайте замер скорости, используемого Вами, стиля отображения элементов интерфейса с помощью qtperf (прикладываю, перед использованием потребуется сделать выполняемым).
# Добавьте USE флаг raster и пересоберите qt-gui

 # emerge -avtDN @world

# Выполните повторный замер.

Покажите оба результата. На atom флаг raster должен ускорять прилично.

P.S.
Существенное ускорение, с указанными в теме ключами, дает только gcc 4.5.3

Еще может потребоваться вывод команды:

 # emerge --info | wgetpaste

qtperf (72.8 KB)

[1] i686-pc-linux-gnu-4.4.6
[2] i686-pc-linux-gnu-4.5.3 *

В данный момент идёт пересборка с флагом raster. Как закончит, отпишусь.

PS Исходную скорость замерить уже не получится (qt-gui пересобрался неск. часов назад).