RAM-диск: міф і реальність для веб-розробника

У цій статті я поділюся своїм досвідом використання CMS / CMF Drupal на локальній машині. Йтиметься про випадок, коли все програмні засоби розробки будуть перебувати на віртуальному диску комп'ютера. Будуть приведені результати тестів, які показують - чи є приріст швидкості в адміністративному інтерфейсі Drupal на стадії веб-розробки. Стаття орієнтована на починаючого веб-майстра.

Я використовую   RAM-диск   трохи менше року
Я використовую RAM-диск трохи менше року. На ньому "крутяться": браузер, віртуальний сервер, Drupal та кеши деяких графічних програм.

В цілому, я задоволений. І незважаючи на несподівані тести, про які я скажу нижче, повернутися на жорсткий носій, нехай навіть SSD, я все-таки не захочу. У всякому разі зараз, якщо тільки завтра не відбудеться який-небудь черговий прорив в комп'ютерних нано-технологіях :)

Тому мене іноді запитують: - а чи дійсно є ефект від використання віртуальної пам'яті в якості диска?
Зазвичай відповідаю: - Так, суб'єктивно всі вищевказані програми і браузер з десятком відкритих вкладок реагують на натискання мишки досить швидко, можна сказати - миттєво. Все відкривається і закривається "без гальм", але!

МІФ

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

РЕАЛЬНІСТЬ

Я хотів показати комфортні умови роботи на RAM-диску, але не знаю як це зробити (хоч відео з екрану пиши :). І ось вирішив зробити кілька різних тестів, щоб хоча-б для самого себе відповісти на питання - є ефект чи ні? Подивитися на скупі цифри, так би мовити.
І те, що я побачив, в кінцевому підсумку, - мене дещо спантеличило ... Але про це трохи пізніше.

1. Про які програмних засобах йдеться

У моєму випадку - це браузер FireFox Portable , Локальний сервер XAMPP Portable Lite для Windows і CMS / CMF Drupal . Все це, як ви здогадуєтеся, дозволяє розгорнути і налаштувати свій сайт локально, тобто на персональному комп'ютері.
Як це все "закинути" в оперативну пам'ять?
Для цього потрібно попередньо на своєму комп'ютері створити RAM-диск і інсталювати на нього в першу чергу вищевказані браузер, далі набір програм локального сервера і на завершення - саму систему управління контентом Drupal.

Так само я нижче приведу:
- конфігурацію "піддослідного" ноутбука і короткий опис повторюваних операцій (сценаріїв) при роботі з сайтом. Останні будуть в ролі тестів;
- швидкість відпрацювання програмного забезпечення на базі п'яти різних пристроїв: USB FlashDrive (звичайна флешка Kingston), USB HDD (зовнішній жорсткий диск WD), HDD (внутрішній штатний жорсткий диск Toshiba), SSD (внутрішній твердотільний накопичувач Corsair), SO-DIMM (модулі оперативної пам'яті Samsung);
- деякі деталі налаштування програмного забезпечення.

2. Важлива особливість RAM-диска

RAM-диск - це в принципі такий же диск, як і всі інші на вашому комп'ютері, з тією лише різницею, що він енергозалежний і забирає частину оперативної пам'яті комп'ютера. Відповідно, потрібно виключити ситуацію несподіваного відключення живлення комп'ютера. Це або джерело безперебійного живлення, або, як у моєму випадку - це ноутбук.

3. Проблематика

Запитайте - навіщо все розміщувати в енергозалежною оперативної пам'яті з ризиком втрати даних в той час, коли швидкісні SSD вже досить поширені і привабливі за ціною?
Відповідь в общем-то простий.
Так, SSD дійсно швидше HDD, але все-таки не на стільки, що б зрівнятися з оперативною пам'яттю. На сьогоднішній день оперативна пам'ять є найшвидшим носієм даних, в рази перевищує швидкості запису і читання на SSD, і так само з кожним роком доступніше за ціною.

Ось, наприклад, дані по тестованим пристроїв:
Ось, наприклад, дані по тестованим пристроїв:   (   в повному розмірі   )
( в повному розмірі )

