«htop» не показывает правильный CPU%, но «top» делает

Что-то вроде

xprop -name TitleGoesHere _NET_WM_STATE | grep -q _NET_WM_STATE_FULLSCREEN

должно это сделать. Обратите внимание, что заголовок окна, используемый xprop, является устаревшим типом ISO8859 / 1, поэтому символы Unicode не будут работать; это может также быть полное название, а не просто подстрока. xprop сам может быть использован в интерактивном режиме для получения правильной строки; запустите

xprop WM_NAME

и дождитесь, пока курсор изменится на перекрестье, затем нажмите на окно.

10
задан 23 June 2012 в 17:33

9 ответов

Как вы сами сказали, вы можете нажать H, чтобы показать пользовательские потоки.

Просто для будущей справки (и для удовольствия) давайте вычислим загрузку процессора!

Немного фона:

В современной операционной системе есть Планировщик. Он нацелен на то, чтобы все Процессы и их потоки получили достаточную долю вычислительного времени. Я не буду слишком много планировать (это действительно сложно). Но в конце есть что-то, называемое очередью run . Это означает, что все инструкции всех процессов выстраиваются в очередь до ожидания выполнения их очереди.

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

Сортировка в этой очереди связана с process ' Приоритет (также называемый «хорошим значением» - то есть процесс nice о системных ресурсах).

Длина очереди определяет загрузку системы. Например, нагрузка 2,5 означает, что для каждой команды, с которой процессор может иметь дело с в реальном времени , имеется 2,5 инструкции.

В Linux, кстати, эта нагрузка рассчитана в 10 мс (по умолчанию).

Теперь на значения процентного значения использования ЦП:

Представьте, что у вас есть два такта, один называется t и представляет в реальном времени . Он измеряет секунду на каждую секунду. Другие часы, которые мы называем c. Он работает только в том случае, если есть обработка. Это означает, что только когда процесс вычисляет что-то, часы работают. Это также называется временем процессора. Каждый процесс в системе «получил» один из них.

Теперь использование процессора может быть рассчитано для одного процесса:

U = c/t = 0.5s / 1s = 0.5 [/g7]

или для всех процессов:

alt text [/g8]

На многоядерной машине это может привести к значению 3,9, конечно, поскольку

Wikipedia предоставляет этот пример:

Программное приложение, работающее на 6-процессорном компьютере UNIX, создает три UNIX процессов для выполнения требований пользователя. Каждый из этих трех процессов создает два потока. Работа программного приложения равномерно распределяется на 6 независимых потоков исполнения, созданных для приложения. Если нет ожиданий ресурсов, общее время процессора ожидается в шесть раз. Истекшее реальное время.

Вот небольшой фрагмент питона, который делает это

>>> import time
>>> t = time.time()
>>> c = time.clock()
>>> # the next line will take a while to compute
>>> tuple(tuple(i**0.2 for i in range(600)) for i in range(6000))
>>> print (time.clock() / (time.time() - t)) * 100, "%"
66.9384021612 %

В идеальном мире вы можете сделать вывод, что системная нагрузка составляет 100 - 66,93 = 33,1%. (Но на самом деле это было бы неправильно из-за сложных вещей, таких как ожидание ввода-вывода, расписание неэффективности и т. Д.)

В отличие от load , эти вычисления будут всегда приводит к значению от 0 до количества процессоров, то есть от 0 до 1 или от 0 до 100%. Теперь нет возможности различать машину, на которой выполняются три задачи, с использованием 100% -ного процессора, и машина, на которой запущено миллион задач, практически не работает ни на одной из них, также на 100%. Если вы, например, пытаетесь сбалансировать множество процессов на многих компьютерах, то использование процессора просто бесполезно. Нагрузка - это то, что вы хотите там.

Теперь на самом деле существует более одного из этих часов времени обработки. Например, для ввода / вывода требуется один. Таким образом, вы также можете рассчитать использование ресурсов ввода-вывода.

Возможно, это не помогло в отношении исходного вопроса, но я надеюсь, что это интересно. :)

22
ответ дан 25 July 2018 в 22:49

Как вы сами сказали, вы можете нажать H, чтобы показать пользовательские потоки.

Просто для будущей справки (и для удовольствия) давайте вычислим загрузку процессора!

Немного фона:

В современной операционной системе есть Планировщик. Он нацелен на то, чтобы все Процессы и их потоки получили достаточную долю вычислительного времени. Я не буду слишком много планировать (это действительно сложно). Но в конце есть что-то, называемое очередью run . Это означает, что все инструкции всех процессов выстраиваются в очередь до ожидания выполнения их очереди.

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

Сортировка в этой очереди связана с process ' Приоритет (также называемый «хорошим значением» - то есть процесс nice о системных ресурсах).

Длина очереди определяет загрузку системы. Например, нагрузка 2,5 означает, что для каждой команды, с которой процессор может иметь дело с в реальном времени , имеется 2,5 инструкции.

В Linux, кстати, эта нагрузка рассчитана в 10 мс (по умолчанию).

Теперь на значения процентного значения использования ЦП:

Представьте, что у вас есть два такта, один называется t и представляет в реальном времени . Он измеряет секунду на каждую секунду. Другие часы, которые мы называем c. Он работает только в том случае, если есть обработка. Это означает, что только когда процесс вычисляет что-то, часы работают. Это также называется временем процессора. Каждый процесс в системе «получил» один из них.

Теперь использование процессора может быть рассчитано для одного процесса:

U = c/t = 0.5s / 1s = 0.5 [/g7]

или для всех процессов:

alt text [/g8]

На многоядерной машине это может привести к значению 3,9, конечно, поскольку

Wikipedia предоставляет этот пример:

Программное приложение, работающее на 6-процессорном компьютере UNIX, создает три UNIX процессов для выполнения требований пользователя. Каждый из этих трех процессов создает два потока. Работа программного приложения равномерно распределяется на 6 независимых потоков исполнения, созданных для приложения. Если нет ожиданий ресурсов, общее время процессора ожидается в шесть раз. Истекшее реальное время.

Вот небольшой фрагмент питона, который делает это

>>> import time
>>> t = time.time()
>>> c = time.clock()
>>> # the next line will take a while to compute
>>> tuple(tuple(i**0.2 for i in range(600)) for i in range(6000))
>>> print (time.clock() / (time.time() - t)) * 100, "%"
66.9384021612 %

В идеальном мире вы можете сделать вывод, что системная нагрузка составляет 100 - 66,93 = 33,1%. (Но на самом деле это было бы неправильно из-за сложных вещей, таких как ожидание ввода-вывода, расписание неэффективности и т. Д.)

В отличие от load , эти вычисления будут всегда приводит к значению от 0 до количества процессоров, то есть от 0 до 1 или от 0 до 100%. Теперь нет возможности различать машину, на которой выполняются три задачи, с использованием 100% -ного процессора, и машина, на которой запущено миллион задач, практически не работает ни на одной из них, также на 100%. Если вы, например, пытаетесь сбалансировать множество процессов на многих компьютерах, то использование процессора просто бесполезно. Нагрузка - это то, что вы хотите там.

Теперь на самом деле существует более одного из этих часов времени обработки. Например, для ввода / вывода требуется один. Таким образом, вы также можете рассчитать использование ресурсов ввода-вывода.

Возможно, это не помогло в отношении исходного вопроса, но я надеюсь, что это интересно. :)

22
ответ дан 31 July 2018 в 10:49

Как вы сами сказали, вы можете нажать H, чтобы показать пользовательские потоки.

Просто для будущей справки (и для удовольствия) давайте вычислим загрузку процессора!

Немного фона:

В современной операционной системе есть Планировщик. Он нацелен на то, чтобы все Процессы и их потоки получили достаточную долю вычислительного времени. Я не буду слишком много планировать (это действительно сложно). Но в конце есть что-то, называемое очередью run . Это означает, что все инструкции всех процессов выстраиваются в очередь до ожидания выполнения их очереди.

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

Сортировка в этой очереди связана с process ' Приоритет (также называемый «хорошим значением» - то есть процесс nice о системных ресурсах).

Длина очереди определяет загрузку системы. Например, нагрузка 2,5 означает, что для каждой команды, с которой процессор может иметь дело с в реальном времени , имеется 2,5 инструкции.

В Linux, кстати, эта нагрузка рассчитана в 10 мс (по умолчанию).

Теперь на значения процентного значения использования ЦП:

Представьте, что у вас есть два такта, один называется t и представляет в реальном времени . Он измеряет секунду на каждую секунду. Другие часы, которые мы называем c. Он работает только в том случае, если есть обработка. Это означает, что только когда процесс вычисляет что-то, часы работают. Это также называется временем процессора. Каждый процесс в системе «получил» один из них.

Теперь использование процессора может быть рассчитано для одного процесса:

U = c/t = 0.5s / 1s = 0.5 [/g7]

или для всех процессов:

alt text [/g8]

На многоядерной машине это может привести к значению 3,9, конечно, поскольку

Wikipedia предоставляет этот пример:

Программное приложение, работающее на 6-процессорном компьютере UNIX, создает три UNIX процессов для выполнения требований пользователя. Каждый из этих трех процессов создает два потока. Работа программного приложения равномерно распределяется на 6 независимых потоков исполнения, созданных для приложения. Если нет ожиданий ресурсов, общее время процессора ожидается в шесть раз. Истекшее реальное время.

Вот небольшой фрагмент питона, который делает это

>>> import time
>>> t = time.time()
>>> c = time.clock()
>>> # the next line will take a while to compute
>>> tuple(tuple(i**0.2 for i in range(600)) for i in range(6000))
>>> print (time.clock() / (time.time() - t)) * 100, "%"
66.9384021612 %

В идеальном мире вы можете сделать вывод, что системная нагрузка составляет 100 - 66,93 = 33,1%. (Но на самом деле это было бы неправильно из-за сложных вещей, таких как ожидание ввода-вывода, расписание неэффективности и т. Д.)

В отличие от load , эти вычисления будут всегда приводит к значению от 0 до количества процессоров, то есть от 0 до 1 или от 0 до 100%. Теперь нет возможности различать машину, на которой выполняются три задачи, с использованием 100% -ного процессора, и машина, на которой запущено миллион задач, практически не работает ни на одной из них, также на 100%. Если вы, например, пытаетесь сбалансировать множество процессов на многих компьютерах, то использование процессора просто бесполезно. Нагрузка - это то, что вы хотите там.

Теперь на самом деле существует более одного из этих часов времени обработки. Например, для ввода / вывода требуется один. Таким образом, вы также можете рассчитать использование ресурсов ввода-вывода.

Возможно, это не помогло в отношении исходного вопроса, но я надеюсь, что это интересно. :)

22
ответ дан 31 July 2018 в 10:54

Как вы сами сказали, вы можете нажать H, чтобы показать пользовательские потоки.

Просто для будущей справки (и для удовольствия) давайте вычислим загрузку процессора!

Немного фона:

В современной операционной системе есть Планировщик. Он нацелен на то, чтобы все Процессы и их потоки получили достаточную долю вычислительного времени. Я не буду слишком много планировать (это действительно сложно). Но в конце есть что-то, называемое очередью run . Это означает, что все инструкции всех процессов выстраиваются в очередь до ожидания выполнения их очереди.

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

Сортировка в этой очереди связана с process ' Приоритет (также называемый «хорошим значением» - то есть процесс nice о системных ресурсах).

Длина очереди определяет загрузку системы. Например, нагрузка 2,5 означает, что для каждой команды, с которой процессор может иметь дело с в реальном времени , имеется 2,5 инструкции.

В Linux, кстати, эта нагрузка рассчитана в 10 мс (по умолчанию).

Теперь на значения процентного значения использования ЦП:

Представьте, что у вас есть два такта, один называется t и представляет в реальном времени . Он измеряет секунду на каждую секунду. Другие часы, которые мы называем c. Он работает только в том случае, если есть обработка. Это означает, что только когда процесс вычисляет что-то, часы работают. Это также называется временем процессора. Каждый процесс в системе «получил» один из них.

Теперь использование процессора может быть рассчитано для одного процесса:

U = c/t = 0.5s / 1s = 0.5 [/g7]

или для всех процессов:

alt text [/g8]

На многоядерной машине это может привести к значению 3,9, конечно, поскольку

Wikipedia предоставляет этот пример:

Программное приложение, работающее на 6-процессорном компьютере UNIX, создает три UNIX процессов для выполнения требований пользователя. Каждый из этих трех процессов создает два потока. Работа программного приложения равномерно распределяется на 6 независимых потоков исполнения, созданных для приложения. Если нет ожиданий ресурсов, общее время процессора ожидается в шесть раз. Истекшее реальное время.

Вот небольшой фрагмент питона, который делает это

>>> import time
>>> t = time.time()
>>> c = time.clock()
>>> # the next line will take a while to compute
>>> tuple(tuple(i**0.2 for i in range(600)) for i in range(6000))
>>> print (time.clock() / (time.time() - t)) * 100, "%"
66.9384021612 %

В идеальном мире вы можете сделать вывод, что системная нагрузка составляет 100 - 66,93 = 33,1%. (Но на самом деле это было бы неправильно из-за сложных вещей, таких как ожидание ввода-вывода, расписание неэффективности и т. Д.)

В отличие от load , эти вычисления будут всегда приводит к значению от 0 до количества процессоров, то есть от 0 до 1 или от 0 до 100%. Теперь нет возможности различать машину, на которой выполняются три задачи, с использованием 100% -ного процессора, и машина, на которой запущено миллион задач, практически не работает ни на одной из них, также на 100%. Если вы, например, пытаетесь сбалансировать множество процессов на многих компьютерах, то использование процессора просто бесполезно. Нагрузка - это то, что вы хотите там.

Теперь на самом деле существует более одного из этих часов времени обработки. Например, для ввода / вывода требуется один. Таким образом, вы также можете рассчитать использование ресурсов ввода-вывода.

Возможно, это не помогло в отношении исходного вопроса, но я надеюсь, что это интересно. :)

22
ответ дан 31 July 2018 в 11:54

Как вы сами сказали, вы можете нажать H, чтобы показать пользовательские потоки.

Просто для будущей справки (и для удовольствия) давайте вычислим загрузку процессора!

Немного фона:

В современной операционной системе есть Планировщик. Он нацелен на то, чтобы все Процессы и их потоки получили достаточную долю вычислительного времени. Я не буду слишком много планировать (это действительно сложно). Но в конце есть что-то, называемое очередью run . Это означает, что все инструкции всех процессов выстраиваются в очередь до ожидания выполнения их очереди.

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

Сортировка в этой очереди связана с process ' Приоритет (также называемый «хорошим значением» - то есть процесс nice о системных ресурсах).

Длина очереди определяет загрузку системы. Например, нагрузка 2,5 означает, что для каждой команды, с которой процессор может иметь дело с в реальном времени , имеется 2,5 инструкции.

В Linux, кстати, эта нагрузка рассчитана в 10 мс (по умолчанию).

Теперь на значения процентного значения использования ЦП:

Представьте, что у вас есть два такта, один называется t и представляет в реальном времени . Он измеряет секунду на каждую секунду. Другие часы, которые мы называем c. Он работает только в том случае, если есть обработка. Это означает, что только когда процесс вычисляет что-то, часы работают. Это также называется временем процессора. Каждый процесс в системе «получил» один из них.

Теперь использование процессора может быть рассчитано для одного процесса:

U = c/t = 0.5s / 1s = 0.5 [/g7]

или для всех процессов:

alt text [/g8]

На многоядерной машине это может привести к значению 3,9, конечно, поскольку

