[LINUX] So ermitteln Sie die Anzahl der CPUs ohne den Befehl sar

0. Einleitung

Ich habe beschlossen, die Anzahl der CPUs zu überprüfen, aber ich habe beschlossen, sie in einer Umgebung zu überprüfen, in der der normalerweise verwendete Befehl "sar" nicht verwendet werden kann. Deshalb habe ich ihn gegoogelt und werde ihn zusammenfassen.

Darüber hinaus ist das Ergebnis der Ausführung von sar in der Umgebung, in der sysstat installiert ist und die sar-Einstellungen abgeschlossen sind, wie folgt. In diesem Artikel werden wir die folgenden (4 CPU) behandeln, wie man ohne Verwendung des Befehls sar prüft.

[root@$hostname ~]# sar
Linux (Abkürzung)	(4 CPU)

11:03:41     LINUX RESTART	(4 CPU)

11:10:01 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
11:20:01 AM     all      0.00      0.00      0.01      0.00      0.00     99.99
Average:        all      0.00      0.00      0.01      0.00      0.00     99.99
[root@$hostname ~]# 

1. Inhaltsverzeichnis

―― 2. Informationen zur Überprüfungsumgebung / -version --3 [Methode 1] Überprüfen Sie die Anzahl der CPUs mit dem Befehl lscpu ―― 4. [Methode 2] Überprüfen Sie die Anzahl der CPUs, indem Sie reproduzieren, was sar tut ―― 5. Wie zählt sar CPU [0-9] +? ―― 6. Welche CPU kann mit sar bestätigt werden? ―― 7. Beziehung zwischen dem logischen Prozessor und der Anzahl der physischen Kerne, Sockets und Threads --8 [beiseite] Vergleich von sar -r Befehl und freiem Befehl ―― 9. Referenz

2. Informationen zur Überprüfungsumgebung / -version

/etc/cron.d/sysstat



# Run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib64/sa/sa1 1 1
# 0 * * * * root /usr/lib64/sa/sa1 600 6 &
# Generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib64/sa/sa2 -A

3. [Methode 1] Überprüfen Sie die Anzahl der CPUs mit dem Befehl lscpu

Diese Methode ist die einfachste.

[root@$hostname ~]# lscpu | grep -E '^Thread|^Core|^Socket|^CPU\('
CPU(s):              4
Thread(s) per core:  1
Core(s) per socket:  4
Socket(s):           1
[root@$hostname ~]# 

Quelle: sar Installations- und Konfigurationsverfahren

4. [Methode 2] Überprüfen Sie die Anzahl der CPUs, indem Sie reproduzieren, was sar tut

Der Grund wird im nächsten Kapitel behandelt, aber es stellt sich heraus, dass sar die Anzahl der CPUs in / sys / Geräte / System / CPU / CPU [0-9] + zählt.

[root@$hostname ~]# ls /sys/devices/system/cpu/ | grep -E "cpu[0-9]+"
cpu0
cpu1
cpu2
cpu3
[root@$hostname ~]# ls /sys/devices/system/cpu/ | grep -E "cpu[0-9]+" | wc -l
4
[root@$hostname ~]# 

5. Wie zählt sar CPU [0-9] +?

Wie zählt sar nun CPU [0-9] +? Hier habe ich den Quellcode von sar untersucht. Der Quellcode ist auf github verfügbar. Wie unten gezeigt, werden der Teil, in dem "CPU [0-9] + gezählt wird", und der Teil, in dem die Zielpfadzählung "CPU [0-9] +" definiert ist, extrahiert.

--cpu [0-9] + wird gezählt

/*
 ***************************************************************************
 * Count number of processors in /sys.
 *
 * IN:
 * @highest	If set to TRUE, then look for the highest processor number.
 * 		This is used when eg. the machine has 4 CPU numbered 0, 1, 4
 *		and 5. In this case, this procedure will return 6.
 *
 * RETURNS:
 * Number of processors (online and offline).
 * A value of 0 means that /sys was not mounted.
 * A value of N (!=0) means N processor(s) (cpu0 .. cpu(N-1)).
 ***************************************************************************
 */