А так, як при розробці сайту на Drupal доводиться робити масу операцій таких як: включення / вимикання різних модулів і їх налаштувань, створювати структури блоків, словників таксономії, меню, уявлень (Views) і багато чого ще - хотілося б, щоб процес генерації сторінок в адміністративному інтерфейсі Drupal відбувався максимально швидко і не доводилося "довгими" секундами чекати закінчення обертання всім знайомих індикаторів: А так, як при розробці сайту на Drupal доводиться робити масу операцій таких як: включення / вимикання різних модулів і їх налаштувань, створювати структури блоків, словників таксономії, меню, уявлень (Views) і багато чого ще - хотілося б, щоб процес генерації сторінок в адміністративному інтерфейсі Drupal відбувався максимально швидко і не доводилося довгими секундами чекати закінчення обертання всім знайомих індикаторів:

4. Як зазвичай вирішується проблема

Зазвичай, коли розробник (в моєму випадку - це веб-майстер, або інакше site-builder) має на меті підвищити продуктивність свого комп'ютера, а це засіб виробництва і працювати вона повинна максимально надійно і швидко, він додає оперативної пам'яті.
Пізніше, через деякий час, змінює HDD (як слабка ланка) на SSD.
Потім приходить до думки поміняти процесор на більш продуктивний або, чого вже там, сам комп'ютер на більш сучасний.
Але завжди, як правило, установка робочого комплекту програм відбувається на жорсткий енергонезавісимий носій, наприклад на той же SSD. І якщо звернути увагу на момент розробки будь-якого сайту, скільки запитів відбувається до бази даних або іншим робочим файлів на тому ж носії і скільки на це йде часу, то виникає думка - а чому б ці дані не розмістити на більш швидкому носії?

Тому, виконавши в деякій мірі вище описаний шлях користувача, я вирішив поки утриматися від покупки більш сучасного комп'ютера і спробувати зробити зі своєї "друкарської машинки" ну, скажімо ... щось на зразок ракети :) Що з цього вийшло і чи варта гра свічок - дивіться самі!

5. Отже - що маємо. Конфігурація на момент тестування

Апаратна частина:
ноутбук з процесором Intel Core i3 2,2Ghz / 4Gb DDR3 / 320Gb HDD (не самі сучасні контролери SATA II і USB 2.0).
Згодом зробив апгрейд: збільшив оперативну пам'ять SO-DIMM до 8Gb ( дві планки по 4Gb) і поміняв штатний 320Gb HDD на більш швидкий 60Gb SSD .

Примітка. Щоб навскидку зрозуміти, якого розміру можна буде створити RAM-диск на існуючій оперативної пам'яті, зазвичай рекомендують наступне співвідношення "системна пам'ять / RAM-disk": 3Gb / 0.5Gb, 4Gb / 1Gb, 6Gb / 2Gb, 8Gb / 4Gb, 10Gb / 6Gb . Ось, наприклад, один з джерел . Забігаючи вперед, скажу, що я зробив диск розміром 2Gb, якого мені з лишком вистачає для поточних робочих завдань. Як це виглядає в провіднику Windows ( скріншот ).

Периферія для порівняльних тестів:
- Зовнішній жорсткий USB-диск 500Gb HDD ;
- USB флешка FlashDrive 8Gb . Її використовував тільки для порівняння. Зрозуміло, що на ній не можливо комфортно працювати з сайтом.

Програмне забезпечення:
- Система: Microsoft Windows 7 Home Basic x64.
Для інформації, якщо хто не знає: максимальний розмір оперативної пам'яті для редакцій Starter - 2Gb, Home Basic - 8Gb, Home Premium - 16Gb і для інших - 192 Gb, Детальніше );
- Програми для створення RAM-диска. Як приклад навів лише два - платну і безкоштовну. Насправді їх безліч.
Отже: Primo Ramdisk Ultimate Edition 5.5.0 . Вона платна і одна з найшвидших. Я їй і користуюся. або QSoft Ramdisk driver 5.3.2.13 (Тому що на офіційному сайті так і не розібрався - де скачати потрібну мені версію, знайшов неофіційне джерело для скачування . Встановлював - все працює). Програма безкоштовна. Встановлюється як драйвер пристрою і налаштовується трохи складніше. У моєму випадку працювала приблизно на тих же швидкостях ( скріншот ), Як і Primo Ramdisk - також стабільно і без нарікань;
- Браузер: FireFox Portable 20.0.1;
- Локальний сервер: програмний комплекс XAMPP Portable Lite 1.8.1 (Apache 2.4.2, MySQL 5.5.27, PHP 5.4.7);
- Система управління контентом (CMS / CMF): Drupal 7.22.

6. Які тести використовувалися

Синтетичні для виміру швидкості читання / запису самих носіїв інформації:
- Програма CrystalDiskMark 3.0.2 x64 ( сайт розробника )
- Програма AIDA64 2.85.24 ( сайт компанії )

Власні три сценарії в адміністративному інтерфейсі Drupal такі, як:

  • Оновлення сторінки модулів
    Час генерації сторінки модулів за адресою "ваш-сайт / admin / modules" для ситуації, коли встановлено 165 деяких модулів, з яких 92 включено. Замір часу здійснювався лічильником часу модуля Devel 7.x-1.3 ;
  • Створення 300 сторінок
    Час створення, наприклад, 300 сторінок одного і того ж типу матеріалу з вбудованою картинкою 200х200px в форматі JPG. Для автоматичного створення контенту використовувався той же модуль Devel і його подмодуль Generate. Замір здійснювався банально - секундоміром;
  • Відображення 300 сторінок
    Час відтворення уявлення (висновок тих же трьохсот створених сторінок) вже за допомогою модуля Views 7.x-3.7 . Вміст виводилося суцільним списком без навігатора в форматі анонсів. Виводилися поля: заголовки, картинки та тизери (анонси). Замір часу здійснювався засобами Views в режимі автоматичного перегляду.
    Цей же завмер був продубльований утилітою ApacheBench 2.3. (Файл ab.exe), що входить в комплект вищезгаданого програмного комплексу XAMPP.
    Так само, як варіант, перевірялося час генерації цього ж уявлення (списку створених сторінок) в браузері вже за адресою цієї сторінки "ваш-сайт / test" ( скріншот ). Зауважу, що крім самого списку виводилися невелике меню сайту і кілька блоків в футере. Час замірявся лічильником модуля Devel.

Примітка. Власний кеш Drupal і кеш Views були відключені. PHP кеш (eAccelerator) для чистоти експерименту був теж відключений. Налаштування MySQL сервера бралися за рекомендаціям розробників Drupal.
Всі однотипні виміри, за винятком створення трьохсот сторінок, повторювалися по 5-10 разів. Для кінцевого результату обчислювалося середнє значення.

7. Результати тестування

Первинний вимір швидкості читання / запису пристроїв зберігання даних. Від повільних (зліва) до найшвидших (праворуч).
Первинний вимір швидкості читання / запису пристроїв зберігання даних
( в повному розмірі з альтернативними тестами від AIDA64 . Зверніть увагу на час доступу Average Read Access в самому низу повнорозмірною картинки)

Власні сценарії:

1. Оновлення сторінки модулів
1

2. Автоматичне створення трьохсот сторінок
2

3. Відображення трьохсот сторінок
3

Результати тестів в табличному вигляді

ВИСНОВКИ

Судячи з останніх трьома тестами, використання RAM-диска не приводить до скорочення времязатрат в інтерфейсі CMS навіть, якщо на ньому (на диску) розмістити і браузер, і локальний сервер і CMS. У деяких випадках (див. Сценарій 1 і 3) "старий-добрий" вінчестер (HDD) виявляється по-спритнішими.

Останній факт мене і спантеличив. Я очікував, що не суттєвої різниці від застосування RAM-диска в порівнянні з SSD, але що-б не було різниці в порівнянні з HDD ...

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

Але не все так сумно. Адже суб'єктивно апгрейд комп'ютера з HDD на SSD користувачем відчувається відразу - все просто "літає". І тут важливо згадати, що причиною цього є не тільки швидкість читання, а й час доступу до даних - у SSD воно становить 0,22 ms проти 16,76 у HDD (див. Гл.7).

Наступний крок до прискорення - перенесення деяких професійних програм або їх кешей з SSD на RAM-диск. Він менш помітний у разі веб-розробки, але все-таки досить відчутний, якщо доводиться працювати, наприклад, з графікою. І ось в цьому випадку час доступу (у RAM-диска 0,01 ms проти 0,22 у SSD) відступає вже на другий план у порівнянні зі швидкістю, наприклад, читання у RAM-диска 4500 MB / s проти 190 у SSD.

А так, як мені в роботі доводиться використовувати кілька програм одночасно, та плюс браузер з десятком відкритих вкладок, і між програмами доводиться постійно перемикатися, то останній варіант прискорення моєї "друкарської машинки" для мене досить істотний і відчутний. Шкода тільки, що вище наведені тести не в змозі цього показати :)

