Что предназначено загрузкой ЦП процесса и Как она может быть уменьшена?

Что предназначено загрузкой ЦП процесса?

Как измерить его?

Каковы средства для сокращения его?

Я всегда путался с этим понятием. Я попытался измерить ЦП, используемый при помощи 'главной' команды в Linux. Но, то, что я замечаю, когда нет никакого другого выполнения пользовательского процесса, затем мой процесс, кажется, пронзает и берет 99% ЦП, когда это не заблокировано во вводе-выводе. Но, если существует другой процесс, работающий затем, он доходит до 45% или 50%. Действительно ли приемлемо для процесса взять 99% ЦП, когда никакой другой процесс не работает?

Любые ссылки или указатели в направлении также помогут.

5
задан Jay 24 January 2010 в 07:56
поделиться

5 ответов

Загрузка процессора в данном контексте - это доля общих доступных циклов процессора, потребляемая каждым процессом.

Если это просто вычисление какого-то длинноволнового вычисления, то то то, что вы видите, это нормально: операционная система справедливо делит доступные 100% вычислительных ресурсов между процессами, которые просят об этом.

Если вместо этого ваша программа должна ждать какого-то события, например, ожидания нажатия пользователем клавиши или поступления входных данных из сети, то это звучит так, как будто ваша программа находится в бесконечном цикле: она никогда ничего не ждет, а просто постоянно отгораживается. Если это так, то вы должны подумать о том, чтобы переписать её так, чтобы, когда ей нечего делать, она ждала чего-то. Это может быть ожидание, когда пользователь нажмёт клавишу, когда придет пакет по сетевому соединению или ещё что-нибудь. Если это так, то вы должны искать код, который говорит: "Есть ли какая-нибудь работа, которую нужно сделать? Нет! Есть ли какая-нибудь работа? Нет! Есть ли какая-нибудь работа? Нет!" безумно. Если это так, то вы должны найти способ заставить ее ждать работы с помощью соответствующего вызова операционной системы или библиотечной функции.

3
ответ дан 14 December 2019 в 04:38
поделиться

Программы либо работают, либо ожидают, 100% или 0%. Когда вы видите использование некоторого количества, вроде 50%, это в среднем в течение нескольких временных интервалов, как второе. Так что не беспокойтесь о процентах использования. То, что вы должны сделать, это убедиться, что это не делает ничего, что нет абсолютно, что не нужно делать. Это какая настройка производительности. Это все, что есть к этому.

2
ответ дан 14 December 2019 в 04:38
поделиться

Утилизация ЦП в основном («время, проведенное с использованием процессора» * 100 / «в реальном времени»), обычно рассчитывается небольшими интервалами.

99% означает все время, просто хрустит числа, не ожидая. Это вполне нормально и на самом деле иногда это то, что вы хотите. Чем меньше он ждет - тем быстрее он рассчитал результат.

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

Но иногда высокое использование процессоров плохо. Когда у вас нет критического процесса, работающего в течение нескольких часов с использованием высокого процессора, другие более критические процессы не могут получить свою справедливую долю процессора и заниматься дольше до конца. Для веб-сервера, что означает, что меньше клиентов могут использовать свой сервер. Для файлового сервера, который означает, что файлы займется дольше для загрузки. Реальные пользователи будут недовольны в обоих случаях.

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

2
ответ дан 14 December 2019 в 04:38
поделиться
char c = "\uFFFF".toCharArray()[0];

Значение непосредственно интерпретируется как требуемая строка, и вся последовательность реализуется как один символ.

Другой способ, если вы собираетесь жестко кодировать значение:

char c = '\uFFFF';

Обратите внимание, что \uFFFF не кажется правильным символом Юникода, но попробуйте, например, с \u041f .

Сведения о переходах Юникода см. здесь

-121--2096000-

Для получения дополнительной информации об операторе my см. perdoc perlsub . Вот небольшой отрывок:

Synopsis:

   my $foo;            # declare $foo lexically local
   my (@wid, %get);    # declare list of variables local
   my $foo = "flurp";  # declare $foo lexical, and init it
   my @oof = @bar;     # declare @oof lexical, and init it
   my $x : Foo = $y;   # similar, with an attribute applied
-121--1576067-

CPU является ресурсом. Операционная система (например, Linux или Windows) управляет этим ресурсом и гарантирует, что все ваши программы получат время для справедливого выполнения.

Поэтому вам не нужно беспокоиться об этом.

0
ответ дан 14 December 2019 в 04:38
поделиться

Я обычно храню таблицы свойств в корневом каталоге решения (т. е. trunk/directory в хранилище SVN):

/projectA/projectA.vsprops    
/projectA/library1
/projectA/library2
/projectA/app1

Иногда у меня есть несколько таблиц свойств, разделенных по темам, например boost-svn.vsprops , xercexs-2.8.vsprops и т.д., и объединяю их в соответствии с тем, что мне нужно для проекта.

Нет необходимости редактировать каждый проект, но необходимо добавить определенный лист свойств к каждому проекту в решении.

В Visual Studio 2010 Сервис - > Параметры были заменены на Microsoft.Cpp.Win32.user , и это файл, в который должны быть включены параметры для всей машины. В вашем случае я бы поместил настройки SMS SDK в Microsoft.Cpp.Win32.user файл на компьютере разработчика. Это также даст разработчикам гибкость в установке SDK в различных местах (например, диск) на их компьютере, а также освободит ваше решение/проекты от поддержки настроек, специфичных для конкретной среды.

-121--3995814-

Конечно - просто передайте пустую строку:

var arr2 = arr.join('');
-121--1228567-

Каковы средства для ее уменьшения?

Зависит от того, хотите ли вы уменьшить высоту пика использования ЦП или длительность ваших длительных вычислений или и того, и другого.

Поэтому, если ваше приложение использует 100% CPU в течение одной минуты, вы хотите "уменьшить" его до "50% более 2 минут" или "100% более 30 секунд" или "50% более 1 минут"?

Все они отличаются друг от друга.

Например, скажем, вы хотели убедиться, что приложение никогда не использует более 50% вычислительной мощности двухъядерной машины (я не говорю, что это хорошо, я просто приведу пример), то есть очень простой способ сделать это: Для параметра "CPU affinity" программы можно задать только одно из двух ядер. Обратите внимание, что я не рекомендую делать это в вашем случае: Все, что я говорю здесь, для полноты, что он существует, он имеет действительные использования, и есть причина, почему и Linux, и Windows разработчики написали API и конечных пользователей команды, позволяющие установить сходство CPU на индивидуальной основе (эти функции полностью доступны как для программистов, так и для конечных пользователей).

Теперь, если вы хотите сократить продолжительность длительных вычислений, вам необходимо оптимизировать приложение таким образом, чтобы оно использовало меньше ресурсов (например, используя алгоритм, который лучше всего подходит для вашей проблемы).

Допустимо ли, чтобы процесс занимал 99% ЦП, когда не выполняется другой процесс?

Это зависит от ваших требований. Обычно да, это не только приемлемо, но и распространено.

1
ответ дан 14 December 2019 в 04:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: