С появлением на рынке двух- и четырехъядерных процессоров для десктопов рядовым компьютерным пользователям стали доступны системы с производительностью, ранее свойственной только серверам. Попробуем разобраться, в каких случаях приобретение и применение подобных систем целесообразно, а в каких, напротив, игра не стоит свеч, ведь более мощная система и стоит дороже.
Поскольку скорость исполнения того или иного приложения напрямую зависит от его внутренней архитектуры, сильно влияющей на эффективность использования имеющихся аппаратных ресурсов, рассмотрим базовые принципы, реализуемые в приложениях для обработки данных.
О работе приложений
Традиционно приложения, предназначенные для серверной и клиентской сред, создаются по-разному и соответственно по-разному используют вычислительные ресурсы процессора и системы в целом. В обычных приложениях чаще всего применяют самый простой способ организации работы с данными, предполагающий один поток команд и данных, что позволяет упростить написание и отладку приложения, поскольку в таком случае все его команды выполняются последовательно. Каждая следующая команда может быть выполнена только после завершения предыдущей операции, что исключает возможность использовать одновременно несколько ядер многоядерного процессора или несколько одноядерных процессоров в многопроцессорных системах вне зависимости от архитектуры вычислительных систем.
При создании серверных и высокопроизводительных приложений применяют принципы параллельной обработки данных, асинхронные* операции работы с устройствами ввода-вывода. Такие приложения предполагают одновременное выполнение нескольких потоков команд и могут взаимодействовать как с одним, так и с несколькими наборами данных, что значительно усложняет написание и отладку программного кода, но при этом позволяет эффективно использовать ресурсы высокопроизводительных систем с многоядерными процессорами. Кроме того, подобные приложения иногда быстрее работают и на обычных системах с одноядерным процессором за счет снижения временных задержек и параллельного фонового выполнения команд.
Однако в случае многопоточных приложений одним из узких мест является организация работы с данными, а также взаимодействие различных потоков приложения. Возникающие при этом проблемы значительно усложняют создание приложений и в конечном счете приводят к их удорожанию.
Одним из интересных аспектов развития современных систем является аппаратная реализация команд или алгоритмов для разгрузки процессора и ускорения выполнения задач. Такой метод в современных системах реализуется довольно часто (например, аппаратный механизм разгрузки процессора от операций по обслуживанию протокола TCP/IP, распространенный в серверных сетевых картах**, или аппаратные платы, реализующие различные алгоритмы шифрования) и может эффективно использоваться для ускорения операций определенного типа. Характерным примером подобного подхода является, в частности, аппаратная реализация команд DirectX в современных видеоадаптерах, которые имеются в большинстве современных игровых программ и служат для ускорения вывода 3D-графики.
Особенности реальных приложений
Обычное офисное приложение (вроде MS Word или MS Excel) использует от одного до нескольких потоков и один набор данных, задействуя в типовых ситуациях (например, при просмотре пользователем и редактировании текстов) не более 15% ресурсов современного процессора (см. рисунок), что позволяет практически не ощущать задержек. Пиковая же нагрузка на процессор, когда используются все его ресурсы (в частности, при проверке орфографии), возникает лишь на короткое время, зависящее от размеров документа и настроек приложения, а также от его архитектуры. Как правило, мы можем одновременно использовать несколько офисных приложений, но работаем только с одним. В таких случаях нагрузка на процессор не возрастает, но может потребоваться больший объем оперативной памяти, дабы снизить число обращений к жесткому диску с файлом подкачки.
Инженерные приложения обычно разрабатываются как многопоточные. При этом они могут предъявлять специфические требования к оборудованию системы и в полной мере задействовать все имеющиеся в ней ресурсы, включая аппаратную поддержку различных стандартных алгоритмов (в качестве примера можно привести профессиональные приложения по работе с 3D-графикой, которые требуют аппаратной поддержки набора команд OpenGL со стороны видеоподсистемы). Данные приложения являются специфическими и, как правило, устанавливаются на рабочих местах выделенных сотрудников.
Требования, предъявляемые к оборудованию для выполнения мультимедийных приложений, зависят от предназначения последних. Приложения для просмотра видео, прослушивания аудиозаписей, воспроизведения телепередач и т. п. чаще всего используют один поток команд для обработки мультимедийной информации. Поэтому для их выполнения достаточно системы с одноядерным процессором большой производительности, причём загрузка процессора может достигать 100%. Однако, имея систему с многоядерным процессором, пользователь получает возможность одновременно запускать несколько однопоточных приложений (например, одновременно просматривать видеозапись и слушать музыку), которые система распределит между имеющимися процессорными ядрами.
Современные игровые программы предъявляют очень высокие требования к конфигурации системы. Они, как правило, интенсивно используют возможности видеоадаптера для выполнения ресурсоемких операций по обработке графики на специализированном графическом процессоре, который обеспечивает аппаратную поддержку команд DirectX или OpenGL. Кроме того, игровые программы размещают большой объем информации в памяти системы (для нормальной работы может потребоваться до 1 Гб оперативной памяти, в основном для хранения текстур и объектов). Центральный же процессор при наличии видеоадаптера занят главным образом работой со звуком и обеспечением логики игровой программы, что не создаёт для него значительной нагрузки, а потому для игр бывает достаточно процессора класса Pentium 4 с одним-двумя ядрами.
Заключение
Итак, для пользователей, работающих в офисе с обычным офисным набором приложений, достаточно установить сравнительно простую систему с небольшим объемом оперативной памяти, встроенным видеоадаптером и недорогим процессором. Однако если пользователь применяет специализированное ПО, время выполнения которого критически важно для компании (например, бухгалтерское), стоит уточнить способность программы использовать дополнительные процессорные ядра. Если такая возможность поддерживается, то имеет смысл установить систему с многоядерным процессором для повышения производительности и сокращения времени выполнения операций.
Для пользователей, применяющих специализированные приложения, например для обработки 3D-графики, стоит подумать о приобретении специализированного оборудования, которое обеспечит аппаратную поддержку приложения и ускорит процедуру обработки данных и формирование результата. В этом случае при выборе следует руководствоваться рекомендациями производителя ПО.
При выборе системы для игр особого внимания заслуживает видеоадаптер, на который ляжет основная часть нагрузки. Немаловажным фактором в данном случае является и объем оперативной памяти системы. Современные технологии позволяют объединять несколько видеоплат для повышения производительности при работе с графикой, но для этого система должна быть снабжена специальным набором микросхем на системной плате и видеоадаптерами, поддерживающими такую возможность. При этом процессор может быть как одноядерным, так и двухъядерным. Игры пока не рассчитаны на использование большого числа ядер, но в скором будущем ситуация, надо полагать, изменится, поскольку именно игровые программы являются локомотивом в развитии современных домашних систем.
Следует также обратить внимание на возможность последующего перехода на другие версии ОС, что может повлиять на требования к производительности систем и объему оперативной памяти и, как следствие, необходимость обновления или полной замены системы в будущем.
Правильный и обдуманный выбор системы может позволить организациям сэкономить значительные средства при массовых закупках офисной компьютерной техники, которая обеспечит потребности сотрудников организации и не будет содержать не нужных для работы “излишеств”.
_______________________________________________________
С автором, старшим инженером по системам обработки и хранения данных компании Computer Mechanics, можно связаться по адресу: Geleon_torling@mail.ru_______________________________________________________
* При использовании асинхронного метода работы поток не ожидает окончания операции ввода-вывода, а сразу переходит к выполнению следующих команд. При таком подходе можно получить повышение производительности, однако требуется организовать проверку результатов выполнения операции ввода-вывода (например, окончания операции и успешности ее завершения). Данный метод часто используется в СУБД и других высокопроизводительных серверных приложениях.** Данный механизм обозначается аббревиатурой TOE (TCP Offload Engine) и предназначен для разгрузки центрального процессора сервера от рутинных операций по обработке пакетов протокола TCP/IP, что в некоторых случаях позволяет значительно снизить нагрузку на центральный процессор и освободить его ресурсы для других операций. Однако поддержка данного механизма должна быть реализована на уровне ОС, в противном случае он не будет задействован в работе сервера.