Wikipedia предоставляет этот пример:

Программное приложение, работающее на 6-процессорном компьютере UNIX, создает три UNIX процессов для выполнения требований пользователя. Каждый из этих трех процессов создает два потока. Работа программного приложения равномерно распределяется на 6 независимых потоков исполнения, созданных для приложения. Если нет ожиданий ресурсов, общее время процессора ожидается в шесть раз. Истекшее реальное время.

Вот небольшой фрагмент питона, который делает это

>>> import time
>>> t = time.time()
>>> c = time.clock()
>>> # the next line will take a while to compute
>>> tuple(tuple(i**0.2 for i in range(600)) for i in range(6000))
>>> print (time.clock() / (time.time() - t)) * 100, "%"
66.9384021612 %

В идеальном мире вы можете сделать вывод, что системная нагрузка составляет 100 - 66,93 = 33,1%. (Но на самом деле это было бы неправильно из-за сложных вещей, таких как ожидание ввода-вывода, расписание неэффективности и т. Д.)

В отличие от load , эти вычисления будут всегда приводит к значению от 0 до количества процессоров, то есть от 0 до 1 или от 0 до 100%. Теперь нет возможности различать машину, на которой выполняются три задачи, с использованием 100% -ного процессора, и машина, на которой запущено миллион задач, практически не работает ни на одной из них, также на 100%. Если вы, например, пытаетесь сбалансировать множество процессов на многих компьютерах, то использование процессора просто бесполезно. Нагрузка - это то, что вы хотите там.

Теперь на самом деле существует более одного из этих часов времени обработки. Например, для ввода / вывода требуется один. Таким образом, вы также можете рассчитать использование ресурсов ввода-вывода.

Возможно, это не помогло в отношении исходного вопроса, но я надеюсь, что это интересно. :)

22
ответ дан 2 August 2018 в 04:13

Как вы сами сказали, вы можете нажать H, чтобы показать пользовательские потоки.

Просто для будущей справки (и для удовольствия) давайте вычислим загрузку процессора!

Немного фона:

В современной операционной системе есть Планировщик. Он нацелен на то, чтобы все Процессы и их потоки получили достаточную долю вычислительного времени. Я не буду слишком много планировать (это действительно сложно). Но в конце есть что-то, называемое очередью run . Это означает, что все инструкции всех процессов выстраиваются в очередь до ожидания выполнения их очереди.

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

Сортировка в этой очереди связана с process ' Приоритет (также называемый «хорошим значением» - то есть процесс nice о системных ресурсах).

Длина очереди определяет загрузку системы. Например, нагрузка 2,5 означает, что для каждой команды, с которой процессор может иметь дело с в реальном времени , имеется 2,5 инструкции.

В Linux, кстати, эта нагрузка рассчитана в 10 мс (по умолчанию).

Теперь на значения процентного значения использования ЦП:

Представьте, что у вас есть два такта, один называется t и представляет в реальном времени . Он измеряет секунду на каждую секунду. Другие часы, которые мы называем c. Он работает только в том случае, если есть обработка. Это означает, что только когда процесс вычисляет что-то, часы работают. Это также называется временем процессора. Каждый процесс в системе «получил» один из них.

Теперь использование процессора может быть рассчитано для одного процесса:

U = c/t = 0.5s / 1s = 0.5 [/g7]

или для всех процессов:

alt text [/g8]

На многоядерной машине это может привести к значению 3,9, конечно, поскольку

Wikipedia предоставляет этот пример:

Программное приложение, работающее на 6-процессорном компьютере UNIX, создает три UNIX процессов для выполнения требований пользователя. Каждый из этих трех процессов создает два потока. Работа программного приложения равномерно распределяется на 6 независимых потоков исполнения, созданных для приложения. Если нет ожиданий ресурсов, общее время процессора ожидается в шесть раз. Истекшее реальное время.

Вот небольшой фрагмент питона, который делает это

