Linux mini-HOWTO

         

BogoMips ... failed


Эта глава родилась из огромного числа вопросов появившихся в новостях и полученных мною по почте, напр., Lily, lbliao@alumni.caltech.edu, и Pierre Frenkiel, frenkiel@cdfap2.in2p3.fr. в марте 1995 они спрашивали:

"Когда я загружаю Linux, то я получаю следующее сообщение: Calibrating delay loop.. ok - 23.96 BogoMips failed. Где/почему возникает ошибка в цикле настройки задержки?' "

Ошибки не было. Если бы она произошла, то вы бы получили сообщение "Calibrating delay loop.. failed"

Скорее всего, это случилось из-за драйвера какого-нибудь устройства, если у вас не подключено это устройство. Сразу после подсчета рейтинга BogoMips инициализируются все драйверы. Первыми идут устройства SCSI, затем сетевые устройства, и т.д. О любой неисправности сразу сообщается. Из-за частых отказов, достопримечательностью является драйвер AHA152x. Другими причинами, по которым произошел сбой драйверов (а не подсчета рейтинга BogoMips), являются - сбои системы, большие задержки, зависание системы, произошедшие близко по времени (немного до или сразу после) к выводу "ok - xx.xx BogoMips".

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



BogoMips mini-Howto


Wim van Dorst
baron@clifton.hobby.nl


Перевод: Михаил Корепанов, ASPLinux

В этой главе рассказывается о BogoMips, информация собрана из различных источников, таких как электронная почта и конференции. Так же здесь есть части из различных архивов Linux в частности, файлов HOWTO/mini/BogoMips. На сколько я знаю, есть переводы на французский, японский, итальянский, немецкий, польский, португальский, китайский, и венгерский . Пояснительная статья, под названием 'the Quintessential Linux Benchmark,' появилась в январском выпуске Linux Journal, за 1996. Пояснения по BogoMips можно также найти в The Jargon File. Мы были бы благодарны за добавления в mini-Howto для неописанных процессоров (CPU). Добавления высылать автору по e-mail.



Что такое BogoMips


Это цитата из Internet, автор неизвестен, но оттуда вытащили ее Eric S Raymond esr@thyrsus.com, и Geoff Mackenzie freon@dialstart.net, далее следует юмористическое определение BogoMips, ''сколько миллионов раз в cекунду, процессор может ничего не делать.''

Более серьезное определение, написанное Lars Wirzenius' wirzeniu@kruuna.Helsinki.FI от 9 Сентября 1993, с добавлениями Alessandro Rubini, rubini@norgana.systemy.it, и моими:

"`MIPS - это аббревиатура, миллионы операций в секунду (Millions of Instructions Per Second). Это измерение скорости выполнения программы. Как и большинство таких мер, ей больше злоупотребляют, чем правильно используют (очень трудно сравнивать MIPS различных типов компьютеров).

BogoMips - это изобретение Linus Torvalds. Ядру требуются (или это драйвер устройства?) временные задержки состоящие, из пустых циклов, которые должны быть отрегулированы по отношению к скорости процессора. Так как ядро вычисляет при загрузке, сколько времени занимает каждый тип цикла. "Bogo" происходит от "bogus" (фальшивый, поддельный). Так как величина BogoMips дает представление о скорости процессора, но она настолько антинаучна, что ее назвали не иначе, как BogoMips.

Причины (а их две), почему это выводится во время загрузки, являются: a) удобство для отладки и проверки работы кэша и режима турбо, и b) потому что Linus любит посмеиваться над растерянными людьми в новостях. "

BogoMips определяются в /usr/src/linux/init/main.c (простой алгоритм на C), и записывает ее в переменную ядра loops_per_sec, которая используется некоторыми драйверами для более серьезных нужд. Реальная функция задержки udelay() написана на ассемблере, и поэтому каждый порт имеет свое собственное определение /include/asm/delay.h. Переменные loops_per_sec и функция udelay() используются многими драйверами:



Как определить, какой рейтинг BogoMips должен быть


По инициативе Ian Jackson, ijackson@nyx.cs.du.edu, и Przemek Klosowski, дополненной и расширенной мной.

Как весьма приближенный ориентир, BogoMips могут быть рассчитаны так:





Как определить текущий рейтинг BogoMips


Существует три метода для определения BogoMips:

Посмотрите в /proc/cpuinfo, напр., при помощи `cat /proc/cpuinfo`. Этот метод предпочтительнее других.

Просмотрите то, что было написано во время загрузки в файле syslog (если потребуется, загляните в файлы dmesg или syslogk). В этих файлах указана точная информация.

При помощи программы bogomips. Это рекомендуется для не-Linux систем, по причинам описанным ниже.

Программу BogoMips можно использовать для систем не-Linux, таких как Cray и т.д. Выдержка из файла readme, написанного Jeff Tranter, jeff_tranter@mitel.com:

"Устав перезагружать свою систему, вы можете посмотреть, сколько BogoMIPS она сегодня выдает [...] "Bogomips" - это отдельная программа, которая показывает быстродействие вышей системы, используя самый известный алгоритм. Программа использует тот же код, что и ядро Linux при загрузке, но работает как, пользовательская программа. [...] Версия 1.3 BogoMIPs может быть установлена и запущена на любой системе, которая поддерживает компилятор и библиотеку ANSI C."

Примечание: из-за загрузки системы Linux значение, вычисляемое этой программой, может быть ниже, чем на самом деле. На самом деле, любая пользовательская программа не может дать более точную информацию, чем BogoMips, вычисленное при загрузке системы. Поэтому ниже приводятся только значения вычисленные, при загрузке.

Удостоверьтесь, что файл sunsite.unc.edu:/pub/Linux/system/status/bogo-1.2.tar.gz/ содержит последнюю версию 1.3 (на текущий момент). Но благодаря своей высокой совместимости, она должна откомпилироваться почти на любой системе с компилятором C.



Наиболее часто задаваемые вопросы по BogoMips


Несколько респондентов способствовали моему изучению BogoMips. В этой главе мне хочется их отблагодарить.



Почему надо обращать внимание на рейтинг BogoMips


Разрешите объяснить мне две причины, по которым надо уделять внимание рейтингу BogoMips, получившемуся при загрузке Linux:

Для того чтобы увидеть, на сколько отклоняется рейтинг от присущего машине по типу процессора, частоте и кэшу. С точки зрения рейтинга, самыми уязвимыми местами у систем являются:

настройки кэша основной памяти (отложенная запись отрицательно влияет на рейтинг BogoMips, часто он бывает ниже 5; лучше использовать прямую запись)

кнопка turbo (должна быть включена)

программно эмулированный BIOS псевдо-кэш (включите настоящий кэш)

и другие подобные настройки кэша и рабочих частот, также иногда относящиеся к BIOS

Вы хотите узнать, быстрее ли ваша система по сравнению с моей? Конечно, это абсолютно некорректно, ненадежно и ненужно, но это общая "болезнь" всех программ тестирования производительности. Поэтому, почему бы и нет? Эта глупость никогда никого не останавливала? :-)

Замечание: более серьезно эта тема затронута в Linux Benchmarking Howto, написанном Andru D. Balsa.



Подпись


Met vriendelijke groeten, Wim 'Dad' van Dorst. ------------------------------------------------------------------------ Wim van Dorst, Clifton Scientific Text Services, tel/fax +31 355 242 319 This sentence have three erors



Похожие процессоры (Cyrix, NexGen, AMD)


Процессорам, типа Cyrix 486 необходима специальная программа, включающая кэш (эту программу иногда называют - BogoBoost). Рейтинг BogoMips у Cyrix 5x86 и 6x86 CPU резко увеличивается, если в BIOS включить опцию branch-prediction. Заметьте, что увеличение скорости работы имеет свой предел. Есть несколько пакетов для настройки процессоров Cyrix: bogoboost, cx5x86mod, set6x86. Их архивы можно найти на известных сайтах. Еще говорят, что Cyrix 6x86 показывает лучшие результаты с ядром, собранным для 486, а не для Pentium.

Информация о машине на основе процессора NexGen 386-enhanced (Nx586), приведена в одном разделе с 386. Несмотря на то, что они работают как Pentium, по рейтингу BogoMips они относятся именно к 386

AMD 5x86, так же называемые AMD 486DX5 - это учетверенные машины 486/33, поэтому они находятся в одном разделе с другими 486 CPU. Процессоры AMD K5 и K6 являются Pentium-совместимыми CPU.



Разница в рейтингах BogoMips


Linus Torvalds, torvalds@cc.helsinki.fi объясняет, почему бывают различия в рейтингах BogoMips, в c.o.l.development, от 28 апреля 1994:

"BogoMips дает числовой результат, и вы хотите чтобы, он был одинаковым все время. Но обычно вы будете получать разные числа, если скорость работы близка к предельной."

Также, если вы не скомпилировали ядро специально для своего процессора, то может получиться несовпадение рейтинга BogoMips. Эта проблема присуща различным x86 процессорам (Intel и его клоны). Но, к счастью, она решается просто: откомпилируйте ядро специально для своего процессора.

Примечание: на алгоритм BogoMips, вопреки распространенному мнению, версия ядра НЕ влияет .



Системы, работающие не под Linux (для сравнения)


Система BogoMips Кто проверял

