Проблемы с прокладкой
 
19.08.2003
Михаил Попов


 
стр. 1
стр. 2 >>

— В вашей машине проблемы с прокладкой.
— Какой прокладкой?
— Между рулем и сиденьем.
Авторемонтный юмор


«Вас много, а я одна». — Большое количество клиентов, с аппетитом использующих серверные ресурсы, может запросто посадить производительность самой мощной машины ниже всякого приемлемого уровня. И знание проблемных участков серверной архитектуры бывает очень полезно. Прежде всего — для экономии денег. Вместо того чтобы бросаться покупать новый сервер, стоит попытаться расшить узкие места в существующей конфигурации. Результатов можно добиться просто фантастических. Народным «серверным эпосом» стала история, как некая команда разработчиков путем подкрутки опций компилятора сумела запросто повысить производительность своего приложения на порядок. А потом, после изменения несколько строчек кода, — еще раза в два.

Эволюция и естественный отбор в мире серверов привели к тому, что до наших дней дожили только те экземпляры, архитектура которых очень неплохо сбалансирована. Но «узким местом» может стать любой компонент, в зависимости от конкретных условий. Процессоры, память, шины, контроллеры, дисковая подсистема, сеть — любое из перечисленного годится в качестве тормоза на пути роста производительности.

Дисковая подсистема

Исторически проблемная часть, особенно у файловых серверов и серверов баз данных. В книжке «Sun Performance Tuning», посвященной настройке производительности серверов баз данных, гуру Адриан Кокрофт (Adrian Cockcroft) приводит десять советов по устранению узких мест. Совет номер один: если у вас все работает медленно, обратите внимание на диски. Попробуйте расшить это узкое место путем страйпинга — увеличения числа дисков, на которые параллельно ведется запись. Второй совет: если по-прежнему все работает плохо, повнимательнее посмотрите на диски. И так далее. Дискам посвящены первые четыре совета из десяти. И лишь потом идут рекомендации по выискиванию иных узких мест. Казалось бы, сегодня дисковая память дешева как никогда и каким бы то ни было проблемам здесь не место. Но нет, далеко не все последние тенденции радуют производителей серверов. Павел Анни, менеджер по продуктам Sun Microsystems, обращает внимание на то, что диски очень быстро растут в емкости, но почти не растут в производительности: «Любой домашний пользователь только рад, что сегодня он за те же деньги может купить диск вдвое большего объема, чем год назад. А для нас это проблема. Лет семь назад для базы данных объемом, скажем, в полтораста гигабайт мы делали дисковый массив из четырехгигабайтных дисков, и все работало очень быстро, потому что запись распараллеливалась на страйпах. Сегодня для этой базы данных клиент берет уже только два диска по восемьдесят гигабайт, думая, что у него все будет хорошо. А потом удивляется, что все так медленно работает». Дмитрий Пенязь, менеджер направления серверных решений департамента корпоративных решений компании Hewlett-Packard, советует «пустить воду в бассейн по всем трубам» — задействовать страйпинг везде, где только можно: «Например, можно сделать страйпинг внутри RAID-массива, посадить два RAID-контроллера на разные слоты PCI и устроить страйпинг между ними на уровне операционной системы, а также использовать средства распределения нагрузки на уровне приложения, например СУБД». Эта же рекомендация, кстати, распространяется и на память — ведь ее в сервер можно набить, используя модули разной емкости. Наивысшая производительность достигается, когда оказываются занятыми все слоты, — конечно, недостаток такой конфигурации заключается в невозможности далее наращивать объем памяти без замены модулей.

Шины машины

Исторически узкое место серверов — каналы ввода-вывода. Чем они шире, тем больший объем данных удается затащить в память или процессор за такт. Но тем больше накладные расходы на перекачку лишнего объема данных. Существует иерархия обращения к данным: наиболее быстро процессор берет их, естественно, из своих собственных регистров. Затем по скорости доступа следуют кэши первого-второго-третьего уровня, потом память на плате данного процессора (в NUMA-системах), память из другой процессорной ячейки, дисковая память, ленточные и CD-ROM-накопители. «Есть простое правило анализа производительности систем: для этого компьютер следует рассматривать как систему каналов, по которым передаются данные, — говорит глава аналитической компании Elashkin Research Михаил Елашкин. — Одно узкое место — и сразу затор. Если какой-то модуль имеет избыточную производительность, это означает выброшенные деньги: ты заплатил за то, что тебе не нужно. Поэтому современные системы, как правило, очень хорошо сбалансированы». Баланс достигается различными способами. Можно, например, оптимизировать работу выделенного контроллера памяти, а можно вовсе перенести этот контроллер в кристалл процессора, как сделано в новых процессорах Sun Microsystems. Однако у каждого хорошего решения есть оборотная сторона: объединенный с процессором контроллер налагает жесткие ограничения на тип используемой памяти, затрудняя ее апгрейд.


 
стр. 1
стр. 2 >>

<<Что делать или кто виноват?
Все материалы номера
Сетевые мечтатели и их разоблачение >>