CPU benchmark

Обсуждение софта. Установка, настройка, новинки. В общем все, что связано с софтом.
Ответить
Аватара пользователя
b0r1sus
Сообщения: 828
Зарегистрирован: Сб сен 01, 2012 9:20 am
Контактная информация:

CPU benchmark

Сообщение b0r1sus »

Написал простенький бенчмарк производительности процессора для DOS, GNU/Linux.

Может использоваться на реальном железе и виртуальных машинах. Благодаря маленькому размеру может использоваться на смартфонах и во вложенной виртуализации. Для запуска виртуальной машины DOS достаточно 4 мегабайта оперативки.
  • loop1s показывает количество циклов умещающихся в 1 секунду. Чем больше тем лучше.
  • loop1g показывает количество секунд необходимых для прогона 1 000 000 000 циклов. Чем меньше тем лучше.
https://umvirt.com/loops/
Вложения
QEMU. программная виртуализация
QEMU. программная виртуализация
QEMU. программная виртуализация на смартфоне
QEMU. программная виртуализация на смартфоне
QEMU/KVM. аппаратная виртуализация
QEMU/KVM. аппаратная виртуализация
DOSBOX. программная виртуализация
DOSBOX. программная виртуализация
Вложенная аппаратная виртуализация.
Вложенная аппаратная виртуализация.

Аватара пользователя
arxont
Сообщения: 3948
Зарегистрирован: Пт авг 31, 2012 11:29 pm

Re: CPU benchmark

Сообщение arxont »

Боря, твой "бейчмарк" хуйня уровня первого класса. Если бы мне такое прислали в качестве тестового, то я бы кандидата (даже на джуна) вычеркнул и добавил в блеклист.

Код: Выделить всё

        loops=1000000000;
while(1){
        stime=time(NULL);

        for(i=0; i<loops; i++){
        printf("");
        }
        etime=time(NULL);
Киберпанк не умер. Он просто наступил.

Аватара пользователя
b0r1sus
Сообщения: 828
Зарегистрирован: Сб сен 01, 2012 9:20 am
Контактная информация:

Re: CPU benchmark

Сообщение b0r1sus »

arxont писал(а): Пн июл 13, 2020 10:51 am Боря, твой "бейчмарк" хуйня уровня первого класса. Если бы мне такое прислали в качестве тестового, то я бы кандидата (даже на джуна) вычеркнул и добавил в блеклист.

Код: Выделить всё

        loops=1000000000;
while(1){
        stime=time(NULL);

        for(i=0; i<loops; i++){
        printf("");
        }
        etime=time(NULL);
Что не так?

Аватара пользователя
arxont
Сообщения: 3948
Зарегистрирован: Пт авг 31, 2012 11:29 pm

Re: CPU benchmark

Сообщение arxont »

Потому что всё что ты считаешь, это ограничение скорости вывода на консоль.
Потом, ты понимаешь, что скорость процессора это несколько иное? И мультитредность, кэш, инструкции там всякие?

А твой бенчмарк, даже не грузит проц целиком (на твоих же скринах)

Ты бы хоть посмотрел на другие Open-Source проекты (к примеру https://github.com/phoronix-test-suite/ ... est-suite/ https://openbenchmarking.org/tests/pts )
Киберпанк не умер. Он просто наступил.

Аватара пользователя
b0r1sus
Сообщения: 828
Зарегистрирован: Сб сен 01, 2012 9:20 am
Контактная информация:

Re: CPU benchmark

Сообщение b0r1sus »

arxont писал(а): Пт июл 31, 2020 2:38 pm Потому что всё что ты считаешь, это ограничение скорости вывода на консоль.
Хз. Я так напихал да скомпилил.
arxont писал(а): Пт июл 31, 2020 2:38 pm Потом, ты понимаешь, что скорость процессора это несколько иное? И мультитредность, кэш, инструкции там всякие?
Мне этого не нужно. Нужен был сверх минималистичный бенчмарк чтобы осуществлять грубый замер и сравнение производительности вычислительных сред. Если направить вывод бенчмарка в файл можно изучить колебания значений во времени.
arxont писал(а): Пт июл 31, 2020 2:38 pm А твой бенчмарк, даже не грузит проц целиком (на твоих же скринах)
92% на скрине с Limbo - это заряд батареи телефона.
Телефон навязывает режим экономии энергии и тротлит по-черному.
Сомневаюсь что Limbo получил достаточное количество процессорного времени.

100% загрузка процессора клиентским приложением в многозадачной среде возможна в случае если у приложения нет конкурентов на отдельном процессоре.

Зависимость от конкурентов - это тоже хорошо. Она показывает производительность приложения не в тепличных условиях а в боевых.
Влияние тротлинга и режима энергосбережения - тоже хорошо.
arxont писал(а): Пт июл 31, 2020 2:38 pm Ты бы хоть посмотрел на другие Open-Source проекты (к примеру https://github.com/phoronix-test-suite/ ... est-suite/ https://openbenchmarking.org/tests/pts )
https://www.phoronix-test-suite.com/ - слишком большой бенчмарк и не работает с FreeDOS.

Виртуалка на FreeDOS - это виртуалка с самыми минимальными системными требованиями. FreeDOS оперативно грузится даже на телефоне с ARM процессором, позволяет оперативно поднимать большое количество виртуалок даже во вложенной виртуализации.

Как завещал Билли: "640Кб должно быть достаточно для каждого!"

Аватара пользователя
b0r1sus
Сообщения: 828
Зарегистрирован: Сб сен 01, 2012 9:20 am
Контактная информация:

Re: CPU benchmark

Сообщение b0r1sus »

Приобрел компьютер AMD Am386DX-40. Теперь его можно использовать как эталон или точку отсчета. Как и у других процессоров того времени у него оказалось два режима обычный и Turbo. В обычном режиме он снижает мощность до 4.77 МГц как у Intel 8088, в режиме "Turbo" работает на полную мощность.

Прогнал бенчмарк:
Обычный режим
Обычный режим
default5_.JPG (36.66 КБ) 4796 просмотров
Режим Turbo
Режим Turbo
turbo_.JPG (34.74 КБ) 4796 просмотров
Смена режимов
Смена режимов
powerup_.jpg (23.22 КБ) 4796 просмотров
Виртуальная машина под эмулятором для смартфона "Limbo" на телефоне DEXP выдает производительность меньшую даже чем у AMD Am386DX-40. Практически такую же как Intel 8088.

DosBox работает со схожей скоростью.

Благодаря QEMU можно один компьютер нарезать на несколько 386-х, если эмулировать сразу DOS плотность предельная, а вот если сначала эмулировать Linux, а потом уже Dos плотность будет хуже так как памяти потребуется больше, особенно в случае использования 64-х битной архитектуры.

Аватара пользователя
b0r1sus
Сообщения: 828
Зарегистрирован: Сб сен 01, 2012 9:20 am
Контактная информация:

Re: CPU benchmark

Сообщение b0r1sus »

В поделку установил эмулятор PCEM, который использует оригинальные ромы биосов в отличае от свободного SEABIOS в QEMU и BOCHS.

Среди процессоров нашел AMD Am386DX-40. Решил проверить сколько попугаев выдает данный бенчмарк и сравнить мощность виртуальной машины и реального компа.
pcem_slow.jpg
По скорости вычислений эмулятор сливает реальному компу почти в 2 раза. Скорей всего где-то в настройках эмуляции выставлены не правильные параметры. Intel Pentium 233 MMX эмулируется гораздо быстрее.
pcemu_slow233.jpg

Аватара пользователя
arxont
Сообщения: 3948
Зарегистрирован: Пт авг 31, 2012 11:29 pm

Re: CPU benchmark

Сообщение arxont »

а) Подумай насчёт того, как это всё выглядит с учётом многоядерности. Раньше у меня был проц 3.8ггц, но на 6 ядер. Теперь 2.5 гигагерц, но на 48 ядер. Что быстрее? :mrgreen:

б) убери уёбу в плане printf(""), лучше считай что-нибудь - тот же расчёт числа пи (или фибоначи, или чего фрактального, или е) и подсчёт сколько цифр было рассчитано за минуту (запускаешь по потоку на каждое ядро, потом суммируешь - вот тебе сразу и сингл-тред, и многоядерный тест). Потом надо понимать, что количество подсчётов 2+2 у тебя выродится в скорость использования кэша, поэтому надо непредсказуемое.
Киберпанк не умер. Он просто наступил.

Аватара пользователя
b0r1sus
Сообщения: 828
Зарегистрирован: Сб сен 01, 2012 9:20 am
Контактная информация:

Re: CPU benchmark

Сообщение b0r1sus »

arxont писал(а): Вт мар 30, 2021 2:26 pm а) Подумай насчёт того, как это всё выглядит с учётом многоядерности. Раньше у меня был проц 3.8ггц, но на 6 ядер. Теперь 2.5 гигагерц, но на 48 ядер. Что быстрее?
Многопоточность можно в майнинге, рендере, конверторах замерять. Ничего не мешает запустить бенчмарк в нескольких потоках, а потом сложить значения.
Cмех-смехом, а производительность выполнения однопоточной задачи на процессоре 3.8ггц возможно быстрее ;)
arxont писал(а): Вт мар 30, 2021 2:26 pm б) убери уёбу в плане printf(""), лучше считай что-нибудь - тот же расчёт числа пи (или фибоначи, или чего фрактального, или е) и подсчёт сколько цифр было рассчитано за минуту (запускаешь по потоку на каждое ядро, потом суммируешь - вот тебе сразу и сингл-тред, и многоядерный тест). Потом надо понимать, что количество подсчётов 2+2 у тебя выродится в скорость использования кэша, поэтому надо непредсказуемое.
В таком виде данный бенчмарк можно успешно использовать для сравнения производительности процессоров реальных компьютеров и виртуальных машин. Есть другие свободные бенчмарки на любой вкус.
Достоинство этого бенчмарка в простоте и переносимости.

Аватара пользователя
arxont
Сообщения: 3948
Зарегистрирован: Пт авг 31, 2012 11:29 pm

Re: CPU benchmark

Сообщение arxont »

b0r1sus писал(а): Вт мар 30, 2021 3:30 pm В таком виде данный бенчмарк можно успешно использовать для сравнения производительности процессоров реальных компьютеров и виртуальных машин. Есть другие свободные бенчмарки на любой вкус.
Достоинство этого бенчмарка в простоте и переносимости.
Я тебе ещё раз говорю, что ты ни разу не сравниваешь производительность процессоров. А сравниваешь скорость вывода на консоль. Которая зависит от текущего командного интерпретатора и его настроек. И если ты его запустишь через SSH, то какая скорость будет у процессора? Который будет ждать вывода на консоль и отрисовки printf на удалённом компьютере.
Даже

Код: Выделить всё

for(uint64_t i = 0; i< MAX_COUNT ; i++) {}
даст более правильное сравнение

Потом открой для себя stopwatch и больше никогда не занимайся порнографией с вычитанием времени.

Потом открой для себя noloop требование к бенчмаркам и пойми почему обычно считают фракталы какие-нибудь (или пресловутое пи, или фибоначи, или любое другое что не оптимизируется и не раскладывается). И потом выводят сколько насчиталось за минуту (к примеру).
Киберпанк не умер. Он просто наступил.

Ответить