Допустимая загрузка ЦП для 4-ядерного i7 с тактовой частотой 3,4 ГГц

Создаю киоск-приложение для Mac и тестирую производительность и загрузку ЦП. Монитор активности показывает в общей сложности примерно от 90 до 150% использования ЦП для постоянно работающих процессов киоска.

Моя первая путаница заключается в том, что загрузка ЦП может превышать 100%, но я понимаю, что это связано с количеством ядер.

Итак, мой вопрос: приемлемо ли 150% общего использования ЦП для Mac на базе киоска с постоянно работающими приложениями 24/7? Или это слишком высоко?

addendum> приложение постоянно обрабатывает видео, единственным «взаимодействием» является видеопоток, поступающий с веб-камеры.

Ваше киоск-приложение делает вещи, которые могут оправдать 150% загрузки ЦП?

Ответы (3)

Ноль идеален

В идеале ваше киоск-приложение должно использовать 0% ЦП, когда оно не используется активно . Маловероятно, что вы добьетесь этого без значительных усилий, но даже цель использования в 5–10% — это хорошо.

При постоянной загрузке ЦП на 150 % приложение, скорее всего, будет считаться неисправным обозревателями Apple Mac App Store и многими клиентами.

Подсказки: перенесите нагрузку на правильную структуру

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

Для других анимаций обязательно используйте CoreGraphics и CoreAnimation. Они значительно улучшат энергетическую отдачу вашего приложения.

Руководство по энергоэффективности для приложений Mac

Изучите руководство Apple по энергоэффективности для приложений Mac . Во введении излагаются намерения Apple:

Ваша обязанность как разработчика

Даже небольшая неэффективность приложений сказывается на всей системе, существенно влияя на срок службы батареи, производительность, скорость отклика и температуру. Как разработчик приложения, вы обязаны убедиться, что ваше приложение работает максимально эффективно. Используйте рекомендуемые API, чтобы система могла принимать разумные решения о том, как лучше всего управлять вашим приложением и используемыми им ресурсами. По возможности избегайте ненужных обновлений пользовательского интерфейса и ввода/вывода. Энергоемкие операции должны находиться под контролем пользователя. Если пользователь инициирует, например, большой рендеринг iMovie, пакетное задание Automator, преобразование Compressor или компиляцию Xcode, пользователь не должен удивляться, если это действие потребляет энергию. Стремитесь сделать ваше приложение абсолютно бездействующим, когда оно не отвечает на ввод данных пользователем.

Используйте инструменты разработчика для профилирования энергопотребления вашего приложения и спросите в Stack Overflow , как снизить нагрузку на ЦП. Удачи!

Ваше утверждение «ноль — это идеал» напоминает мне старую истину, которую я считаю чистой воды Йоги Берра: «В теории нет разницы между теорией и практикой. На практике она есть». Вы делаете хорошие очки за то, что являетесь хорошим гражданином в многопользовательской среде или среде с несколькими приложениями, но использование киоска — это воплощение игры с нулевой суммой. Зачем тратить больше на сокращение ЦП или покупать дополнительное оборудование, если у вас есть достаточно места для деградации. i7 имеет 4 ядра, 8 потоков, и один процесс занимает 1,5 из 8 доступных потоков. Мне кажется, это не проблема.
150% ЦП меня беспокоит, независимо от того, что это одноразовое устройство. Одно ядро ​​​​i7 с частотой 3,6 ГГц является мощным, и мне интересно, что потребляет все эти циклы. Но вы правы, если бюджет позволяет, выделяемое тепло не является проблемой, а пользовательский опыт отличный, то почти любое использование ЦП можно игнорировать.
В самом деле, это как если бы кто-то сказал: «Мне не понравится этот фильм, поскольку проектор потребляет 1500 Вт, а сейчас фильм смотрит только один человек». Все это компромисс в инженерии - да, делайте эффективный код, когда можете, но вкладывать 10 тысяч долларов, чтобы переделать что-то, что работает с анимацией в HyperCard, для здания, которое открыто три вечера в неделю и все выходные дни, было бы плохой пользой. средств для некоммерческой организации. Немного забавно видеть, как каждый видит этот вопрос через свой собственный опыт, и я являюсь частью этого «видения» его по-своему.
Просто предупреждение: ask away on Stack Overflow for ways to reduce CPU loadэто было бы не по теме без конкретного примера кода, например «Слишком широкий».
«При постоянной загрузке ЦП на 150% приложение, скорее всего, будет считаться неисправным обозревателями Apple Mac App Store — и многими клиентами». - если это для киоска, то почему приложение должно быть в магазине приложений и почему клиенты могут видеть использование ЦП?

