Як ви самі сказали, ви можете натиснути, Hщоб показати потоки користувачів.
Просто для подальшої довідки (і для розваги) давайте розрахуємо використання процесора!
Трохи фону:
У сучасній операційній системі є Scheduler. Він спрямований на те, щоб усі Процеси та їх нитки отримували справедливу частку часу на обчислення. Я не буду надто сильно вступати в планування (це дуже складно). Але врешті-решт є щось, що називається чергою запуску . Тут викладені всі вказівки всіх процесів, щоб дочекатися їх черги.
Будь-який процес ставить свої "завдання" на чергу запуску, і як тільки процесор готовий, він вискакує їх і виконує їх. Наприклад, коли програма переходить у режим сну, наприклад, вона видаляється з черги запуску та повертається до "кінця рядка", як тільки вона буде готова знову запуститися.
Сортування за цією чергою має відношення до пріоритету процесів (також називається "приємне значення" - тобто процес приємний щодо системних ресурсів).
Довжина черги визначає Навантаження системи. Наприклад, завантаження 2,5 означає, що є 2,5 інструкції для кожної інструкції, з якою CPU може працювати в режимі реального часу .
У Linux, до речі, це навантаження обчислюється в інтервалах 10 мс (за замовчуванням).
Тепер про відсоткові значення використання процесора:
Уявіть, у вас є два годинники, один називається, t
і він представляє реальний час . Він вимірює секунду на кожну секунду. Інший годинник ми дзвонимо c
. Вона запускається лише в тому випадку, якщо є обробка. Це означає, що тільки коли процес щось обчислює, годинник працює. Це також називається час процесора. Кожен процес у системі 'отримав' один із них.
Тепер використання процесора може бути обчислено для одного процесу:
або для всіх процесів:
На багатоядерній машині це, звичайно, може призвести до значення 3,9, оскільки процесор може обчислювати обчислення, що варті чотирьох секунд щосекунди, якщо його використовувати бездоганно.
Вікіпедія надає такий приклад:
Програмне забезпечення, що працює на 6-центральному процесорі UNIX, створює три процеси UNIX для виконання вимог користувача. Кожен із цих трьох процесів створює дві нитки. Робота програмного забезпечення рівномірно розподілена на 6 незалежних потоках виконання, створених для програми. Якщо зачекання ресурсів не зачекане, очікується, що загальний час процесора в 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%. (Насправді це було б неправильно через складні речі, такі як очікування вводу-виводу, планування неефективності тощо)
На відміну від навантаження , ці обчислення завжди призводять до значення між 0 і кількістю процесорів, тобто від 0 до 1 або від 0 до 100%. Зараз немає можливості розмежовувати машину, яка виконує три завдання, використовуючи 100% процесор, і машину, яка виконує мільйон завдань, отримуючи ледь будь-яку роботу на будь-якій одній з них, також на 100%. Якщо ви, наприклад, намагаєтесь збалансувати купу процесів на багатьох комп’ютерах, використання процесора поруч із марною. Навантаження - це те, що ви хочете там.
Зараз насправді існує більше одного з таких годин обробки часу. Наприклад, є один для очікування вводу / виводу. Таким чином, ви також можете розрахувати використання ресурсів вводу / виводу.
Це може бути не корисним щодо початкового питання, але я сподіваюся, що це цікаво. :)