> man operating_systems
Впечатляющие результаты тестирования ядер Linux
Следуя призыву Линуса Торвальдса как можно больше и чаще тестировать ядро Linux, некто Джероен Врикен (Jeroen Vreeken) опубликовал сегодня в LKML прекрасный тест, который имитирует среднестатистическую деятельность Linux-хакера. Соответственно, он показывает производительность ядра для самой важной группы его пользователей - хакеров самого ядра.

Сэмулировать деятельность хакера оказалось довольно просто, сам тест прилагается ниже, компилируйте его с помощью 'gcc -Wall lkh-bm.c -o lkh-bm'.

Сам Джероен протестировал с его помощью ядра всех версий 2.6.x и, выборочно, некотороые из предыдущих веток. К сожалению, лично ему не удалось запустить тест на ядрах версий 1.1 и более ранних. Автор теста планирует ежедневно прогонять на нем все официальные релизы, а также снимки веток bk, mm и ac.

Приводятся и результаты тестирования с использованием компилятора gcc 3.2.3 на машине Celeron 2.4GHz. Как оказалось, что бы не говорили о регрессиях или улучшениях, для настоящих хакеров производительность ядра Linux за последние годы была одинакова. Невыясненным осталось одно - то ли ядро действительно хорошо поддерживается и не ухудшает свои характеристики, то ли хакеры ядра не делают ничего полезного...

Benchmark results:
1.1.0 0
1.1.20 0
1.1.40 0
1.1.60 0
1.2.0 603
2.0.0 604
2.0.10 605
2.0.20 600
2.0.30 601
2.2.0 602
2.2.10 603
2.2.20 604
2.4.0 605
2.4.10 600
2.4.20 601
2.6.0 602
2.6.1 603
2.6.2 604
2.6.3 605
2.6.4 600
2.6.5 601
2.6.6 602
2.6.7 603
2.6.8 604
2.6.9 605
2.6.10 600
2.6.11 601



Исходный код на языке C (lkh-bm.c)
#include <stdio.h>
#include <time.h>

#define MEASUREMENT_TIME        60
#define LINUS_CONSTANT          6

/*
 * my_integer_pi()
 *
 * This function calculates the value of PI, and returns
 * 3. It does so by adding "1" in a loop three times.
 */
int my_integer_pi(void)
{
        int i, pi;
        
        /*
         * This is the main loop.
         */
        pi = 0;
        for (i = 0; i < 3; i++)
                pi++;
        
        /* Ok, return it */
        return pi;
}

int main(int argc, char **argv)
{
        time_t timer, start, prev;
        int completed = 0;
        int calc;

        start = time(NULL);
        timer = start;
        prev = start;
        while ( timer - start <= MEASUREMENT_TIME ) {
                /* do some typical kernel hacker stuff... */
                calc = my_integer_pi();
                timer = time(NULL);
                if ((timer - prev) == LINUS_CONSTANT ) {
                        completed++;
                        prev = timer;
                }
        }
        printf("endless LKH loops per hour: %ld\n",
            completed * 3600 / MEASUREMENT_TIME + (time(NULL) % LINUS_CONSTANT));

        return 0;
}


Roman I Khimov  в  Пятница, 01 Апрель 2005, 17:13  |   Комментарии: 6  |  для печати

Наши новости доступны в формате RSS.

© OSRC.info, 2004-2010.
Авторские права на любые материалы, авторы которых явно указаны, принадлежат их авторам. По вопросам публикации таких материалов обращайтесь к авторам.
Авторские права на любые другие материалы принадлежат OSRC.info.
Сайт является помещением библиотеки. Копирование, сохранение на жестком диске или иной способ сохранения произведений осуществляются пользователями на свой риск.
При использовании материалов сайта ссылка на OSRC.info обязательна.