Назад | Перейти на главную страницу

Как я могу сделать эту настройку быстрее?

Привет, сообщество StackOverlow!

В настоящее время я использую некоторое программное обеспечение, которое хранит кучу файлов XML. Все файлы имеют размер менее 25 Кбайт. Создатели программного обеспечения заявляют, что производительность основана на нескольких одновременных небольших чтениях. Чем быстрее вы сможете читать данные с дисков, тем лучше они будут работать.

После множества тестов производительности они, кажется, говорят правду. Однако, прежде чем бросать на это деньги, хочу как можно больше протестировать. Кажется, что сервер никогда не выходит за пределы использования ЦП на 35% или пика памяти.

Настройка сервера следующая

Я думаю, что если я изменю настройку для использования 2 Intel X-25 M в RAID0, я получу лучшую производительность. Резервные копии не проблема. У нас есть репликация в реальном времени на другой сервер и еженедельное резервное копирование вне офиса, которое также записывается на ленту. В настоящее время я пробовал один Intel X-25 на другом сервере, и это кажется многообещающим.

Итак, у меня есть следующие вопросы:

  1. Стоит ли ожидать большей производительности от диска с 2 SSD, чем от диска с 8 SCSI?
  2. Какие-либо специальные шаги по настройке SSD, которые мне следует предпринять? (Размер блока и т. Д.?)
  3. Сейчас тестируете в Windows Server 2003? Это хоть как-то мешает? Стоит ли мне переходить на Windows Server 2008? (Linux и т. Д. Недопустимы)
  4. Какие-нибудь настройки ОС, которые мне нужно сделать?
  5. Другое / лучшее программное обеспечение для тестирования производительности?

Если вы испытываете или тестируете что-либо подобное, дайте мне знать.

Некоторая информация о тестах с использованием (CrystalDiskMark) 5 проходов 50Мб

Коробка SSD

Type - Read Mb/s - Write Mb/s  
Seq  - 225       - 50.84  
512K - 152.7     - 53.73  
4K   - 18.85     - 35.35  

Блок SCSI

Type - Read Mb/s - Write Mb/s  
Seq  - 549.8     - 352.2  
512K - 538.3     - 342.2  
4K   - 89.30     - 65.19

TL; DR - 2 диска SSD в RAID0 или RAID10 быстрее, чем 8 дисков SCSI 15k в RAID10?

Спасибо за прочтение.

Учитывая уровни производительности, которые вы пытаетесь достичь, вы должны иметь в виду пару вещей.

Предыдущее предложение отформатировать диск, содержащий ваш набор данных, с размером кластера NTFS> 25 КБ, является хорошим вариантом, 32 КБ кажется хорошим выбором для вашего варианта использования. Это делается для того, чтобы избежать необходимости иметь дело с фрагментацией, если это вообще возможно, и снизить накладные расходы файловой системы, связанные с чтением в одном файле.

Также я бы посоветовал взглянуть на размер вашей полосы RAID. Если характер вашего набора данных приводит к (в основном) последовательному вводу-выводу, тогда больший размер полосы более выгоден, если он случайный, то меньший размер полосы будет разумнее, просто не делайте его меньше, чем размер кластера вашей файловой системы. Учитывая описание того, что вы пытаетесь сделать, я бы сказал, что ваш профиль ввода-вывода в основном случайный, поэтому размер полосы 64 КБ подойдет, но, возможно, стоит поэкспериментировать.

Что очень важно, так это убедиться, что раздел выровнен - ​​вы захотите использовать Diskpart.exe в своих системах, обычно установка смещения выравнивания 64 КБ помогает со стандартными размерами кластера и полосы RAID, но смещение 1024 КБ используется в Vista \ Windows7 \ W2K8, так как он обеспечит выравнивание даже при больших размерах полос и кластеров. Есть очень хорошая статья о Производительность SQL-сервера от Microsoft здесь это объясняет причины, по которым это важно делать для высокопроизводительных дисков \ массивов. Кратко говоря, плохо выровненный раздел может снизить производительность ввода-вывода на 15-30%.