>>> import time
>>> t = time.time()
>>> c = time.clock()
>>> # the next line will take a while to compute
>>> tuple(tuple(i**0.2 for i in range(600)) for i in range(6000))
>>> print (time.clock() / (time.time() - t)) * 100, "%"
66.9384021612 %

В идеальном мире вы можете сделать вывод, что системная нагрузка составляет 100 - 66,93 = 33,1%. (Но на самом деле это было бы неправильно из-за сложных вещей, таких как ожидание ввода-вывода, расписание неэффективности и т. Д.)

В отличие от load , эти вычисления будут всегда приводит к значению от 0 до количества процессоров, то есть от 0 до 1 или от 0 до 100%. Теперь нет возможности различать машину, на которой выполняются три задачи, с использованием 100% -ного процессора, и машина, на которой запущено миллион задач, практически не работает ни на одной из них, также на 100%. Если вы, например, пытаетесь сбалансировать множество процессов на многих компьютерах, то использование процессора просто бесполезно. Нагрузка - это то, что вы хотите там.

Теперь на самом деле существует более одного из этих часов времени обработки. Например, для ввода / вывода требуется один. Таким образом, вы также можете рассчитать использование ресурсов ввода-вывода.

Возможно, это не помогло в отношении исходного вопроса, но я надеюсь, что это интересно. :)

22
ответ дан 4 August 2018 в 20:17

Как вы сами сказали, вы можете нажать H, чтобы показать пользовательские потоки.

Просто для будущей справки (и для удовольствия) давайте вычислим загрузку процессора!

Немного фона:

В современной операционной системе есть Планировщик. Он нацелен на то, чтобы все Процессы и их потоки получили достаточную долю вычислительного времени. Я не буду слишком много планировать (это действительно сложно). Но в конце есть что-то, называемое очередью run . Это означает, что все инструкции всех процессов выстраиваются в очередь до ожидания выполнения их очереди.

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

Сортировка в этой очереди связана с process ' Приоритет (также называемый «хорошим значением» - то есть процесс nice о системных ресурсах).

Длина очереди определяет загрузку системы. Например, нагрузка 2,5 означает, что для каждой команды, с которой процессор может иметь дело с в реальном времени , имеется 2,5 инструкции.

В Linux, кстати, эта нагрузка рассчитана в 10 мс (по умолчанию).

Теперь на значения процентного значения использования ЦП:

Представьте, что у вас есть два такта, один называется t и представляет в реальном времени . Он измеряет секунду на каждую секунду. Другие часы, которые мы называем c. Он работает только в том случае, если есть обработка. Это означает, что только когда процесс вычисляет что-то, часы работают. Это также называется временем процессора. Каждый процесс в системе «получил» один из них.

Теперь использование процессора может быть рассчитано для одного процесса:

U = c/t = 0.5s / 1s = 0.5 [/g7]

или для всех процессов:

alt text [/g8]

На многоядерной машине это может привести к значению 3,9, конечно, поскольку

Wikipedia предоставляет этот пример:

Программное приложение, работающее на 6-процессорном компьютере UNIX, создает три UNIX процессов для выполнения требований пользователя. Каждый из этих трех процессов создает два потока. Работа программного приложения равномерно распределяется на 6 независимых потоков исполнения, созданных для приложения. Если нет ожиданий ресурсов, общее время процессора ожидается в шесть раз. Истекшее реальное время.

Вот небольшой фрагмент питона, который делает это

>>> import time
>>> t = time.time()
>>> c = time.clock()
>>> # the next line will take a while to compute
>>> tuple(tuple(i**0.2 for i in range(600)) for i in range(6000))
>>> print (time.clock() / (time.time() - t)) * 100, "%"
66.9384021612 %

В идеальном мире вы можете сделать вывод, что системная нагрузка составляет 100 - 66,93 = 33,1%. (Но на самом деле это было бы неправильно из-за сложных вещей, таких как ожидание ввода-вывода, расписание неэффективности и т. Д.)

