suchen
HeimBetrieb und InstandhaltungBetrieb und Wartung von LinuxLinux-Befehlssammlung: Systemlast verstehen (organisiert und gemeinsam genutzt)

本篇文章给大家带来了Linux中负载的概念与问题诊断方法相关知识,其中包括了负载是什么以及线程状态等,希望对大家有帮助。

Linux-Befehlssammlung: Systemlast verstehen (organisiert und gemeinsam genutzt)

一般在类unix系统上,都会有系统负载(load average)这个指标,用来形容系统的繁忙程度,值越大则代表系统越繁忙。  

查看负载 

$ uptime
19:59:57 up 29 days,  7:08,  1 user,  load average: 0.57, 0.26, 0.18

我们关注load average后的3个值,分别代表1分钟、5分钟、15分钟的系统平均负载,如果1分钟值>5分钟值>15分钟值,则代表近15分钟内系统压力越来越大,反之亦然。 

同样,在top命令的第一行,也能看到系统负载,它的含义和uptime是一样的。 

负载是什么 

一般来说,系统线程基本都在这3个状态上:运行中,可运行,阻塞等待,其中,运行中的线程正在CPU上跑,可运行的线程等待CPU调度,而阻塞的线程等待锁释放或io完成。 

在传统unix系统上(如BSD),系统负载由正在运行的线程以及可运行的线程这2个部分组成。 

它能很好的说明CPU的饱和情况,比如4核的CPU,如果负载一直高于4,那说明CPU资源饱和了。 

而Linux扩大了负载的定义,如下: 

Linux负载由正在运行的线程和可运行的线程,以及D状态的线程(一般是等待io完成)这3个部分组成。 

因为Linux认为,虽然D状态的线程并不消耗CPU资源,但是它会消耗磁盘、网卡等硬件资源以及锁这样的软件资源,因此它也应该被用来计算系统负载,想来也合理,毕竟系统负载是用来描述整个系统的繁忙程度的,而不仅仅是CPU的。 

线程状态D

在Linux里面,线程有如下常见状态: 

  • R: 正在运行或可运行状态  

  • S: 睡眠状态,被阻塞等待唤醒  

  • D: 不可中断睡眠状态,一般是等待io完成   

这里面的R与D状态的线程会影响系统负载,因此,当系统负载较高时,可以通过如下命令了解是哪些线程导致的: 

ps -eLo pid,tid,stat,comm | grep -E " R|D"

小实验:将系统负载升到100

# 使用vfork函数创建一个子进程,子进程如果不调用exec系统调用,它的状态会一直是D。

$ cat uninterruptible.c 
int main() {
    vfork();
    sleep(600);
    return 0;
}
# 编译成可执行程序
$ gcc -o uninterruptible uninterruptible.c
# 运行100个程序
$ for i in {1..100}; do ./uninterruptible &; done

等待1分钟,就会发现系统负载升到了快100,如下:

$ uptime
20:24:42 up 29 days,  7:32,  1 user,  load average: 99.94, 74.82, 35.87
# 可以看到很多D状态的进程
$ ps -eLo pid,tid,stat,pcpu,wchan:32,comm | grep " D"
3774195 3774195 D     0.0 do_fork                          uninterruptible
3774196 3774196 D     0.0 do_fork                          uninterruptible
3774197 3774197 D     0.0 do_fork                          uninterruptible
3774198 3774198 D     0.0 do_fork                          uninterruptible

如上,通过ps命令可以看到线程状态,还有一个wchan字段,它显示的是线程当前被阻塞在什么内核函数上,这能看出一些蛛丝马迹。 

另外,通过/proc/sysrq-trigger可以看到D线程阻塞时的代码路径,如下: 

# 写入一个w即可,需要root权限执行
$ echo w > /proc/sysrq-trigger
# 然后内核会把D状态线程调用栈输出到内核日志,这可以通过dmesg查看
$ dmesg

Linux-Befehlssammlung: Systemlast verstehen (organisiert und gemeinsam genutzt)

这里就能很清楚的看到,是由于vfork系统调用引起的负载上升。 

之前介绍过bcc工具集里的offcputime工具,它可以用来绘制offcpu火焰图,同样的,诊断高负载问题时,也可以用这个工具,传一个参数,让其只关注D状态线程的offcpu行为即可,如下: 

# ubuntu安装bcc工具集
$ sudo apt install bpfcc-tools
# 使用root身份进入bash
$ sudo bash
# --state 2用于指定抓取TASK_UNINTERRUPTIBLE即D状态线程的offcpu栈
$ offcputime-bpfcc -K --state 2 -f 60  > d_state_offcpu_stack.out
# 绘制为offcpu火焰图
$ awk '{ print $1, $2 / 1000 }' d_state_offcpu_stack.out | ./FlameGraph/flamegraph.pl --color=io --countname=ms > d_state_offcpu.svg

Linux-Befehlssammlung: Systemlast verstehen (organisiert und gemeinsam genutzt)

相关推荐:《Linux视频教程

Das obige ist der detaillierte Inhalt vonLinux-Befehlssammlung: Systemlast verstehen (organisiert und gemeinsam genutzt). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Dieser Artikel ist reproduziert unter:掘金. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Mastering Linux -Operationen: Ein praktischer LeitfadenMastering Linux -Operationen: Ein praktischer LeitfadenApr 12, 2025 am 12:10 AM

