Экономика стран

К сожалению, большинство людей, которые будут ими затронуты почти весь мир, не будут иметь никакого влияния на результат. Вести Экономика Дайджест иностранной прессы за 14 августа.
Вести Экономика Греции снова придется списывать долги Греция не сможет самостоятельно расплатиться по долгам, и понадобится новая реструктуризация долгов, чтобы спасти страну от банкротства.

MiniDevicesInfo

Апгрейди ПК / Нові розробки

Технології 21-го століття стрімко рухаються вперед. Одна з таких технологій - SSD, покликана змінити (а на практиці доповнити) застарілу дискову технологію HDD.

Основні переваги SSD перед HDD вже знайомі всім, це - швидкість доступу, швидкість доступу до довільних блокам, зменшені габарити, зменшене енергоспоживання і як наслідок нагрівання.

Незважаючи на переваги SSD перед традиційними дисками, цієї технології дуже багато років. Я б навіть сказав більше ніж жорстких дисків, проте в силу дорожнечі, тоді (в кінці 70-хх - 80-е) вони коштували не в півтора-два рази більше звичайних дисків, а раз в двадцять. При цьому дуже швидко зношувалися і займали мало не стільки ж, скільки і материнська плата.

На даний момент SSD - це фактично флешка з інтерфейсом ... а ось ми і плавно підійшли до головної теми. Якщо коротко, то інтерфейс носія інформації - це шина зі своїми стандартами, плюсами і мінусами, зі своїм набором команд, за допомогою якої девайс підключається до комп'ютера (центрального процесора, або південному мосту - не має значення). Цей інтерфейс - рівень між пристроєм і операційною системою, з яким однаково успішно працює і пристрій і операційна система. Не варто плутати інтерфейс з форм-фактором роз'єму, оскільки інтерфейс - програмна штука, а роз'єм - апаратна, і скажімо так, вам ніщо не завадить зробити кабель з'єднання вашого жорсткого диска з LAN-кабелю з роз'ємами RJ-45, правда мережевим від цього ваш диск не стане. Отже, роз'єм (або форм-фактор, хоча не зовсім коректно) - це всього лише реалізація підключення пристрою. Інтерфейс, він же протокол - набір програмних стандартів для роботи ОС з пристроєм, підключеним через цей роз'єм.

Інтерфейс, він же протокол - набір програмних стандартів для роботи ОС з пристроєм, підключеним через цей роз'єм

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

Одним з таких інтерфейсів є SATA, а точніше AHCI. В цьому випадку найменування взагалі заплутані. Спочатку SATA - був повноцінним стандартом, потім з нього зробили загальну назву для системи носіїв інформації, що підключається за допомогою шести проводів, послідовним підключенням (тобто один пристрій на порт) і набором AHCI-команд, які в свою чергу підтримують стандарт NCQ - чергу, якщо на нашу.

Щоб пристрою бути SATA, йому не обов'язково мати SATA-роз'єм, воно може бути виконано в форматі eSATA, в форматі mSATA (більше нагадує MiniPCI), навіть в форматі повноцінного PCI і підключатися через цю шину. Просто воно буде емулюватися, і система не буде його бачити як PCI, а буде бачити як SATA і працювати з ним як з SATA.

На даний момент максимальна швидкість читання через SATA - 600 Мбс, і це продиктовано в першу чергу електричними обмеженнями, не так легко передати через 4 дроти на високих швидкостях. І 600 Мбс - цілком собі відмінна швидкість, з огляду на що швидкість віддачі інформації з млинця жорсткого диска - фізично близько 90 Мбс, а швидкість читання флешки взагалі 60 Мбс, теоретична, максимальна. Загалом 600 Мбс цілком вистачало з головою для жорстких дисків. Поки не з'явилися SSD. Набір мікросхем пам'яті віддає інформацію на дуже високих швидкостях, крім усього йому не властиво велике час пошуку, і не властиві простої під час запису. Прогресу знадобився всього лише рік, щоб наблизитися впритул до обмеження порту, і ще рік, щоб в кілька разів перегнати його.