Ну і на закінчення.

У моєму баченні - "ракета" для веб-розробника - це перш за все (1) комп'ютер з максимально продуктивним процесором + (2) RAM диск для тимчасових файлів, кешей і можливо баз даних + (3) SSD для системи і робочих програм + ( 4) HDD для ємних файлів на зразок архівів, бекапів, фото, відео і т.п.

Можливо, що такий диференційований підхід до вирішення завдань і привів до того, що зараз досить популярні ноутбуки з двома носіями - швидким невеликим SSD під систему і ємним HDD для даних. А якщо у кого зараз є оптичний CD / DVD привід в ноутбуці, то можна спробувати використовувати його для другого (HDD) вінчестера за допомогою спеціального адаптера-перехідника (пропозиції і варіанти в мережі є).

Для тих, хто хоче створити RAM-диск і подивитися ефект для своєї конфігурації. Деяка послідовність дій і нюансів налаштування ПО.

Увага! Все, що описано нижче не є інструкцією або обов'язковим керівництвом. Це тільки один з варіантів установки програмного забезпечення в віртуальну пам'ять (RAM-диск) з мого особистого досвіду. Все, що ви застосуєте з нижчеописаного - ви робите на свій страх і ризик!

Якщо вас не злякало таке "грізне" попередження, то тоді - вперед!
Якщо вас не злякало таке грізне попередження, то тоді - вперед

1. Підготовка КОМП'ЮТЕРА

Отже, перш за все переконайтеся, що у вас все в порядку з апаратною частиною (з залізом) і програмної (з Windows). Ви напевно здогадуєтеся, що сині екрани смерті нам абсолютно ні до чого. Всі поточні дані в віртуальної пам'яті, а отже на RAM-диску, в цьому випадку будуть втрачені.

Щоб цього уникнути, або в кращому випадку, мінімізувати цю неприємність, бажано:

- Оновити все BIOS (прошивки: системної плати, відеокарти, жорстких дисків і ін.). Після цього оновити всі драйвери, можливо встановити не найостанніші, а саме стабільні, які не викликають конфліктів з іншими пристроями.

- Перевірити оперативну пам'ять і жорсткі диски. Для початку - вбудованими засобами Windows: пам'яті і дисків для Win 7. І на завершення, навіть якщо все нормально, - навантажувальними тестами, які дозволяють визначити стабільність функціонування пристроїв комп'ютера - пам'яті, процесора і дисків при підвищенні їх температури. Наприклад, можна скористатися AIDA64 Меню-> Сервіс> Тест стабільності системи.

Якщо все в порядку, можна перевірити програмну частину.

- Переконатися, що Windows має останні оновлення.
Ще, як варіант, можна запустити вбудовану утиліту sfc.exe, яка перевірить цілісність системних файлів і виправить їх, якщо з ними щось не так. Але тут відразу обмовлюся - користуватися нею можна з упевненістю тільки в тому випадку, якщо у вас стандартна установка системи і немає ніяких спеціальних змін в системних файлах. Інакше вона може просто перезатереть деякі потрібні вам файли на стандартні.
Запускається утиліта з командного рядка: кнопка Пуск> Виконати-> cmd-> sfc / scannow. Програмі буде потрібно інсталяційний диск з операційною системою. Детальніше про цю процедуру можна нагугліть набравши "sfc / scannow".

- Перевірте журнали Windows. Кнопка Пуск> Адміністрування-> Перегляд подій-> Журнали Windows. Якщо там велика кількість червоних і жовтих пунктів, то потрібно розбиратися, наскільки вони критичні для роботи системи і спробувати виправити джерела цих конфліктів. Є непоганий опис термінів і процедур в самій довідці журналу.

2. Створення RAM-ДИСКУ

Установка Primo Ramdisk не представляє труднощів. Все досить докладно і з скріншот представлено на сторінці компанії-розробника.
Букву для диска я вибрав Z. Тип диска Direct-IO. Він трохи швидше SCSI ( скріншот ). Файлова сиситема FAT32. Асоційований файл-образ: завантаження і збереження. Збереження файлу-образу: стислий образ, швидкісне. Час збереження: при виключенні ПК. При бажанні можна зберігати образ вручну через інтерфейс самого додатка (зазвичай при використанні глибокого сну).

