Ram-диск міф і реальність для веб-розробника
Я використовую RAM-диск трохи менше року. На ньому "крутяться": браузер, віртуальний сервер, Drupal та кеши деяких графічних програм.
В цілому, я задоволений. І незважаючи на несподівані тести, про які я скажу нижче, повернутися на жорсткий носій, нехай навіть SSD, я все-таки не захочу. У всякому разі зараз, якщо тільки завтра не відбудеться який-небудь черговий прорив в комп'ютерних нано-технологіях :)
Тому мене іноді запитують: - а чи дійсно є ефект від використання віртуальної пам'яті в якості диска?
Зазвичай відповідаю: - Так, суб'єктивно всі вищевказані програми і браузер з десятком відкритих вкладок реагують на натискання мишки досить швидко, можна сказати - миттєво. Все відкривається і закривається "без гальм", але!
Всі знають, що швидкість зчитування і запису в оперативній пам'яті на порядок вище, ніж навіть у найшвидших SSD. Здається, що все повинно просто "літати". Однак - це не зовсім так. Це твердження має відношення лише до тих процесів, які вимагають читання і запису великих обсягів даних, наприклад растрової графіки.
Якщо таких немає, то в кінцевому підсумку все впирається в процессорную потужність комп'ютера і навіть найшвидші пристрої зберігання даних, на жаль, йдуть на другий план. І, саме по-цьому (в нашому випадку я маю на увазі веб-розробку) все виглядає трохи інакше.
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-диск - це в принципі такий же диск, як і всі інші на вашому комп'ютері, з тією лише різницею, що він енергозалежний і забирає частину оперативної пам'яті комп'ютера. Відповідно, потрібно виключити ситуацію несподіваного відключення живлення комп'ютера. Це або джерело безперебійного живлення, або, як у моєму випадку - це ноутбук.
Запитайте - навіщо все розміщувати в енергозалежною оперативної пам'яті з ризиком втрати даних в той час, коли швидкісні SSD вже досить поширені і привабливі за ціною?
Відповідь в общем-то простий.
Так, SSD дійсно швидше HDD, але все-таки не на стільки, що б зрівнятися з оперативною пам'яттю. На сьогоднішній день оперативна пам'ять є найшвидшим носієм даних, в рази перевищує швидкості запису і читання на SSD, і так само з кожним роком доступніше за ціною.
Ось, наприклад, дані по тестованим пристроїв:
(В повному розмірі)
А так, як при розробці сайту на 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 такі, як:
Примітка. Власний кеш Drupal і кеш Views були відключені. PHP кеш (eAccelerator) для чистоти експерименту був теж відключений. Налаштування MySQL сервера бралися за рекомендаціями розробників Drupal.
Всі однотипні виміри, за винятком створення трьохсот сторінок, повторювалися по 5-10 разів. Для кінцевого результату обчислювалося середнє значення.
7. Результати тестування
Первинний вимір швидкості читання / запису пристроїв зберігання даних. Від повільних (зліва) до найшвидших (праворуч).
(В повному розмірі з альтернативними тестами від AIDA64. Зверніть увагу на час доступу Average Read Access в самому низу повнорозмірною картинки)
1. Оновлення сторінки модулів
2. Автоматичне створення трьохсот сторінок
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.
А так, як мені в роботі доводиться використовувати кілька програм одночасно, та плюс браузер з десятком відкритих вкладок, і між програмами доводиться постійно перемикатися, то останній варіант прискорення моєї "друкарської машинки" для мене досить істотний і відчутний. Шкода тільки, що вище наведені тести не в змозі цього показати :)
Ну і на закінчення.
Можливо, що такий диференційований підхід до вирішення завдань і привів до того, що зараз досить популярні ноутбуки з двома носіями - швидким невеликим SSD під систему і ємним HDD для даних. А якщо у кого зараз є оптичний CD / DVD привід в ноутбуці, то можна спробувати використовувати його для другого (HDD) вінчестера за допомогою спеціального адаптера-перехідника (пропозиції і варіанти в мережі є).
Для тих, хто хоче створити RAM-диск і подивитися ефект для своєї конфігурації. Деяка послідовність дій і нюансів налаштування ПО.
Увага! Все, що описано нижче не є інструкцією або обов'язковим керівництвом. Це тільки один з варіантів установки програмного забезпечення в віртуальну пам'ять (RAM-диск) з мого особистого досвіду. Все, що ви застосуєте з нижчеописаного - ви робите на свій страх і ризик!
Якщо вас не злякало таке "грізне" попередження, то тоді - вперед!
Отже, перш за все переконайтеся, що у вас все в порядку з апаратною частиною (з залізом) і програмної (з Windows). Ви напевно здогадуєтеся, що сині екрани смерті нам абсолютно ні до чого. Всі поточні дані в віртуальної пам'яті, а отже на RAM-диску, в цьому випадку будуть втрачені.
Щоб цього уникнути, або в кращому випадку, мінімізувати цю неприємність, бажано:
- Перевірити оперативну пам'ять і жорсткі диски. Для початку - вбудованими засобами Windows: пам'яті і дисків для Win 7. І на завершення, навіть якщо все нормально, - навантажувальними тестами, які дозволяють визначити стабільність функціонування пристроїв комп'ютера - пам'яті, процесора і дисків при підвищенні їх температури. Наприклад, можна скористатися AIDA64 Меню-> Сервіс> Тест стабільності системи.
Якщо все в порядку, можна перевірити програмну частину.
Установка Primo Ramdisk не представляє труднощів. Все досить докладно і з скріншот представлено на сторінці компанії-розробника.
Букву для диска я вибрав Z. Тип диска Direct-IO. Він трохи швидше SCSI (скріншот). Файлова сиситема FAT32. Асоційований файл-образ: завантаження і збереження. Збереження файлу-образу: стислий образ, швидкісне. Час збереження: при виключенні ПК. При бажанні можна зберігати образ вручну через інтерфейс самого додатка (зазвичай при використанні глибокого сну).
Установка не становить труднощів. При запуску дистрибутива, майстер установки запитає, в яку папку встановлювати. Вказуйте сміливо корінь 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 виходило трохи більше, та й з кешем не все було так просто; Нарову разрост більше, ніж я його обмежував.
Якщо у вас встановлений Skype, то необхідно відключити в ньому використання 80 порту. Заходимо в його меню: Інструменти-> Параметри-> Додатково-> З'єднання і прибираємо галочку з "Використовувати порти 80 і 443 в якості вхідних альтернативних".