Щоб нівелювати ці простої, був придуманий новий інтерфейс - NVM Express. Компанії які його розробляли, продумали все до дрібниць. Зменшення затримок, стандартизація всіх милиць, управління доступом, паралельний доступ (багатоядерні CPU схвалюють), механізм черг, обробка переривань, спрощення керуючих команд, і багато чого іншого. Отримана солянка цілком здатна здивувати народилися в 20-м столітті людей: середня швидкість читання - 2.5 ГБС. Приголомшливо.

Однак дуже скоро виявився той же самий недолік що і в разі мікросхем пам'яті з SATA-інтерфейсом, і в тому місці, де його зовсім не чекали - в архітектурі програмного забезпечення.

Уявіть собі двох людей, один слухає, другий вголос читає книгу. Кількість часу, за яке слухач встигне пізнати цю книгу, спочатку залежить від швидкості читає, і це звичайне положення речей. А тепер уявіть, що читає книгу, прискорює читання. Книга буде почута швидше. Якщо читає ще постарається - то введення цієї книги в вуха слухача відбудеться ще швидше. Але якщо швидкість збільшити ЩЕ, то потік слів стане нескладним, і слухач його просто не зрозуміє. Виходить, що насправді кількість часу на введення книги в вуха слухача, залежить не тільки від швидкості читає, а ще й від можливості слухача розрізняти слова. Подібна ситуація сталася і з Linux. Той, хто читає книгу (суть носій інформації) став передавати інформацію дуже швидко, слухач (система введення-виведення) перестала за ним встигати, в результаті вся система працює на максимальних можливостях слухача, при уміє швидше читача. Нічого страшного в цьому немає, така система буде працювати в три рази швидше, ніж системи дворічної давності. Погано те, що фізично вона може працювати швидше в п'ять разів. І буде.

Отже, тема статті - прискорення Linux на SSD NVM Express - Samsung N950 Pro

Вхідні дані:

Материнська плата MiniITX MSI B150I Gaming Pro

Процесор Intel Pentium G4400 Skylake

ОЗУ 8Gb DDR4 2133MHz

SSD M.2 NVME Samsung 950Pro, швидкість читання - 2500 Мб / c, швидкість запису - 1500 Мб / c

Операційна система Debian 8.4 (насправді не має значення)

Моторошні гальма при завантаженні, і при роботі. З встановленим DE Cinnamon, ця конфігурація відкриває Firefox за 2-3 секунди, що не їсти гут. Повинна миттєво.

Розглянемо послідовно процес завантаження від початку і до готовності роботи:

Спершу завантажується BIOS. Або UEFI - не має значення. Ця мікропрограма инициализирует пристрою і шукає завантажувач на одному з носіїв інформації. Цей завантажувач - MBR або файл UEFI, в свою чергу завантажує повноцінний лоадер, в нашому випадку це GRUB. Лоадер читає свій конфігураційний файл, /boot/grub/grub.cfg і завантажує субмодуля, шрифти і виконує скрипти, виводячи список можливих ОС і їх меню.

Коли ми натискаємо введення на тому чи іншому меню (з Лінукс, зрозуміло), наш GRUB підвантажує додаткові модулі необхідні для доступу до розділу диска, деякі графічні модулі. Потім він завантажує в пам'ять ядро ​​з рядком параметрів, і так званий ramdisk, initrd - стиснений набір модулів і бібліотек, необхідний для початкового старту. Після завантаження рамдіска, ядро ​​передає управління файлу / init, який знаходиться на тому розділі, який був зазначений параметром root = в рядку параметрів ядра. Система ініціалізації, вона ж init - набір скриптів різного ступеня збоченості в різний час, що по суті є Автозавантажувач сервісів, пристроїв, і так далі. Останнім з цих скриптів є менеджер дисплеїв, або менеджер консолей. Подальша завантаження залежить від налаштувань конкретної ОС, вони бувають різними, але найчастіше два варіанти - або видається запрошення в разі менеджера консолей, або видається графічне запрошення у випадку з дисплейним менеджером. Але не завжди. Обидва способи можуть мати Автологін (тобто буде залягання під користувачем без запрошення). Потім вантажиться інтерпретатор (як правило це bash) в випадку з консольної завантаженням, або віконний менеджер (робочий стіл) у випадку з графічної завантаженням. Ці програми є практично кінцевими, за винятком їх власних автозагрузок, які можуть містити в собі підключаються смакоту на зразок докбара, панелей, забарвлень, і іншого сміття. Але це вже не важливо.

Як бачимо, етапів завантаження багато. Насправді їх ще більше, оскільки багато драйвери пристроїв можуть бути вбудовані в ядро, але багато лежать у вигляді окремих модулів і завантажуються в міру необхідності.

Отже, перше що ми повинні усвідомити, як і в випадку з HDD, краще один великий файл, ніж багато дрібних. "Краще" тут може варіюватися в широких межах: десятімегабайтний файл завантажиться швидше, ніж десят стокілобайтних (в сумі дають всього лише мегабайт). Як цього досягти - ми дізнаємося пізніше.

Друге - принцип KISS не завжди хороший, і відсутність принципу KISS не завжди добре теж. Нагадаю, цей принцип говорить робити одну річ одним інструментом, не вигадуючи комбайни. У нашому випадку завантаження, навіть не вдаючись в подробиці видно, що деякі нюанси робляться по кілька разів. Приклад - завантаження драйверів на диск і ФС. Ну маячня ж, якщо GRUB завантажився, значить диск ВЖЕ доступний, і не потрібно довантажувати драйвери в initrd, а потім в ядрі. Як від цього позбутися - ми теж дізнаємося пізніше.

Третє - завжди потрібно усвідомлювати що базове ядро ​​і взагалі базова система побудована на основі найбільш поширених конфігурацій, і з одного боку роздуте для якомога більшої сумісності, а з іншого боку, не підтримує багато фичи знову ж для якомога більшої сумісності. Драйвери відео, драйвери дисків, драйвери USB працюють на середньої арифметичної оптимізації та швидкості. А це найчастіше повільно. Туди ж відносяться і всякі нові технології, на кшталт нашого nvme

Що ж нам потрібно зробити?

По-перше, позбутися від прокладок. Прокладки від яких найлегше позбутися без зайвого головного болю - це як не дивно initrd і дисплейний менеджер. Для того щоб позбутися від першого - потрібно всього лише закомментировать одну сходинку. Щоб позбутися від другого - його потрібно просто не ставити, або видалити якщо вже поставили. Тобто домогтися консольної завантаження.

По-друге, змусити нашу ОС вантажити все фічі для прискорення роботи.

По-третє, зробити так, щоб по можливості все вантажилось тільки одним файлом.

Оскільки просте позбавлення від initrd призведе до неможливості завантаження (ядро не зможе завантажитися), та й фичи просто так не з'являться, єдиний спосіб зробити це - пересобрать ядро.

Це легко. Особливо на debian-based системах, Debian, Ubuntu, Elementary, Mint і інших. На інших конфігурація буде точно таким же, але збірка може трохи відрізнятися. Які пакети потрібно качати і ставити, я пояснювати не буду, про це можна почитати тут (Відкриється в новому вікні)