В отличие от load , эти вычисления будут всегда приводит к значению от 0 до количества процессоров, то есть от 0 до 1 или от 0 до 100%. Теперь нет возможности различать машину, на которой выполняются три задачи, с использованием 100% -ного процессора, и машина, на которой запущено миллион задач, практически не работает ни на одной из них, также на 100%. Если вы, например, пытаетесь сбалансировать множество процессов на многих компьютерах, то использование процессора просто бесполезно. Нагрузка - это то, что вы хотите там.

Теперь на самом деле существует более одного из этих часов времени обработки. Например, для ввода / вывода требуется один. Таким образом, вы также можете рассчитать использование ресурсов ввода-вывода.

Возможно, это не помогло в отношении исходного вопроса, но я надеюсь, что это интересно. :)

22
ответ дан 6 August 2018 в 04:18

Как вы сами сказали, вы можете нажать H, чтобы показать пользовательские потоки.

Просто для будущей справки (и для удовольствия) давайте вычислим загрузку процессора!

Немного фона:

В современной операционной системе есть Планировщик. Он нацелен на то, чтобы все Процессы и их потоки получили достаточную долю вычислительного времени. Я не буду слишком много планировать (это действительно сложно). Но в конце есть что-то, называемое очередью run . Это означает, что все инструкции всех процессов выстраиваются в очередь до ожидания выполнения их очереди.

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

Сортировка в этой очереди связана с process ' Приоритет (также называемый «хорошим значением» - то есть процесс nice о системных ресурсах).

Длина очереди определяет загрузку системы. Например, нагрузка 2,5 означает, что для каждой команды, с которой процессор может иметь дело с в реальном времени , имеется 2,5 инструкции.

В Linux, кстати, эта нагрузка рассчитана в 10 мс (по умолчанию).

Теперь на значения процентного значения использования ЦП:

Представьте, что у вас есть два такта, один называется t и представляет в реальном времени . Он измеряет секунду на каждую секунду. Другие часы, которые мы называем c. Он работает только в том случае, если есть обработка. Это означает, что только когда процесс вычисляет что-то, часы работают. Это также называется временем процессора. Каждый процесс в системе «получил» один из них.

Теперь использование процессора может быть рассчитано для одного процесса:

U = c/t = 0.5s / 1s = 0.5 [/g7]

или для всех процессов:

alt text [/g8]

На многоядерной машине это может привести к значению 3,9, конечно, поскольку

Wikipedia предоставляет этот пример:

Программное приложение, работающее на 6-процессорном компьютере UNIX, создает три UNIX процессов для выполнения требований пользователя. Каждый из этих трех процессов создает два потока. Работа программного приложения равномерно распределяется на 6 независимых потоков исполнения, созданных для приложения. Если нет ожиданий ресурсов, общее время процессора ожидается в шесть раз. Истекшее реальное время.

Вот небольшой фрагмент питона, который делает это

>>> import time
>>> t = time.time()
>>> c = time.clock()
>>> # the next line will take a while to compute
>>> tuple(tuple(i**0.2 for i in range(600)) for i in range(6000))
>>> print (time.clock() / (time.time() - t)) * 100, "%"
66.9384021612 %

В идеальном мире вы можете сделать вывод, что системная нагрузка составляет 100 - 66,93 = 33,1%. (Но на самом деле это было бы неправильно из-за сложных вещей, таких как ожидание ввода-вывода, расписание неэффективности и т. Д.)

В отличие от load , эти вычисления будут всегда приводит к значению от 0 до количества процессоров, то есть от 0 до 1 или от 0 до 100%. Теперь нет возможности различать машину, на которой выполняются три задачи, с использованием 100% -ного процессора, и машина, на которой запущено миллион задач, практически не работает ни на одной из них, также на 100%. Если вы, например, пытаетесь сбалансировать множество процессов на многих компьютерах, то использование процессора просто бесполезно. Нагрузка - это то, что вы хотите там.

Теперь на самом деле существует более одного из этих часов времени обработки. Например, для ввода / вывода требуется один. Таким образом, вы также можете рассчитать использование ресурсов ввода-вывода.

