Проблемы с производительностью при использовании SSD для ноутбука разработчика (WAMP / LAMP stack)?

Я разработчик веб-приложений, использующий мой ноутбук как автономную среду разработки (стек WAMP). Я просто переключился с 32-разрядного ноутбука Core2-duo Vista с 2 Гб оперативной памяти и жесткого диска SATA на 64-битный бит i5-2520M Win7 с 4 ГБ оперативной памяти и 128 ГБ SDD (Corsair P3 128).

Мой первоначальный опыт был тем, что я ожидал, быстрой загрузкой, быстрой загрузкой всех приложений (Eclipse занимает теперь 5 секунд, а не 30 секунд на моем старом ноутбуке), общий большой опыт. Затем я начал наращивать свой стек разработки, как LAMP (используя VirtualBox с дебианским гостем), так и WAMP (Windows apache + mysql + php). Я хотел сравнить эти два.

Это все еще отлично справилось, затем я начал тянуть свои проекты к этим стекам. И вот неожиданное удивление, один из этих проектов произвел намного худшее время отклика, чем на моем старом ноутбуке (это было верно как для VirtualBox, так и для WAMP-стека). Конфигурации Apache, php и mysql были практически идентичны во всех средах. Я начал делать много бенчмаркинга и профилирования, и вот что я нашел:

  1. Все общие тесты (Performance Test 7.0, HDTune Pro, wPrime2 и некоторые другие) дали большое преимущество новому ноутбуку. Здесь ничего удивительного. Специфические тесты на диск показали, что операции чтения / записи достигли максимума около 380M / 160M для SSD, и все операции с разным размером блока также выполнялись очень хорошо.

  2. Начал бенчмаркинг производительности Apache с помощью Apache Benchmark для небольшого статического html-файла (10 одновременных потоков, 500 итераций).

    • Старый блокнот: мин. 47 мс, медиана 111 мс, макс. 156 мс
    • Новый стек WAMP: мин. 71 мс, медиана 135 мс, макс. 296 мс
    • Новый стек LAMP (в VirtualBox): мин. 6 мс, медиана 46 мс, не более 175 мс

    Прямо здесь я не понимаю, почему собственный пакет WAMP выполнялся так плохо, но, по крайней мере, среда LAMP принесла ожидаемую скорость.

  3. Измерение производительности Apache для не кэшированного php-контента. Php запускает цикл из 1000 и генерирует sha1 (uniqid ()) inisde. Опять же, 10 параллельных потоков, 500 итераций были использованы для эталона.

    • Старый блокнот: мин. 0 мс, медиана 39 мс, макс. 218 мс
    • Новый стек WAMP: мин. 20 мс, медиана 61 мс, макс. 186 мс
    • Новый стек LAMP (в VirtualBox): мин. 124 мс, медиана 704 мс, не более 2463 мс

    Какого черта? Новая ЛАМПА была запущена с трудом, и даже новый родной WAMP был превзойден старым ноутбуком.

  4. Php + mysql test. Тест состоит из подключения к базе данных и чтения одной записи из таблицы с использованием INNER JOIN на еще 3 (индексированных) таблицах, повторяющихся 100 раз в цикле. Базы данных были идентичны. 10 параллельных потоков, 100 итераций были использованы для эталона.

    • Старый блокнот: мин. 1201 мс, медиана 1734мс, макс. 3728 мс
    • Новый стек WAMP: мин. 367 мс, медиана 675 мс, макс. 1893 мс
    • Новый стек LAMP (в VirtualBox): мин. 1410 мс, средний 3659 мс, не более 5045 мс

    И тот же тест с параллелизмом, установленным в 1 (вместо 10):

    • Старый ноутбук: мин. 1201 мс, медиана 1261 мс, не более 1357 мс
    • Новый стек WAMP: мин. 399 мс, медиана 483 мс, не более 539 мс
    • Новый стек LAMP (в VirtualBox): мин. 285 мс, медиана 348 мс, не более 444 мс

    Строго для моих целей, поскольку я использую автономную среду разработки (= низкий параллелизм), я мог бы быть удовлетворен результатом второго теста. Хотя я понятия не имею, почему среда VirtualBox так плохо работает при более высоком параллелизме.

  5. Наконец, я выполнил тест на включение многих php-файлов. Приложение, о котором я упоминал в начале, тот, который работал так плохо, имеет тяжелую загрузку, загружает сотни небольших библиотек и файлов конфигурации при инициализации. Таким образом, этот тест ничего не содержит только около 100 файлов. Параллельность установлена ​​на 1, 100 итераций:

    • Старый блокнот: мин. 140 мс, медиана 168 мс, макс. 406 мс
    • Новый стек WAMP: мин. 434 мс, медиана 488 мс, не более 604 мс
    • Новый стек LAMP (в VirtualBox): мин. 413 мс, медиана 1040 мс, макс. 1921 мс

    Даже если я считаю, что VirtualBox дошел до этих файлов через общие папки, и это немного замедляет работу, я до сих пор не вижу, как старый ноутбук мог так сильно превзойти как новые конфигурации. И я думаю, что это реальный корень медленной производительности, поскольку приложение использует еще большее количество, и вся загрузка происходит несколько раз в запросе страницы (например, для каждого вызова ajax).

    Подводя итог, я пришел с совершенно новым высокопроизводительным ноутбуком, который загружает одну и ту же страницу за 20 секунд, что мой старый ноутбук может сделать через 5-7 секунд. Излишне говорить, что я не очень счастливый человек прямо сейчас.

    Почему, по-вашему, я испытываю эти плохие показатели производительности? Каковы мои возможности исправить эту ситуацию?