int get_sys_cpu_nr(int highest)
{
	DIR *dir;
	struct dirent *drd;
	struct stat buf;
	char line[MAX_PF_NAME];
	int num_proc, proc_nr = -1;

	/* Open relevant /sys directory */
	if ((dir = opendir(SYSFS_DEVCPU)) == NULL)
		return 0;

	/* Get current file entry */
	while ((drd = readdir(dir)) != NULL) {

		if (!strncmp(drd->d_name, "cpu", 3) && isdigit(drd->d_name[3])) {
			snprintf(line, MAX_PF_NAME, "%s/%s", SYSFS_DEVCPU, drd->d_name);
			line[MAX_PF_NAME - 1] = '\0';
			if (stat(line, &buf) < 0)
				continue;
			if (S_ISDIR(buf.st_mode)) {
				if (highest) {
					sscanf(drd->d_name + 3, "%d", &num_proc);
					if (num_proc > proc_nr) {
						proc_nr = num_proc;
					}
				}
				else {
					proc_nr++;
				}
			}
		}
	}

	/* Close directory */
	closedir(dir);

	return (proc_nr + 1);
}

Quelle: [https://github.com/sysstat/sysstat/blob/master/count.c] (https://github.com/sysstat/sysstat/blob/master/count.c)

Der C-Code selbst ist nicht sehr detailliert, daher kann er falsch sein, aber ich denke, er zählt wahrscheinlich "CPU [0-9] +" unter "SYSFS_DEVCPU".

| /* Files */ |
|:--|:--|:--|:--|
| #define STAT |  |  | PRE "/proc/stat" |
(Abkürzung)
| #define SYSFS_DEVCPU |  | PRE "/sys/devices/system/cpu" |
(Abkürzung)
| #define SLASH_DEV |  | PRE "/dev/" |

出所:github.com/sysstat/sysstat/blob/master/common.h

6. Welche CPU kann mit sar bestätigt werden?

Solange Sie sich auf die Kerneldokumentation beziehen, können Sie sich die CPU vorstellen, die von sar als logischer Prozessor bestätigt werden kann.

What: /sys/devices/system/cpu/ (Weggelassen) Description: A collection of both global and individual CPU attributes Individual CPU attributes are contained in subdirectories named by the kernel's logical CPU number, e.g.: /sys/devices/system/cpu/cpu#/

Quelle: [Kerneldokumentation sysfs-Geräte-System-CPU] (https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-devices-system-cpu)

7. Beziehung zwischen dem logischen Prozessor und der Anzahl der physischen Kerne, Sockets und Threads

Zu diesem Zeitpunkt habe ich lscpu ausgeführt und war neugierig auf die Beziehung zwischen dem angezeigten logischen Prozessor und der Anzahl der physischen Kerne, Sockets und Threads. Deshalb habe ich sie untersucht.

Im folgenden Blog wird die Beziehung zwischen dem logischen Prozessor und der Anzahl der physischen Kerne, Sockets und Threads anhand des Ausführungsergebnisses des Befehls lscpu vorgestellt.

Logischer Prozessor = Anzahl der CPU-Sockel x Anzahl der physischen Kerne / Socket x Anzahl der Threads / Anzahl der physischen Kerne

The total number of logical cores = CPU sockets × physical cores per socket × threads per physical core. Therefore, the computer has 2 × 8 × 2 = 32 logical cores in total. CPU(s): 32

Quelle: [Wie viele physische und logische CPU-Kerne in Ihrem Computer | Wei Bai White 巍](https://baiweiblog.wordpress.com/2017/10/27/how-many-physical-and-logical-cpu-cores- in deinem Computer /)

[root@$hostname ~]# lscpu | grep -E '^Thread|^Core|^Socket|^CPU\('
CPU(s):              4    #Logischer Prozessor
Thread(s) per core:  1    #Anzahl der Themen/Anzahl der physischen Kerne
Core(s) per socket:  4    #Anzahl der physischen Kerne/Steckdose
Socket(s):           1    #Anzahl der CPU-Buchsen
[root@$hostname ~]# 

Übrigens habe ich neulich in [Versuchen und Verstehen], wie Linux funktioniert ~ Grundkenntnisse über Betriebssystem und Hardware, die durch Experimente und Illustrationen erlernt wurden gelesen. Die Erklärung des Unterschieds zwischen dem Befehl sar -r und dem Befehl free war leicht zu verstehen, also lassen Sie mich sie vorstellen.

8. [Nebenbei] Vergleich von sar -r Befehl und freiem Befehl

Feld des freien Befehls sar -r Befehlsfeld Inhalt
total Unzutreffend Die Gesamtmenge des im System installierten Speichers.
free kbmemfree Scheinbarer freier Speicher.
buff/cache kbbuffers + kbcached Speicher, der vom Puffercache und Seitencache verwendet wird. Wenn dem System der freie Speicherplatz ausgeht, wird er vom Kernel freigegeben.
available Unzutreffend Praktisch freier Speicher. Der Wert des Felds plus die Größe des Speicherbereichs im Kernel, der freigegeben werden kann, wenn nicht genügend freier Speicher vorhanden ist. Der Speicher, der freigegeben werden kann, umfasst den größten Teil des Puffer- und Seitencaches sowie einen Teil des anderen Kernelspeichers.

Referenz: [Versuchen und verstehen] Funktionsweise von Linux ~ Grundkenntnisse über Betriebssystem und Hardware, die durch Experimente und Illustrationen erlernt wurden (Teilweise vom Autor geändert)

** Ergebnis der freien Befehlsausführung **

[root@$hostname ~]# free
              total        used        free      shared  buff/cache   available
Mem:       16256588      239692    14588360       24948     1428536    15692440
Swap:             0           0           0

** Ergebnis der Ausführung des Befehls sar -r **

[root@$hostname ~]# sar -r | head
Linux (Abkürzung)	(4 CPU)

11:03:41     LINUX RESTART	(4 CPU)

11:10:01 AM kbmemfree   kbavail kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
11:20:01 AM  14581020  15690700   1675568     10.31      2716   1333316    311968      1.92    399160    993580         0
11:30:01 AM  14580936  15690652   1675652     10.31      2716   1333324    296508      1.82    399204    993332         0
11:40:01 AM  14580064  15689796   1676524     10.31      2716   1333328    315288      1.94    400016    993336         0
11:50:01 AM  14581008  15690804   1675580     10.31      2716   1333336    315288      1.94    399880    992556        20
12:00:01 PM  14580612  15690412   1675976     10.31      2716   1333344    323312      1.99    401148    991320         0
[root@$hostname ~]# 

PS: Ich mache auch Twitter, also bin ich froh, wenn du mir folgst :)

@gkzvoice

Was ich auf P.P.S. fukabori.fm gehört habe

Auf fukabori.fm gab es ein Thema im Zusammenhang mit cpuinfo, das in diesem Artikel behandelt wurde, also habe ich es ein wenig transkribiert.

Ich kann mit dem Tippen nicht Schritt halten und es ist kaputt.

Linux kann wie ein Verzeichnis oder eine Datei behandelt werden, in der Hardwareinformationen wie / dev gespeichert sind. Apropos Linux, CPU usw. Sie können verschiedene Informationen wie eine Datei behandeln, die keine Datei ist. Und es kann mithilfe eines Mechanismus namens Pipes in nachfolgende Programme übertragen werden, egal ob es sich um eine Datei oder etwas anderes als eine Datei handelt. Behandeln Sie alles wie eine Datei und verbinden Sie den Datenein- und -ausgang mit Standardeingängen und -ausgängen. Überlassen wir die schwierigen Dinge der nachfolgenden Verarbeitung. Die Designphilosophie ist mit verschiedenen Dingen verbunden. Es ist eine starke Einschränkung, dass dies auf die gleiche Weise behandelt werden kann. Zeigt eine hohe Wiederverwendbarkeit.

Quelle: 28. Ästhetisches Auge der Technologieauswahl (1) w / twada

Recommended Posts

So ermitteln Sie die Anzahl der CPUs ohne den Befehl sar
So finden Sie die optimale Anzahl von Clustern für k-means
So finden Sie den Bereich des Boronoi-Diagramms
[Circuit x Python] So ermitteln Sie die Übertragungsfunktion eines Schaltkreises mit Lcapy
Finden Sie heraus, wie Sie eine Datei mit einer bestimmten Anzahl von Zeilen gleichmäßig teilen können
Wie man die Portnummer des xinetd-Dienstes kennt
So schreiben Sie eine GUI mit dem Befehl maya
Projecet Euler 12 Ermitteln Sie die Anzahl der Brüche ohne Division.
So ermitteln Sie die Anzahl der Stellen in Python
So finden Sie heraus, welcher Prozess den localhost-Port verwendet, und stoppen ihn
Wagen Sie es, das Formular ohne Selen auszufüllen
Maya | Ermitteln Sie die Anzahl der Polygone im ausgewählten Objekt
Python - Ermitteln Sie die Anzahl der Gruppen im regulären Ausdruck
So erhöhen Sie die Anzahl der Datensatzbilder für maschinelles Lernen
So ermitteln Sie den Skalierungskoeffizienten eines bipolaren Wavelets
Wie man die Anzahl der GPUs aus Python kennt ~ Hinweise zur Verwendung von Multiprocessing mit pytorch ~
So führen Sie den Befehl sed mit der for-Anweisung mehrmals aus
Informieren Sie sich über das Alter und die Anzahl der Gewinne von Präfekturgouverneuren im ganzen Land
ABC170 E - So lösen Sie ohne Verwendung mehrerer intelligenter Säuglinge
[EC2] So installieren Sie Chrome und den Inhalt jedes Befehls
So ermitteln Sie die Speicheradresse des Pandas-Datenrahmenwerts
So geben Sie das Ausgabeergebnis des Linux-Befehls man in eine Datei aus
So überwachen Sie den Ausführungsstatus von sqlldr mit dem Befehl pv
So überprüfen Sie die Version von Django
[Linux] Verwendung des Befehls echo
Berechnen Verwenden Sie% des Befehls df
Migemo-Version des Befehls: find,: mfind
So setzen Sie eine Zeilennummer am Anfang einer CSV-Datei
So spielen Sie ein Video ab, während Sie die Anzahl der Bilder ansehen (Mac)
[Abgeschlossene Version] Versuchen Sie, die Anzahl der Einwohner der Stadt anhand der Adressliste mit Python herauszufinden
So übergeben Sie das Ergebnis der Ausführung eines Shell-Befehls in einer Liste in Python
So berechnen Sie die Volatilität einer Marke
Die Hand von "Millijan" durch Kombinationsoptimierung finden
So finden Sie heraus, welche Art von Datei in S3 in Python gespeichert ist
So zählen Sie die Anzahl der Elemente in Django und geben sie in die Vorlage aus
Python: Tipps zum Anzeigen eines Arrays (einer Liste) mit einem Index (wie man herausfindet, welche Nummer ein Element eines Arrays ist)
Finden Sie die Anzahl der Tage in einem Monat
Ein Memorandum zur Ausführung des Befehls! Sudo magic in Jupyter Notebook
So ermitteln Sie den Koeffizienten der ungefähren Kurve, die in Python durch die Scheitelpunkte verläuft
Finden Sie den Tag nach Datum / Uhrzeit heraus
Eine Einführung in die Datenanalyse mit Python - Um die Anzahl der Videoansichten zu erhöhen -
So identifizieren Sie die Systemrufnummer ausyscall
Bestimmen Sie die Anzahl der Klassen mithilfe der Starges-Formel
So finden Sie die Korrelation für kategoriale Variablen
Ich habe untersucht, wie der Arbeitsablauf mit Excel x Python optimiert werden kann
Ich habe untersucht, wie der Arbeitsablauf mit Excel x Python ④ optimiert werden kann
Wie identifiziere ich das Element mit der geringsten Anzahl von Zeichen in einer Python-Liste?
Ich habe versucht herauszufinden, wie der Arbeitsablauf mit Excel x Python optimiert werden kann
So vermeiden Sie die Cut-Off-Beschriftung des Diagramms, das vom Plotsystemmodul mit matplotlib erstellt wurde
So starten Sie in Atom geschriebenen Code mit einem Befehl, ohne teminal zu starten
Ich habe untersucht, wie der Arbeitsablauf mit Excel x Python optimiert werden kann
Wie man den Satz von Persival mit Matplotlib und der Fourier-Transformation (FFT) von scipy bestätigt
Ermitteln Sie die maximale Anzahl von Zeichen in mehrzeiligem Text, die in einem Datenrahmen gespeichert sind
Ich habe Python verwendet, um mich über die Rollenauswahl der 51 "Yachten" in der Welt zu informieren.
Befehl zum Überprüfen der Gesamtzahl der physischen CPU-Kerne / logischen Kerne / physischen Speicher auf dem Mac
Suchen Sie eine Richtlinie für die Anzahl der Prozesse / Threads, die auf dem Anwendungsserver festgelegt werden sollen
So zählen Sie die Anzahl der Vorkommen jedes Elements in der Liste in Python mit der Gewichtung
Ich habe untersucht, wie der Arbeitsablauf mit Excel x Python optimiert werden kann
So erstellen Sie einen Artikel über die Befehlszeile