Z80 TRS80 model 4 TRSDOS 0.004 Z80/4.6 NC100 ZCN 0.013 68000/8 Macintosh Classic MacOS 0.53 68020/20 Sun 3 SUNOS 2.0 68020/16 Macintosh LC MacOS 3.09 68020/25 Sun 3-180 SUNOS 4.0 Sparc Sun 3-60 SUNOS 4.00 Sparc Sun 3-80 SUNOS 4.00 68030/25 Macintosh IIci NetBSD 5.62 68040/25 Macintosh LC475 MacOS 12.27 68040/33 HP9000-280 HP-UX 14 68040/25 Apollo 5500 DomainOS 14.00 Sparc Sun 4-280/20 SUNOS 16.0 Sparc Sun IPC/40 Solaris 16.00 68040/25 HP9000-425 DomainOS 16.00 68040 NextStep (?) 16.26 Sparc Sun SS1 SUNOS 18.00 Sparc Sun SS1 SUNOS 18.00 IBM RS6000 320 AIX 18.00 Sparc Sun SS1+ SUNOS 19 Sparc Sun SS1+ SUNOS 24.00 Sparc Sun IPC SUNOS 24.00 IBM RS6000 320H AIX 24.00 Sparc Sun Sparcstation2 SUNOS 26.00 SparcClassic/50 Solaris 32.00 Sparc Sun ELC SUNOS 32.00 HP-PA 9000-720 HP-UX 32.00 Sparc Sun SS10 SUNOS 34.00 Sparc Sun SS10 SUNOS 34.00 Pentium/100 Win-NT 36.21 Sparc Sun Sparcstation2 SUNOS 38.0 Mips R4000/100 Indy (?) 48.00 Mips R4000/100 SGI IndySC Irix 48.00 HP-PA 9000-720 HP-UX 48.00 Sparc SS10 SUNOS 48.00 IBM RS-6000-250/66 AIX 52.00 Sparc Sun Sparcstation10d SUNOS 54.0 Sparc SS1000 2CPU SUNOS 58.00 Sparc SS20 SUNOS 60.00 IBM RS6000-250/80 AIX 62.00 Alpha 21064/133 Decstation OSF1 64 Alpha 21064/133 Dec3000 OSF1 66.00 Sparc Sun SS5 SUNOS 68.00 Sparc Sun SS20 SUNOS 72.00 Sparc Sun SS20/712 Solaris 74 Mips R4400/150 Challenge (?) 74.00 Mips R4400/150 Indigo2Extr (?) 74.00 HP-PA 9000-715 HP-UX 74.00 Sparc SS5 sun4m SUNOS 84.00 Sparc SS1000E SUNOS 84.00 Alpha OSF1 92.00 Mips R4400/200 Indigo2Extr (?) 98.00 HP-PA 9000-735/99 HP-UX 98.00 Sparc SS5 SUNOS 104.00 Sparc Sun SS4/110 Solaris 108 Sparc Sun SS4 Solaris 108.00 Sparc Sun SS5 SUNOS 110 Alpha 21064A/233 OSF1 114 Alpha 3000 21064/300 OSF1 120.00 HP-PA 700/125 HP-UX 122 HP-PA 9000-735/125 HP-UX 122.00 Mips R4600/133 SGI Indy Irix 132 MIPS R5000/150 Irix 148.00 IBM 6x86 OS/2 149.13 Alpha OSF1 180.0 MIPS R10000/195 Irix 194.00 Alpha 21164/333 AS500 OSF1 222.00 Sparc Ultra-1 sun4u Solaris 254.00 PPC604/133 IBM RS6000 AIX 254.00 IBM RS-6000 43P powerpc AIX 260.00 Sparc U-1 sun4u SunOS 284.00 Alpha 21164/433 DPW433au OSF1 286.00 HP9000-C160/160 HP-UX 316.00 Sparc Sun US1/170 Solaris 330 Sparc Sun US1/167 Solaris 330 Sparc Ultra-1 sun4u SUNOS 334.00 Alpha 3000-600S VMS 348.61 Alpha server 1000-4/200 VMS 397.68 Sparc Sun-Ultra30/248 Solaris 482.00 Sparc US2/296 2cpu SUNOS 596.00 Cray J90 Y-MP/100 16cpu Unicos 912.00 Sequent Symmetry 6xP5/166 Dynix 984.00 Sequent Symmetry 16xP5/66 Dynix 1056.00 HP9000-C160/160 HP-UX 1278.00 Sequent NUMA-Q 12x P6/180 Dynix 1416.00 Sequent NUMA-Q 32x P6/180 Dynix 3776.00



Сравнение рейтингов


Эти таблицы дают представление о рейтингах BogoMips для различных систем (более 1000, тестов произведенных более чем 800 пользователями, примерно из 50 различных стран). Все это рейтинги систем под Linux, разумеется, кроме таблицы для не Linux систем.