3.Установка браузера

Викачуємо будь-який portable браузер. Я віддаю перевагу Mozilla Firefox Portable ( російською ). Кому-то, можливо, зручніше працювати в Google Chrome Portable .

Установка не становить труднощів. При запуску дистрибутива, майстер установки запитає, в яку папку встановлювати. Вказуйте сміливо корінь RAM-диска. Повинно бути щось на зразок Z: \ FirefoxPortable. Всі файли браузера, майбутніх розширень і кеша будуть в цій папці. На початковому етапі на диску буде потрібно, як повідомляє майстер, 47Mb. За фактом 62Mb (для Google Chrome Portable 105Mb. За фактом 119Mb).

Тут потрібно мати на увазі обмеження по кешу і розміром розширень, тому що місце на RAM-диску доводиться відстежувати. Я обмежую кеш в межах 50Mb. У Firefox-е - це Меню-> Настройки-> Дополнітельние-> Мережа картинка. У Google Chrome інакше. Один із способів - це створити ярлик і прописати в поле Об'єкт Z: \ GoogleChromePortable \ GoogleChromePortable.exe --disk-cache-dir = "Z: \ GoogleChromePortable" --disk-cache-size = 51238400 картинка. Запускати браузер подвійним кліком по ярлику. Але краще погуглити, тому що є нюанси з кешуванням, наприклад, медіаконтенту (одна з гілок про це).

В кінцевому підсумку, після установки десятка необхідних розширень, розмір папки з урахуванням кеша 50Mb, у мене склав 150Mb, що на мій погляд - дуже непогано для Firefox Portable. Для Google Chrome Portable виходило трохи більше, та й з кешем не все було так просто; Нарову разрост більше, ніж я його обмежував.

Невелика пояснення.
Звичайно можна поставити и звичайний (НЕ potable) браузер на жорсткий носій, например на тій же HDD, а Профіль користувача и кеш перенести на RAM-диск для прискореного роботи. Еффети буде тот-же. І можливо це буде актуально тим, у кого відносно небагато (3-4Gb) оперативної пам'яті або в разі, коли використовується невидима пам'ять в 32-бітних системах ( Детальніше про останній). Але я від цього варіанту відмовився, тому що втрачається цілісність збережених даних; щось на жорсткому носії, щось на віртуальному. Не зручно для архівування або перенесення на інші носії.

4.УСТАНОВКА XAMPP

Знаходимо і викачуємо ZIP архів саме (!) XAMPP Portable Lite. Розпаковуємо його на диск Z. Всі файли локального сервера повинні знаходитися за адресою Z: \ xampp. Інсталятор нам не буде потрібно.

Якщо у вас встановлений Skype, то необхідно відключити в ньому використання 80 порту. Заходимо в його меню: Інструменти-> Параметри-> Додатково-> З'єднання і прибираємо галочку з "Використовувати порти 80 і 443 в якості вхідних альтернативних".

Запускаємо в папці Z: \ xampp \ xampp-control.exe для подальшої настройки. Нас будуть цікавити тільки Apache і MySQL. Досить докладний опис настройки цих додатків я знайшов на цьому сайті http://i--gu.ru/urok-1 . Знайдіть там главу "Налаштування XAMPP" і дійте далі.

5.Установка DRUPAL

По установці CMS Drupal написано досить багато. У нашому випадку нас цікавить сьома версія. Ось одна з статей , Яку можна застосувати в якості інструкції. Тільки не забудьте, що ми встановлюємо CMS нема на диск С, як в ній, а на наш віртуальний диск Z.
Як доповнення до речі ще переглянути кілька застарілу (для шостої версії), але ще актуальну статтю "Починаємо працювати з Drupal: повне практичне керівництво" http://www.drupal.ru/quickstart .

У підсумку, після всіх установок і налаштувань, у вас на диску Z будуть дві папки - FirefoxPortable і xampp. Всередині папки xampp за адресою Z: \ xampp \ htdocs \ імя_сайта буде знаходитися ваш сайт на Drupal. А його база даних - в папці Z: \ xampp \ mysql \ data \ імя_бази_данних.
Всі програми - і браузер, і контрольна панель XAMPP в подальшому запускаються з цього віртуального диска.

І ось вирішив зробити кілька різних тестів, щоб хоча-б для самого себе відповісти на питання - є ефект чи ні?
Як це все "закинути" в оперативну пам'ять?