BogoMips

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
Версія для друку більше не підтримується і може мати помилки обробки. Будь ласка, оновіть свої закладки браузера, а також використовуйте натомість базову функцію друку у браузері.

BogoMips (Фіктивні MIPS[1]) — одиниця вимірювання швидкості процесора в тесті, який виконується в ядрі Лінукс під час завантаження з метою відкалібрувати внутрішні затримки, що виконуються холостим циклом.[2] Часто цитується таке визначення цього терміну: «стільки мільйонів разів на секунду процесор може нічого не зробити.»[3][4]

Значення BogoMips може бути використане для перевірки того, що характеристики даного процесора знаходяться в правильному діапазоні для подібних процесорів, тобто BogoMips відображає тактову частоту процесора а також потенційно присутню кеш-пам’ять. Воно не може бути використане для порівняння потужності різних ЦП.[5][6]

Історія

У 1993 році Lars Wirzenius написав електронного листа в групу новин comp.os.linux[7] з поясненням міркувань з приводу використання такого вимірювання у ядрі Лінукс:

MIPS — це скорочення від «мільйонів інструкцій на секунду» (Millions of Instructions Per Second). Це міра швидкості обчислень процесора. Як і більшість інших подібних мір, вона частіше використовується неправильно, ніж правильно (доволі важко справедливо порівняти MIPS для різних типів комп’ютерів).

BogoMips є винаходом Лінуса. Ядро (чи це був драйвер пристрою?) потребувало циклу затримки (час затримки був надто коротким та/або мав бути надто точно витриманим для використання методів інших, ніж холостий цикл). Цикл затримки необхідно відкалібрувати відповідно швидкодії процесора у комп’ютері. Тому ядро під час завантаження вимірює, наскільки швидко виконується певний вид холостого циклу. «Bogo» походить від «фіктивний» (англ. «bogus»), тобто щось таке, що є шахрайством. Отже, значення BogoMips дає певну інформацію про швидкість процесора, але отримано його надто ненауковим шляхом для того, щоб воно називалося якось інакше, ніж BogoMips.

Аргументи (їх два) щодо друку цього значення під час завантаження: a) воно дає деяку користь для зневадження та перевірки, чи кеш-пам’ять та кнопка «Турбо» працюють, та б) Лінус любить посміюватися, коли він бачить, як хтось дивиться на щось, як баран на нові ворота.

Оригінальний текст (англ.)
MIPS is short for Millions of Instructions Per Second. It is a measure for the computation speed of a program. Like most such measures, it is more often abused than used properly (it is very difficult to justly compare MIPS for different kinds of computers).

BogoMips are Linus's invention. The kernel (or was it a device driver?) needs a timing loop (the time is too short and/or needs to be too exact for a non-busy-loop method of waiting), which must be calibrated to the processor speed of the machine. Hence, the kernel measures at boot time how fast a certain kind of busy loop runs on a computer. "Bogo" comes from "bogus", i.e, something which is a fake. (See the Jargon File for more information.) Hence, the BogoMips value gives some indication of the processor speed, but it is way too unscientific to be called anything but BogoMips.

The reasons (there are two) it is printed during bootup is that a) it is slightly useful for debugging and for checking that the computers caches and turbo button work, and b) Linus loves to chuckle when he

sees confused people on the news.

Обчислення BogoMIPS

Для ядра 2.6.x обчислення BogoMIPS реалізоване у вихідному файлі ядра /usr/src/linux/init/calibrate.c. Там обчислюється значення параметру ядра Лінукс, яке потім використовується для затримок, необхідних для деяких драйверів.

Детальну інформацію про BogoMips та сотні прикладів можна знайти у (застарілому) BogoMips mini-Howto.[5]

Як дізнатися

Як вже було сказано, обчислене значення параметра видається на екран при завантаженні системи. Але на достатньо потужних комп’ютерах завантаження відбувається так швидко, що неможливо встигнути помітити відповідний рядок. Буфер системних повідомлень можна продивитися командою dmesg, вибравши рядки необхідних повідомлень за допомогою програми grep, наприклад:

 user@host:~$ dmesg| grep BogoMIPS
 [    0.000006] Calibrating delay loop (skipped), value calculated using  timer frequency.. 2659.98 BogoMIPS (lpj=13299920)
 [    0.806735] Total of 4 processors activated (10639.99 BogoMIPS).

Також можна отримати ці значення зі спеціального файлу cpuinfo віртуальної файлової системи /proc (кількість рядків відповідає кількості ядер центрального процесора):

 user@host:~$ grep bogomips /proc/cpuinfo
 bogomips	: 2659.98
 bogomips	: 2660.01
 bogomips	: 2659.99
 bogomips	: 2660.00

Примітки

  1. Термін BogoMips походить від англ. bogus (фіктивний, підробний) та абревіатури MIPS.
  2. Van Dorst, Wim (January 1996). The Quintessential Linux Benchmark. Linux Journal. Архів оригіналу за 12 жовтня 2012. Процитовано 22 серпня 2008.(англ.)
  3. Eric S Raymond, та Geoff Mackenzie, опубліковане в Internet на початку 1990-х, джерело вже неможливо відстежити.
  4. Raymond, Eric S. Hackers Jargon File. Архів оригіналу за 27 серпня 2013. Процитовано 2 квітня 2013.(англ.)
  5. а б Van Dorst, Wim (2 березня 2006). BogoMips Mini-Howto (вид. V38). Архів оригіналу за 27 серпня 2013. Процитовано 22 серпня 2008.(англ.)
  6. Blidung, Thomas. Re: How many BogoMips should I expect from my 486DX2 running Linux?. Архів оригіналу за 10 листопада 2013. Процитовано 7 листопада 2013.(англ.)
  7. Wirzenius, Lars. Re: printing & BogoMips. Архів оригіналу за 10 листопада 2013. Процитовано 7 листопада 2013.(англ.)

Посилання