Скільки даних читає Linux у середньому завантаженні?


9

Цікаво, скільки даних загалом читає щойно встановлена ​​ванільна система Linux (наприклад, 32-розрядна CentOS 5.10) для того, щоб потрапити в віртуальну консоль оболонки? Ви знаєте, читання всіх файлів конфігурації, завантаження бінарних файлів, зображення ядра тощо.

Я шукаю оцінки порядку порядку. Я знаю, що завантаження Linux сильно відрізняється щодо деталей процесу. Ми говоримо 10Mb? 100Mb? 1 Гбіт?


5
Чому ти питаєш?
Зоредаче

2
Змінність (може бути) порядків між системами - завантаження ядра та драйверів є найдрібнішою частиною процесу завантаження, і скрипти init в системі можуть робити буквально все, перш ніж отримати підказку для входу. Поясніть, будь ласка, ситуацію, з якою ви стикаєтесь, щодо фактичної, практичної проблеми, яку ми можемо допомогти вам вирішити.
voretaq7

1
@amn Чи можете ви поставити причину у своєму первинному питанні? Це допоможе в контексті. Ще одна причина, за якою люди зададуть подібне запитання, це якщо вони використовують обмежене циклом зберігання. Детальніше завжди краще.
ewwhite

8
@ewwhite Я завантажую 100 машин Linux, і 95% вмісту їх системи є ідентичними і залишатимуться однаковими - машини є клонами. Я хотів би вивантажити ідентичну / лише для читання спільну частину файлової системи, у сховище NFS, встановити її звідти та завантажувати її. Тільки записана частина файлової системи, як / var, / tmp та / home, залишатиметься локальною для кожної машини. Оскільки потенційно сотні машин можуть завантажуватися одночасно як частина "кластера", мені потрібно оцінити, чи буде доступне посилання для зберігання NFS вузьким місцем під час завантаження з.
amn

5
I need to estimate...потім зробіть одне і виміряйте його.
symcbean

Відповіді:


8

Встановіть одну систему, завантажте її та ознайомтеся зі статистикою блокового рівня, /sys/block/${DEV}/statнаприклад /sys/block/sda/stat.

Цитування з документації :

Файл stat складається з одного рядка тексту, що містить 11 десяткових значень, розділених пробілом. Поля підсумовані в наступній таблиці та описані більш докладно нижче:

Name            units         description
----            -----         -----------
read I/Os       requests      number of read I/Os processed
read merges     requests      number of read I/Os merged with in-queue I/O
read sectors    sectors       number of sectors read
read ticks      milliseconds  total wait time for read requests
write I/Os      requests      number of write I/Os processed
write merges    requests      number of write I/Os merged with in-queue I/O
write sectors   sectors       number of sectors written
write ticks     milliseconds  total wait time for write requests
in_flight       requests      number of I/Os currently in flight
io_ticks        milliseconds  total time this block device has been active
time_in_queue   milliseconds  total wait time for all requests

читати сектори, писати сектори

Ці значення підраховують кількість секторів, прочитаних або записаних на цей блок пристрою. Розглянуті "сектори" - це стандартний UNIX 512-байтний сектор, а не будь-який розмір блоку, характерний для пристрою чи файлової системи. Лічильники збільшуються після завершення вводу / виводу.

Ви можете скористатися цим одноклапником, щоб легше отримати кількість байтів:

awk '{printf("read %d bytes, wrote %d bytes\n", $3*512, $7*512)}' /sys/block/vda/stat

Результати для наукового Linux 6.1 i386

Я перевірив це на віртуальній машині KVM / qemu, що працює під управлінням Scientific Linux 6.1 i386 (що схоже на RHEL). Увімкнено такі сервіси: acpid, auditd, crond, network, postfix, rsyslog, sshd та udev-post. Свід знаходиться на окремому диску, тому він не враховується.

Статистика 85 черевиків, знятих віддалено за допомогою SSH через пару секунд після появи запиту на вхід:

    Name            Median   Average   Stdev
    -------------   ------   -------   -----
    read I/Os       1920     1920.2    2.6
    read merges     1158     1158.4    1.8
    read sectors    85322    85330.9   31.9
 >> read MiBytes    41.661   41.665    0.016
    read ticks      1165     1177.2    94.1
    write I/Os      33       32.6      1.7
    write merges    64       59.6      7.4
    write sectors   762      715.2     70.9
 >> write MiBytes   0.372    0.349     0.035
    write ticks     51       59.0      17.4
    in_flight       0        0.0       0.0
    io_ticks        895      909.9     57.8
    time_in_queue   1217     1235.2    98.5

Час завантаження становило близько 20 секунд.


2
Зауважте, що це, здається, дає вам лише передавальний попит (кількість), а не попит на пропускну здатність (швидкість). Ви можете поділити на онлайновий час, хоча отримати середню кількість.
voretaq7

15

У своїх коментарях ви кажете, що оцінюєте кореневе середовище netboot / network.

Перше, що ви повинні усвідомити, що немає такого поняття, як "ваніль" - ви не збираєтеся запускати CentOS 5.10 прямо з коробки з нульовими змінами (якщо ви думаєте, що обманюєте себе: NFS Root вже є принаймні Полуничне, що межує з Фісташком).

Якщо ви хочете відповісти для вашого конкретного середовища (що насправді рахується), вам знадобиться налаштувати сервер NFS та клієнтську машину, завантажте його та виміряйте:

  1. Переказ (кількість)
  2. Пропускна здатність (швидкість)

Обидва значення будуть критично важливими для продуктивності. Ви, ймовірно, також захочете налаштувати декілька клієнтів у якийсь момент та змоделювати нормальне використання системи, щоб побачити, який стаціонарний попит вони ставлять на ваш сервер / мережу NFS, коли люди користуються системами, як це було б у їх повсякденному житті робота.

Дивіться також: Наша серія з планування потенціалу - ми не говоримо конкретно про NFS, але застосовуються загальні принципи "Побудуй її, протестуй, наголоси".


1
Якщо є ванільне морозиво, є ванільний Linux! ;-) Хоча якщо це серйозно, це доволі незмінний CentOS 5.10, і все, що було змінено, є частиною файлової системи, що записується, що не буде встановлено з NFS, тому це не є фактором - так, є гігантська база даних Postgres в / var / lib but / var не встановлено з NFS, а знаходиться на локальному фізичному диску. І якби я хотів профайлювати це, я б не ставив тут питання :-)
amn

10
@amn Вибачте, що ви не хочете займатися профілюванням, але ви повинні робити те, що вам потрібно - ми не можемо витягнути відповідні номери з наших недопалок для вас. Ваше рішення (корінь NFS) - це звук, перевірений часом, і, чесно, ви можете, мабуть, просто розгортати його наосліп без проблем (десятки тисяч середовищ Sun Microsystems були розгорнуті сліпо, як це ще в розквіт NFS-root і Netbooting Solaris & чудово працював). Якщо ви стурбовані ефективністю, хоча вам потрібно буде профлігувати, щоб визначити попит та вузькі місця для вашого конкретного середовища - це лише шлях Всесвіту.
voretaq7

+1 для полуниці
alexyorke

1
@ voretaq7 Не можу сперечатися з аргументом профілювання, і ніколи цього не робив. Я просто хотів наступного найкращого, перш ніж засунути рукави та створити NFS. Дякуємо за цінний внесок.
amn
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.