Возможно, это не помогло в отношении исходного вопроса, но я надеюсь, что это интересно. :)

22
ответ дан 10 August 2018 в 10:32

Как вы сами сказали, вы можете нажать H, чтобы показать пользовательские потоки.

Просто для будущей справки (и для удовольствия) давайте вычислим загрузку процессора!

Немного фона:

В современной операционной системе есть Планировщик. Он нацелен на то, чтобы все Процессы и их потоки получили достаточную долю вычислительного времени. Я не буду слишком много планировать (это действительно сложно). Но в конце есть что-то, называемое очередью run . Это означает, что все инструкции всех процессов выстраиваются в очередь до ожидания выполнения их очереди.

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

Сортировка в этой очереди связана с process ' Приоритет (также называемый «хорошим значением» - то есть процесс nice о системных ресурсах).

Длина очереди определяет загрузку системы. Например, нагрузка 2,5 означает, что для каждой команды, с которой процессор может иметь дело с в реальном времени , имеется 2,5 инструкции.

В Linux, кстати, эта нагрузка рассчитана в 10 мс (по умолчанию).

Теперь на значения процентного значения использования ЦП:

Представьте, что у вас есть два такта, один называется t и представляет в реальном времени . Он измеряет секунду на каждую секунду. Другие часы, которые мы называем c. Он работает только в том случае, если есть обработка. Это означает, что только когда процесс вычисляет что-то, часы работают. Это также называется временем процессора. Каждый процесс в системе «получил» один из них.

Теперь использование процессора может быть рассчитано для одного процесса:

U = c/t = 0.5s / 1s = 0.5 [/g7]

или для всех процессов:

alt text [/g8]

На многоядерной машине это может привести к значению 3,9, конечно, поскольку

Wikipedia предоставляет этот пример:

Программное приложение, работающее на 6-процессорном компьютере UNIX, создает три UNIX процессов для выполнения требований пользователя. Каждый из этих трех процессов создает два потока. Работа программного приложения равномерно распределяется на 6 независимых потоков исполнения, созданных для приложения. Если нет ожиданий ресурсов, общее время процессора ожидается в шесть раз. Истекшее реальное время.

Вот небольшой фрагмент питона, который делает это

>>> import time
>>> t = time.time()
>>> c = time.clock()
>>> # the next line will take a while to compute
>>> tuple(tuple(i**0.2 for i in range(600)) for i in range(6000))
>>> print (time.clock() / (time.time() - t)) * 100, "%"
66.9384021612 %

В идеальном мире вы можете сделать вывод, что системная нагрузка составляет 100 - 66,93 = 33,1%. (Но на самом деле это было бы неправильно из-за сложных вещей, таких как ожидание ввода-вывода, расписание неэффективности и т. Д.)

В отличие от load , эти вычисления будут всегда приводит к значению от 0 до количества процессоров, то есть от 0 до 1 или от 0 до 100%. Теперь нет возможности различать машину, на которой выполняются три задачи, с использованием 100% -ного процессора, и машина, на которой запущено миллион задач, практически не работает ни на одной из них, также на 100%. Если вы, например, пытаетесь сбалансировать множество процессов на многих компьютерах, то использование процессора просто бесполезно. Нагрузка - это то, что вы хотите там.

Теперь на самом деле существует более одного из этих часов времени обработки. Например, для ввода / вывода требуется один. Таким образом, вы также можете рассчитать использование ресурсов ввода-вывода.

Возможно, это не помогло в отношении исходного вопроса, но я надеюсь, что это интересно. :)

22
ответ дан 13 August 2018 в 17:00
  • 1
    Я должен был бы включить значения неопределенности, потому что, используя этот простой метод, расчет, вероятно, будет отключен на ± 1%, но я не хотел слишком много скучать по всем . – Stefano Palazzo♦ 1 December 2010 в 13:40
  • 2
    Спасибо за урок. Я знал большую часть этого, но несколько вещей были более конкретными, чем то, что я узнал. – NightwishFan 1 December 2010 в 18:12