И вот что получилось:
https://spreadsheets.google.com/ccc?key=0AprkJoujHYK8dERmZF9aLTI4SFhTWjBWd2J5LWlTVEE&hl=en#gid=0
Выводов пока немного. :)
1. Благодаря наличию в i7 2600 технологии HyperThreading мне удалось протестировать процессор и с ней и без нее. Разница в убывании времени компиляции довольно значительна - около 20%, что, безусловно, совсем не мало, так что, пожалуй, если вы часто собираете ядро, вам Hyperthreading пригодится.
2. Чем "боянистее" процессор, тем он медленнее. Это хорошо заметно по убыванию времени компиляции по сравнению с временем выхода процессоров в свет. Вплоть до 20 раз между 2003 и 2011 годом :). Также можно найти тест одного из товарищей на мобильном i7 720QM, который даже на меньших частотах обгоняет старенький XP 2200+ не в ожидаемые 4-8 раз (по числу ядер и потоков), а в целых 10.
3. Частота процессора и шин может влиять на время компиляции значительно. Это стало ясно после разгона XP2200+ с 1800 до 2025 МГц по шине (с 133 до 150 Мгц), а именно на 12%, отчего время компиляции снизилось на целых полчаса (~16%). Частота памяти же тут ничем не влияла, хотя и была попытка переключать DDR266 в DDR400, благо такая возможность была в чипсете nForce2). Но, несмотря на это, разогнанный до 4.2 ГГц Core i7 не дал лучших результатов, возможно, пропускной способности одноканальной памяти не хватило.
4. В разных ядрах/компиляторах результаты разные. Так получилось, что тест на T7250 проводился сначала в Funtoo (64-битный), а потом с Live CD Ubuntu 10.04 (32 бита), просто из интереса, дает ли прирост 64-битная архитектура при компиляции ядер. Так как результат оказался в 5 минут в пользу 32-битной системы было заподозрено неладное - и 64-битный LiveCD Ubuntu 10.04 тоже оказался быстрее на те же 5 минут.
5. Не всегда больше ядер - быстрее сборка. :) Opteron 8220 при вдвое меньшем числе ядер серьезно обставил 4 Xeon E7340 (хотя, ну может быть, дело в RT-ядре на последнем). Влияет "качество" ядер и частоты.
Немного справки:
Ядро было 2.6.36.3.
Компилировалось тестируемой архитектурой под нее же.
Конфигурация ядра получалась командой make allmodconfig
Памяти было достаточно чтобы пренебречь дисковыми тормозами.
Каждый тест проводился после чистой распаковки ядерного тарболла.
Учитывалось только время компиляции.
Если кому-то захотелось тоже прогнать компиляцию и поделиться результатом, скрипт примерно такой:
#!/bin/bash KERNEL_TAR=kernel.tar.gz KERNEL_URL=http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.36.3.tar.bz2 KERNEL_DIR="linux-2.6.36.3" CPU_CNT=`grep -c processor /proc/cpuinfo` # Here you can change number of jobs JOBS=$CPU_CNT #JOBS=$(( $CPU_CNT * 2 )) echo "Running test usung $CPU_CNT processors and $JOBS jobs" if [ ! -e "$KERNEL_TAR" ] ; then wget "$KERNEL_URL" -O"$KERNEL_TAR" fi if [ -e "$KERNEL_DIR" ] ; then rm -rf "$KERNEL_DIR" fi tar xf "$KERNEL_TAR" && cd $KERNEL_DIR && make allmodconfig && time (make -j "$JOBS" > ../build.log 2>&1) if [ $? -eq 0 ] ; then cd .. && rm -rf "$KERNEL_DIR" echo Include this data to report too: gcc --version uname -a grep "model name" /proc/cpuinfo | head -1 echo $CPU_CNT threads else cd .. echo build failed. You can look into build.log to find cause. fi
Требуется наличие подключения к интернету, около 4 ГБ свободного места на диске, make, компилятор и другие программы для сборки ядра.
И если решите запускать через sh "xxxx.sh", убедитесь, что ваш /bin/sh - bash, иначе результаты time будут отличаться от тех, которые публикую я.
Комментариев нет:
Отправить комментарий