150% всего ЦП, конечно, было бы не только совершенно неприемлемо, но и физически невозможно.
Я знаю, что большинство спортсменов, кажется, думают, что они могут выложиться как минимум на 110% каждый раз, когда у них берут интервью, но никто не указал им на простые факты, я думаю ;-)

Монитор активности показывает использование ЦП отдельными приложениями на ядро ​​[включая виртуальные ядра], поэтому 150% на самом деле (для i7 с 4 ядрами + гиперпоточность) 150 / 8 = 18,75% от общей мощности машины.

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

введите описание изображения здесь

Взяв это в качестве примера, видимые проценты в сумме составляют около 120, но показатель «Система + пользователь» составляет всего 5,3%.
У меня 24 виртуальных ядра [2 x 6-ядерных процессора + гиперпоточность], поэтому 120/24 = 5 [достаточно близко к учитывать процессы дальше по списку]

При 18,75% от общей мощности машины я не вижу смысла в усилиях по оптимизации, если только другой процесс не нуждается в какой-либо значительной части оставшихся возможностей.

Это хорошая установка!

Если у вас нет проблем, не оптимизируйте преждевременно, вот мой совет. Аппаратное обеспечение будет работать на 100 % (или 800 % одного отдельного потока в случае вашего оборудования) без каких-либо побочных эффектов, и если у вас нет блокирующих эффектов — ваши анимации и функции киоска могут даже не ухудшиться, когда ЦП полностью загружен 24/7. .

Если есть возможность снизить нагрузку на ЦП, сделайте это, но i7 имеет 4 физических ядра и рассчитывает загрузку ЦП против 8 виртуальных ядер. Ваше оборудование в идеале работает на 800%, а вы сейчас только на 150%? Похоже, что ваши спецификации для оборудования более чем излишние для ситуации с одноразовым киоском. Если вы выбрали стек технологий и довольны содержимым киоска с точки зрения анимации, способности выполнять задачу, для которой вы его «нанимаете», я бы не стал беспокоиться о какой-то навязанной извне «лучшей практике», даже если Apple рекомендует быть эффективным кодировщиком (кстати, ОТЛИЧНЫМ).

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

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

  • Как долго пользователь взаимодействует с киоском?
  • Зарабатываются или теряются деньги и по какой ставке они оцениваются?
  • Что происходит с системой, когда она становится зависимой от ЦП (из-за фоновых процессов или изменений в приложении)?

Любая «лучшая практика» действительно является отправной точкой для вашей оценки. Нет причин не оставлять компьютер на 100% загруженным, если основной поток не заблокирован, а система в целом изящно деградирует.

150% постоянно — это абсолютное безумие для любого приложения, которое ничего не делает, особенно для (я полагаю, ориентированного на потребителя) киоска. Существует нетривиальная разница в энергопотреблении между бездействием и использованием на 150% — для пары машин, работающих круглосуточно и без выходных, это может очень быстро превратиться в приличную сумму денег.
@Undo Вы предполагаете , что приложение ничего не делает, или вы знаете, что приложение ничего не делает? В OP указано, что загрузка ЦП составляет от 90 до 150%. Я не готов предполагать небрежный дизайн/выбор программного обеспечения из одной точки данных. Кроме того, ваша жалоба на энергопотребление кажется благовидной, не зная общей картины. Вы выступаете за выключение всех компьютеров, потребляющих энергию? Опять же, ваше предположение о том, что код беспричинно использует ЦП и постоянно твердит о затратах на электроэнергию, выглядит как ошибка относительной лишенности .
Конечно нет — я не защищаю это как защитник окружающей среды или что-то в этом роде, но факт в том, что если вы запускаете эти киоски и используете так много процессора без веской причины («киоск» в моем понимании — это что-то ориентированный на потребителя, выполняющий минимальную работу) может дорого обойтись, если вы не получаете от этого никакой пользы. Я не говорю, что нужно все бросить и сосредоточиться на энергозатратах, но это фактор. Я хотел бы увидеть разъяснения от ОП о том, что он на самом деле делает, но если он просто отображает информацию... что-то здесь не так.
@Undo Итак, почему вы комментируете мой ответ, если ОП нуждается в разъяснении? 150/800 - это рабочий цикл 18,5% - у вас есть странный порог «безумия», чтобы охарактеризовать такую ​​​​легко нагруженную систему.
Приложение обрабатывает видео, единственное взаимодействие — это видеопоток, поступающий с веб-камеры.
@eco_bach Это разумная нагрузка для видеоэффектов в реальном времени, особенно с учетом частоты кадров и размера камеры.