Der Grund für das Beherrschen von Linux -Operationen ist die breite Palette von Anwendungsszenarien und leistungsfähigen Funktionen. 1) Linux ist für Entwickler, Systemadministratoren und Technologie -Enthusiasten geeignet und wird für Servermanagement, eingebettete Systeme und Containerisierungstechnologien verwendet. 2) Lernen von Linux kann mit der Dateisystemstruktur, der Shell -Verwendung, der Benutzerbereitstellung und dem Prozessmanagement beginnen. 3) Die Linux -Befehlszeile ist das Kernwerkzeug, das Befehle über die Shell wie LS, MKDIR, CD usw. ausführt und die Umleitung und Pipeline -Vorgänge unterstützt. 4) Die erweiterte Verwendung umfasst das Schreiben automatisierter Skripte wie Sicherungsskripte, mit TAR -Befehlen und bedingten Urteilen. 5) Zu den häufigen Fehlern gehören Berechtigungen, Pfade und Syntaxprobleme, die durch Echo, SET-X und $ debuggen werden können. 6) Vorschläge zur Leistungsoptimierung

Die 5 Säulen von Linux: Verständnis ihrer RollenDie 5 Säulen von Linux: Verständnis ihrer RollenApr 11, 2025 am 12:07 AM

Die fünf Säulen des Linux -Systems sind: 1. Kernel, 2. Systembibliothek, 3. Shell, 4. Dateisystem, 5. Systemwerkzeuge. Der Kernel verwaltet Hardware -Ressourcen und bietet grundlegende Dienste an. Die Systembibliothek bietet vorkompilierte Funktionen für Anwendungen. Die Shell ist die Schnittstelle, in der Benutzer mit dem System interagieren können. Das Dateisystem organisiert und speichert Daten. und Systemwerkzeuge werden für das Systemmanagement und die Wartung verwendet.

Linux -Wartungsmodus: Werkzeuge und TechnikenLinux -Wartungsmodus: Werkzeuge und TechnikenApr 10, 2025 am 09:42 AM

In Linux -Systemen kann der Wartungsmodus eingegeben werden, indem eine bestimmte Taste beim Start gedrückt wird oder einen Befehl wie "sudosystemctlrescue" verwendet. Der Wartungsmodus ermöglicht es Administratoren, die Wartung und Fehlerbehebung ohne Störung durch die Systeme durchzuführen, z. B. das Reparieren von Dateisystemen, das Zurücksetzen von Kennwörtern, das Patch -Sicherheitslücken usw.

Key Linux -Operationen: Ein AnfängerhandbuchKey Linux -Operationen: Ein AnfängerhandbuchApr 09, 2025 pm 04:09 PM

Linux -Anfänger sollten grundlegende Vorgänge wie Dateiverwaltung, Benutzerverwaltung und Netzwerkkonfiguration beherrschen. 1) Dateiverwaltung: Verwenden Sie MKDIR-, Touch-, LS-, RM-, MV- und CP -Befehle. 2) Benutzerverwaltung: Verwenden Sie die Befehle von UserAdd-, PassWD-, UserDel- und UsMod -Befehlen. 3) Netzwerkkonfiguration: Verwenden Sie IFConfig-, Echo- und UFW -Befehle. Diese Vorgänge sind die Grundlage für das Linux -Systemmanagement, und das Beherrschen kann das System effektiv verwalten.

Wie benutze ich Sudo, um Benutzern in Linux erhöhte Berechtigungen zu gewähren?Wie benutze ich Sudo, um Benutzern in Linux erhöhte Berechtigungen zu gewähren?Mar 17, 2025 pm 05:32 PM

In dem Artikel wird erläutert, wie die Sudo -Privilegien in Linux verwaltet werden, einschließlich Gewährung, Widerruf und Best Practices für Sicherheitsvorschriften. Der Hauptaugenmerk liegt auf der sicheren Bearbeitung /etc /sudoers und der Begrenzung des Zugangs. Charakterzahl: 159

Wie implementiere ich die Zwei-Faktor-Authentifizierung (2FA) für SSH in Linux?Wie implementiere ich die Zwei-Faktor-Authentifizierung (2FA) für SSH in Linux?Mar 17, 2025 pm 05:31 PM

Der Artikel enthält eine Anleitung zum Einrichten der Zwei-Faktor-Authentifizierung (2FA) für SSH unter Linux unter Verwendung von Google Authenticator, Detaillierung der Installations-, Konfigurations- und Fehlerbehebungsschritte. Es unterstreicht die Sicherheitsvorteile von 2FA, wie z. B. die verstärkte SEC

Wie überwache ich die Systemleistung unter Linux mithilfe von Tools wie Top, HTOP und VMSTAT?Wie überwache ich die Systemleistung unter Linux mithilfe von Tools wie Top, HTOP und VMSTAT?Mar 17, 2025 pm 05:28 PM

In dem Artikel werden die Leistung von Top, HTOP und VMSTAT zur Überwachung der Systemleistung der Linux -Systeme erläutert und deren eindeutige Funktionen und Anpassungsoptionen für eine effektive Systemverwaltung beschrieben.

Wie verwalte ich Softwarepakete unter Linux mithilfe von Paketmanagern (APT, YUM, DNF)?Wie verwalte ich Softwarepakete unter Linux mithilfe von Paketmanagern (APT, YUM, DNF)?Mar 17, 2025 pm 05:26 PM

In Artikel werden die Verwaltung von Softwarepaketen unter Linux mithilfe von APT, YUM und DNF besprochen, wobei die Installation, Updates und Entfernungen behandelt werden. Es vergleicht ihre Funktionen und Eignung für verschiedene Verteilungen.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

mPDF

mPDF

mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

EditPlus chinesische Crack-Version

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion