Почему некоторые приложения могут использовать только половину процессорного времени?

Почему некоторые приложения могут использовать только половину процессорного времени?MATLAB и другие приложения с высокими требованиями к вычислительной производительности, довольно часто информируют нас о том, что могут использовать только часть процессорного времени системы. Зачастую это происходит потому, что многие компьютеры с несколькими процессорами или многоядерными процессорами требуют специального программного обеспечения, адаптированного для одновременного использования всех доступных ЦПУ. Если на системе с более чем одним вычислительным ядром не использовать специально адаптированное ПО, то вы обязательно столкнетесь с невозможностью использования всех вычислительных возможностей компьютера.

Многоядерные и многопроцессорные системы

Производители компьютерных систем имеют сразу несколько способов построения компьютеров с большим числом вычислительных ядер. Некоторые материнские платы могут поддерживать одновременную установку нескольких процессоров в отдельные слоты, при этом предусматривают дополнительные схемы (шины передачи данных) для обеспечения взаимодействия между процессорами. Как правило, подобная архитектура использовалась и продолжает использоваться в серверных системах, в которых сегодня преимущественно устанавливают 64-битные процессоры. Альтернативным решением является использование многоядерных процессоров, которые в одном корпусе (чипе) имеют два, четыре, а то и восемь вычислительных ядер, эквивалентных самостоятельным процессорам. Большее количество ядер приводит к увеличению производительности компьютера и позволяет запускать одновременно несколько приложений без потерь производительности. Для этого реализован специальный аппаратно-программный алгоритм, который создает конкурентные задачи (потоки), направляемые на наиболее свободные вычислительные ядра.

Гиперпоточность или Hyperthreading

Один простой процесс, созданный приложением, не способен автоматически быть выполнен более чем одним процессорным ядром. Стандартные приложения, требующие объемных вычислений, обычно создают не более одного процесса, который может быть направлен на выполнение в не более чем одно процессорное ядро. Но приложение может быть переписано (адаптированно) для того, чтобы создать несколько процессов, выполняемых одновременно в нескольких ЦПУ или ядрах. Такая процедура (технология) получила название гиперпоточность (мультипоточность) или hyperthreading. Например, такое приложение, как MATLAB является частично мультипоточным (задача выполняется в несколько потоков, но неэффективно). Оно позволяет намного быстрее достичь результатов благодаря выполнению в несколько потоков, при условии поддержки этой технологии на аппаратном уровне. Обычно, для того, чтобы разобраться с возможностями многопоточного выполнения таких программ, как MATLAB, приходится обращаться к технической документации приложения или на форум технической поддержки разработчиков ПО.

50-процентная нагрузка на процессор

Иногда при выполнении ресурсоемких задач, в том числе MATLAB, вы можете получить информацию от приложений аппаратного мониторинга о том, что процессор используется только на 50 процентов. Многие мониторы активности процессора показывают динамику нагрузки отдельно по каждому процессору, и в таком случае вы увидите следующую картину – половина ваших процессоров (ядер) нагружена на все 100 процентов, а вторая половина – полностью простаивает. Как правило, такие приложения рассчитывают среднюю вычислительную нагрузку на процессоры системы, что приводит к усредненному показателю в 50 процентов, хотя на самом деле одни вычислительные ядра работают на полную катушку, а другие оказываются вообще не задействованными. Хотелось бы напомнить вам, что нагрузка на процессор зависит от основных характеристик микропроцессоров, описанных нами ранее.

Еще одна причина неполной нагрузки на процессор

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *