Как рассчитать нагрузку на ЦП?

Некоторые вещи, которые вы могли бы сделать, чтобы проверить, действительно ли ваша сеть проверяется Ubuntu:

1. Чтобы проверить вашу беспроводную карту и посмотреть, распознается ли она на аппаратном уровне:

lspci | grep -i wireless

Пример вывода, который позволит нам узнать, что это карта Intel 5300:

0c:00.0 Network controller: Intel Corporation PRO/Wireless 5300 AGN [Shiloh] Network Connection

Если ваша карта даже не проверена by lspci может быть беспроводной картой без драйверов, без сопоставленного идентификатора pci или настроек BIOS.

2. Проверьте, не заблокирована ли ваша беспроводная карта:

rfkill list

Пример вывода карты, что она мягко заблокирована:

0: phy0: Wireless LAN
    Soft blocked: yes
    Hard blocked: no

В этом случае беспроводная карта программно заблокирована и rfkill unblock 0 (ноль - индекс, цифра слева) должна сделать вашу карту доступной.

3. Проверить отсутствие прошивки:

dmesg | grep -i firmware - ваш друг. Проверьте наличие ошибок, которые могут быть связаны с беспроводным микропрограммным обеспечением, например, эта, которая показывает проблему с загрузкой микропрограммы Intel 7260:

iwlwifi 0000:04:00.0: Direct firmware load for iwlwifi-7260-17.ucode failed with error -2

Очевидно, что отсутствующая проблема с микропрограммой приведет к другим ошибкам. То же и с разными беспроводными адаптерами.

Дополнительная литература:

1
22.09.2017, 20:17
2 ответа
  1. @garethTheRed прав, вы запрашиваете две итерации вывода.

  2. Это зависит от того, что вы подразумеваете под «использованием процессора». Каждый элемент в строке представляет собой что-то свое :

    .
    • %us— время, проведенное в пользовательском режиме процессами со значением nice 0 или выше. Это включает в себя большую часть того, что делает большинство пользовательских приложений.
    • %sy— это время, проведенное в режиме ядра, которое не подпадает ни под одну другую область. В основном это время тратится на системные вызовы.
    • %ni— время нахождения в пользовательском режиме процессов со значением nice ниже 0. По сути, это фоновые задачи.
    • %id— это время, проведенное без дела. Оно должно равняться 100 минус сумма других значений.
    • %wa— это время, потраченное на ожидание завершения ввода-вывода, которое не тратится на другие действия. Сюда входит время, потраченное на ожидание чтения или записи данных на диск.
    • %hi— это время, затраченное в режиме ядра на обслуживание аппаратных прерываний. В большинстве хороших систем это должно быть близко к нулю.
    • %si— это время, затраченное в режиме ядра на обслуживание программного обеспечения и отложенные прерывания (на большинстве систем, в основном это сетевые прерывания ).
    • %st— время, когда система могла что-то запускать, но вместо этого была занята другая виртуальная машина. Это значение должно быть равно нулю, если только вы не используете виртуальные машины самостоятельно или не работаете на платформе облачного хостинга, такой как EC2, GCE, DigitalOcean или Linode. Он может не отображаться на некоторых системах, особенно на старых или не -системах Linux.

Согласно определениям большинства непрограммистов, загрузка ЦП системы равна сумме %us, %syи %ni(, и на самом деле старые системы UNIX отображают только эти значения ). Более точным утверждением было бы то, что оно равно сумме всего, кроме %id, %waи %st(, потому что ЦП буквально ничего не делает в этих состояниях ).

Используя примеры строк, которые вы привели, использование согласно второму определению будет :3,4%, 18,1%, 3,4% и 18,6%.

4
27.01.2020, 23:19
 command = "top -bn 2 -d 0.01 | grep '^Cpu' | tail -n 1 | gawk '{print $2+$4+$6}'" 

'''
The 1st iteration of top -b returns the percentages since boot. 
We need at least two iterations (-n 2) to get the current percentage. 
To speed things up, you can set the delay between iterations to 0.01. 
top splits CPU usage between user, system processes and nice processes, we want the sum of the three. 
Finally, you grep the line containing the CPU percentages and then use gawk to sum user, system and nice processes:

top -bn 2 -d 0.01 | grep '^Cpu' | tail -n 1 | gawk '{print $2+$4+$6}'
        -----  ------   -----------    ---------   ----------------------
        |      |           |             |             |------> add the values
        |      |           |             |--> keep only the 2nd iteration
        |      |           |----------------> keep only the CPU use lines
        |      |----------------------------> set the delay between runs
        |-----------------------------------> run twice in batch mode
'''
0
27.01.2020, 23:19

Теги

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