Для SSD применяются те же общие правила, но основное поведение чтения \ записи сильно отличается. Вместо того, чтобы иметь дело с 512-байтовыми дисковыми секторами на самом фундаментальном уровне, ввод-вывод на SSD использует гораздо большие блоки. Чтение, как правило, выполняется с фиксированными размерами страниц от 4 до 128 КБ, запись включает буферизацию и большие размеры стираемых блоков (в диапазоне мегабайт). Ключевым моментом для вас (где важно чтение ввода-вывода) является то, что вы хотите установить размер полосы RAID, кратный размеру страницы чтения для выбранного вами типа диска (я думаю, что все Intel X-25 используют 128 КБ чтения block), и вы хотите установить смещение выравнивания на некоторое число, которое гарантирует, что оно больше этого. Стандартная рекомендация смещения раздела 64 КБ будет плохим выбором, если, например, SSD имеет размер страницы чтения 128 КБ. Из-за асимметричной природы записи на SSD непросто оптимизировать RAID-массивы SSD для повышения производительности записи, но это уже совсем другая история, требующая большого количества кеша.

Есть хорошая статья об оптимизации SSD RAID здесь на OCZForum, он нацелен на настройки для энтузиастов, но, насколько я могу судить, они понимают общую идею для всех, кто пытается развернуть свой собственный SSD RAID из готового комплекта.

Наконец, если ваш шаблон ввода-вывода чтения преимущественно является последовательным, 8 дисков по 15 КБ могут (теоретически) достичь примерно 800 мегабайт в секунду, если не больше. Два SSD, даже Intel X-25E, будут работать вдвое меньше. Я предполагаю, что ваш шаблон чтения ввода-вывода достаточно смещен в сторону случайного ввода-вывода, чтобы свести на нет это, но при правильных обстоятельствах ваши диски SCSI 8 15k могут быть намного быстрее, чем два SSD. Это подтверждается вашим тестированием. Глядя на эти числа, я бы сказал, что некоторая работа с выравниванием разделов и размерами полос мне немного поможет.

Если все файлы XML меньше 25 КБ, подумайте о форматировании вашего диска с размером блока> 25 КБ. Логика заключается в том, что весь файл помещается в один блок, и поэтому вы не получите фрагментацию отдельных файлов. Тогда одна операция чтения / записи охватит весь файл.

Это, вероятно, будет довольно плохо и будет пустой тратой места для вашего диска O / S, поэтому я должен убедиться, что вы не делаете это в том же разделе, на котором установлена ​​ваша операционная система. Оставьте это на размере блока по умолчанию (вероятно, NTFS 4k, поскольку вы используете Windows)

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

Я сначала рекомендую отключение обновления времени последнего доступа файлов / каталогов с вашей настройкой. С таким количеством файлов это окажет заметное влияние.

Если проблема заключается только в одновременном чтении, вы можете попытаться установить для этих 8 дисков только RAID-1 (вместо RAID-10), так как это позволит читать любой файл с любого диска, который будет бездействовать во время чтения. Однако вы потеряете емкость (будет доступен только 1 диск, что не является проблемой для менее 100 ГБ данных), и запись будет медленнее (любая запись должна быть сделана для всех дисков).

Добавление максимально возможного объема ОЗУ на сервер и миграция ОС на 64-битную (чтобы избежать PAE) тоже будет неплохо из-за большего файлового кеша.

Я думаю, вам следует серьезно изучить загрузку этих XML-файлов в ОЗУ. Поскольку вы работаете в Windows, существует множество инструментов, которые могут создать RAM-диск из вашей реальной RAM, просто имейте в виду, что все идет пуф когда вы перезагружаетесь, поэтому вам также необходимо иметь эти файлы на диске. Покупка большего количества оперативной памяти будет довольно дешевой, хотя, в зависимости от вашего текущего использования, я думаю, вы будете в порядке, просто используя 4 ГБ, которые у вас есть.