EDIT: похоже, что я, наконец, нашел корень проблемы, по-видимому, SSD могут пострадать от ухудшения производительности при использовании в ноутбуках с наборами микросхем Intel HM55 или PM55. Пожалуйста, см. Мой собственный полный ответ ниже.

    Другими словами, тесты уровня диска дают выдающиеся результаты для вашего SSD, тогда как при использовании на практике диск медленнее. Так что что-то замедляет работу, делая доступ к файлам намного медленнее, чем ожидалось.

    Могут быть несколько причин:

    • Наиболее вероятно: есть антивирус. Некоторые из них действительно являются бенчмарками-убийцами, и вы вряд ли можете предсказать, как они влияют на производительность без тестирования.

    • Что-то другое замедляет доступ к файлу. Каждый раз, когда вы, кажется, проверяете множество операций с небольшими объемами данных. Но каковы представления, когда вы читаете или записываете файл размером 10 ГБ?

    • Конфигурация, связанная с ОС, может отличаться. Например, ОС использует кеш для небольших файлов, один на машине с жестким диском, но не на машине с SSD. В этом случае для первой машины неверны тесты, так как вы не проверяете скорость жесткого диска.

    • Конфигурация диска может отличаться. Параметры, связанные с политикой кэширования записи (в Windows), могут повлиять на производительность.

    • SSD может работать неправильно.

    После долгой недели борьбы с настройками для лучшей производительности я наконец нашел некоторые настройки, которые дали ожидаемые результаты. (Это ноутбук Fujitsu LIFEBOOK S751 с набором микросхем Intel HM65 и BIOS на базе ноутбука Phoenix TrustedCore)

    В BIOS в разделе «Дополнительные / разные настройки» в разделе «Управление электропитанием» было два варианта конфигурации для

    • Экономия энергии процессора в режиме ожидания (AC)
    • Экономия энергии процессора в режиме ожидания (батарея)

    Первый был настроен на «Энергосбережение», второй для «Длительного срока службы батареи». Я поставил оба в нормальное состояние, и вот и я, у меня получилось лучшее время ответа на все мои тестовые примеры.

    Видимо, другие также столкнулись с этой проблемой: http://forum.notebookreview.com/solid-state-drives-ssds-flash-storage/513313-laptops-w-intel-series-5-chipset-can-not- берите полное преимущество быстрой перемотки ssds.html

    Цитата из этой темы:

    Согласно бенчмаркам, проведенным несколькими членами, кажется, что ноутбуки с Intel HM55 и PM55 не могут в полной мере использовать преимущества быстрых SSD. Эти чипсеты очень распространены в современных ноутбуках. Снижение производительности особенно заметно при 4K случайных чтениях и записи производительности. Проблемы, похоже, вызваны агрессивной реализацией функций энергосбережения …

    Конечно, теперь вентилятор продолжает разворачиваться каждые 5 секунд или около того, что очень раздражает, но, по крайней мере, я могу выполнять свою работу.

    Interesting Posts

    Скрыть строку сетки в WPF

    Запуск повышенного процесса

    Реализуйте очередь, в которой push_rear (), pop_front () и get_min () – все операции с постоянным временем

    HTTP POST с параметрами запроса URL – хорошая идея или нет?

    MySQL INSERT IF (пользовательские операторы if)

    Windows 7 Home висит на экране «Добро пожаловать»

    Конструктор Date (…) устарел. Что это значит? (Ява)

    Объявление переменной в операторе switch C #

    Как действительно изолировать таблицы стилей в расширении Google Chrome?

    Лучший способ загрузить модуль / class из папки lib в Rails 3?

    Заменить конкретные символы в строках

    WPF – привязка к индексу предметов изнутри ItemTemplate of ItemsControl?

    как использовать параметр ng для установки значения по умолчанию для элемента select

    Bootstrap 3 – Почему class row шире своего контейнера?

    Как вы используете WGET для зеркального отображения уровня сайта 1, восстановления JS, ресурсов CSS, включая изображения CSS?

    Давайте будем гением компьютера.