Нам варто створити початкову конфігурацію командою make localyesconfig - ця команда створить попередню конфігурацію на основі працюють в даний момент модулів, з опцією включення цього всього в ядро ​​(пам'ятаємо, ми формуємо один великий файл). Тому буде краще якщо на цьому етапі ви вставите в ваш комп'ютер всі пристрої, які потенційно можуть використовуватися - вебки, флешки, мережеві карти.

Далі я просто напишу які параметри потрібно конфігурувати для більшого прискорення і підтримки фич на пристроях NVM Express:

General setup ---> Kernel compression mode ---> вибираємо XZ. Цей алогорітм стиснення найбільш швидкий, нехай і не дуже економний.

General setup ---> T imers subsystem ---> Вибираємо Periodic timer ticks (constant rate, no dynticks) - наш процесор сам розбереться як йому працювати з завданнями, не потрібно йому заважати

Processor type and features ---> Вибираємо максимально наближений процесор до нашого, і його деякі фічі, підтримку Hyperthreading, або просто багатоядерності.

P reemption Model ---> Preemptible Kernel (Low-Latency Desktop) - це дозволить максимально швидко обробляти всі завдання

Timer frequency ---> 300 HZ - вище немає сенсу, процесор буде даремно смикатися, нижче - теж, інакше реакція системи буде запізнілою.

Device Drivers ---> <*> NVM Express block device - ставимо зірочку, цей драйвер повинен бути вкомпільовані в ядро

Device Drivers ---> SCSI device support ---> [*] SCSI: use blk-mq I / O path by default - обов'язково. Це дозволить системі введення виведення використовувати паралелізм при читанні або запису на NVM-носії

Інші параметри ви повинні виставити самі, виходячи з наявності або відсутності пристроїв на вашому комп'ютері

Йдемо далі.

File systems ---> <*> The Extended 4 (ext4) filesystem - в разі якщо ви використовуєте ext4 або ext3. Іншими словами, ви повинні вкомпільовані в ядро ​​ту ФС, яка встановлена ​​у вас.

File systems ---> <*> FUSE (Filesystem in Userspace) support - це дозволить монтувати диски в графічних оболонках

File systems ---> DOS / FAT / NT Filesyste ms ---> Тут можна поставити все зірочки, або всі модулі, це потрібно тільки якщо у вас є файлові системи відмінні від кореневої. Флешки, диски, і так далі.

Не забудьте так само виставити необхідні вашим НЕлінукс ФС, кодування в меню Native language support --->

Після компіляції і установки нового ядра, нам варто відредагувати файл /boot/grub/grub.cfg і закомментировать рядок з викликом нашого initrd. Якщо ви його залишите - нічого страшного не трапиться, але система буде завантажувати два рази одні і ті ж модулі. Якщо ви його закомментіруете - нічого страшного так само не станеться, адже вся ваша інформація нікуди не піде. Після цього в рядку завантаження вашого ядра, потрібно змінити параметр root з символьного UUID-пристрої, на його блоковий шлях, наприклад root = / dev / nvme0n1p2

Після перезавантаження по ідеї, нове ядро ​​і в цілому система, повинні завантажуватися відчутно швидше, і займати менше місця на диску і в пам'яті. Якщо ви не змогли завантажити ядро ​​(точніше воно не змогло примонтировать системний розділ і впало в "kernel panic-not syncing: VFS: unable to mount root fs" - це означає що ви невірно вказали системний розділ в параметрах ядра, або забули вкомпільовані драйвер, специфічний для вашої ОС (наприклад вкомпліліровалі підтримку ext4, але забули btrfs, і саме на ньому розташована ваша система).

Далі буде...


Мітки тексту: Linux NVM PCI-E SSD

Мітки тексту: Linux NVM PCI-E SSD

https://minidevices.info/images/ava.png

https://minidevices.info/images/ava.png

2016-06-03 14:53 2016-06-03 14:53 2016-06-03 14:53 root Linux NVM PCI-E SSD

Навигация сайта
Реклама
Панель управления
Календарь новостей
Популярные новости
Информация
Экономика стран www.mp3area.ru © 2005-2016
При копировании материала, ссылка на сайт обязательна.