[LINUX] Comment connaître le nombre de processeurs sans utiliser la commande sar

0. Introduction

J'ai décidé de vérifier le nombre de processeurs, mais j'ai décidé de le vérifier dans un environnement où la commande sar que j'utilise habituellement ne peut pas être utilisée, donc je l'ai googlé, donc je vais le résumer.

De plus, le résultat de l'exécution de sar dans l'environnement où sysstat est installé et les paramètres sar sont terminés est le suivant. Dans cet article, nous allons couvrir ce qui suit (4 CPU) comment vérifier sans utiliser la commande sar.

[root@$hostname ~]# sar
Linux (Abréviation)	(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. Table des matières

―― 2. Environnement de vérification / informations sur la version --3 [Méthode 1] Vérifiez le nombre de processeurs à l'aide de la commande lscpu ―― 4. [Méthode 2] Vérifiez le nombre de processeurs en reproduisant ce que fait Sar ―― 5. Comment sar compte-t-il le CPU [0-9] +? ―― 6. Quelle est la CPU qui peut être confirmée avec sar? ―― 7. Relation entre le processeur logique et le nombre de cœurs physiques, de sockets et de threads --8 [A part] Comparaison de la commande sar -r et de la commande libre ―― 9. Référence

2. Environnement de vérification / informations sur la 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. [Méthode 1] Vérifiez le nombre de processeurs à l'aide de la commande lscpu

Cette méthode est la plus simple.

[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 ~]# 

Source: procédure d'installation et de configuration du sar

4. [Méthode 2] Vérifiez le nombre de processeurs en reproduisant ce que fait sar

La raison sera traitée dans le chapitre suivant, mais il s'avère que sar compte le nombre de CPU dans / sys / devices / system / cpu / cpu [0-9] +.

[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. Comment sar compte-t-il le CPU [0-9] +?

Maintenant, comment sar compte-t-il CPU [0-9] +? Ici, j'ai étudié le code source de sar. Le code source est disponible sur github. Comme indiqué ci-dessous, la partie où «cpu [0-9] + est compté» et la partie où le chemin cible comptant «cpu [0-9] + est défini» sont extraites.

--cpu [0-9] + est compté

/*
 ***************************************************************************
 * 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);
}

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

Le code C lui-même n'est pas très détaillé, donc il est peut-être faux, mais je pense qu'il compte probablement cpu [0-9] + sous SYSFS_DEVCPU.

--cpu [0-9] + Le chemin à compter

| /* Files */ |
|:--|:--|:--|:--|
| #define STAT |  |  | PRE "/proc/stat" |
(Abréviation)
| #define SYSFS_DEVCPU |  | PRE "/sys/devices/system/cpu" |
(Abréviation)
| #define SLASH_DEV |  | PRE "/dev/" |

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

6. Quelle est la CPU qui peut être confirmée avec sar?

Tant que vous vous référez à la documentation du noyau, vous pouvez penser au processeur qui peut être confirmé par sar comme un processeur logique.

What: /sys/devices/system/cpu/ (Omis) 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#/

Source: [documentation du noyau sysfs-devices-system-cpu] (https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-devices-system-cpu)

7. Relation entre le processeur logique et le nombre de cœurs physiques, de sockets et de threads

À ce stade, j'ai exécuté lscpu et j'étais curieux de connaître la relation entre le processeur logique affiché et le nombre de cœurs physiques, de sockets et de threads, alors je l'ai étudié.

Le blog suivant présente la relation entre le processeur logique et le nombre de cœurs physiques, de sockets et de threads en prenant le résultat de l'exécution de la commande lscpu comme exemple.

Processeur logique = nombre de sockets cpu x nombre de cœurs physiques / socket x nombre de threads / nombre de cœurs physiques

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

Source: [Combien de cœurs de processeur physiques et logiques dans votre ordinateur | Wei Bai White 巍](https://baiweiblog.wordpress.com/2017/10/27/how-many-physical-and-logical-cpu-cores- dans-votre-ordinateur /)

[root@$hostname ~]# lscpu | grep -E '^Thread|^Core|^Socket|^CPU\('
CPU(s):              4    #Processeur logique
Thread(s) per core:  1    #Le nombre de fils/Nombre de cœurs physiques
Core(s) per socket:  4    #Nombre de cœurs physiques/prise
Socket(s):           1    #Nombre de prises cpu
[root@$hostname ~]# 

Au fait, dans [Essayez de comprendre] Comment fonctionne Linux ~ Connaissance de base du système d'exploitation et du matériel acquise grâce à des expériences et des illustrations, j'ai lu l'autre jour. L'explication de la différence entre la commande sar -r et la commande libre `était facile à comprendre, alors laissez-moi vous la présenter.

8. [A part] Comparaison de la commande sar -r et de la commande libre

champ de commande libre sar -champ de commande r Contenu
total N'est pas applicable La quantité totale de mémoire installée dans le système.
free kbmemfree Mémoire libre apparente.
buff/cache kbbuffers + kbcached Mémoire utilisée par le cache de tampon et le cache de page. Lorsque le système manque de mémoire libre, il sera libéré par le noyau.
available N'est pas applicable Mémoire pratiquement libre. La valeur du champ plus la taille de la zone de mémoire dans le noyau qui peut être libérée lorsqu'il n'y a pas assez de mémoire libre. La mémoire qui peut être libérée comprend la majeure partie du cache tampon et du cache de page, ainsi qu'une partie de la mémoire du noyau.

Référence: [Essayer et comprendre] Fonctionnement de Linux ~ Connaissance de base du système d'exploitation et du matériel acquise grâce à des expériences et des illustrations (partiellement modifié par l'auteur)

** Résultat d'exécution de commande gratuit **

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

** résultat de l'exécution de la commande sar -r **

[root@$hostname ~]# sar -r | head
Linux (Abréviation)	(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 ~]# 

P.S. Je fais aussi Twitter donc je suis content si vous me suivez :)

@gkzvoice

Ce que j'ai entendu sur P.P.S. fukabori.fm

Sur fukabori.fm, il y avait un sujet lié à cpuinfo qui a été traité dans cet article, donc je l'ai un peu transcrit.

Je ne peux pas suivre la frappe et c'est cassé.

Linux peut être traité comme un répertoire ou un fichier qui stocke des informations matérielles telles que / dev. En parlant de Linux, cpuinfo etc. Vous pouvez traiter diverses informations comme un fichier qui n'est pas un fichier. Et il peut être lancé aux programmes suivants, que ce soit un fichier ou quelque chose de non-fichier, en utilisant un mécanisme appelé pipes. Traitez tout comme un fichier et connectez l'entrée et la sortie de données avec les entrées et sorties standard. Laissons les choses difficiles au traitement ultérieur. La philosophie du design est liée à diverses choses. Le fait que cela puisse être traité de la même manière est une forte restriction. Démontre une réutilisabilité élevée.

Source: 28. Oeil esthétique de la sélection de la technologie (1) w / twada

Recommended Posts

Comment connaître le nombre de processeurs sans utiliser la commande sar
Comment trouver le nombre optimal de clusters pour les k-moyennes
Comment trouver la zone du diagramme de Boronoi
[Circuit x Python] Comment trouver la fonction de transfert d'un circuit en utilisant Lcapy
Découvrez comment diviser uniformément un fichier avec un certain nombre de lignes
Comment connaître le numéro de port du service xinetd
Comment écrire une interface graphique à l'aide de la commande maya
Projecet Euler 12 Trouvez le nombre de fractions sans diviser.
Comment obtenir le nombre de chiffres en Python
Comment savoir quel processus utilise le port localhost et l'arrêter
Osez remplir le formulaire sans utiliser de sélénium
Maya | Découvrez le nombre de polygones dans l'objet sélectionné
Python --Trouvez le nombre de groupes dans l'expression regex
Comment augmenter le nombre d'images de jeux de données d'apprentissage automatique
Comment trouver le coefficient de mise à l'échelle d'une ondelette bipolaire
Comment connaître le nombre de GPU de python ~ Remarques sur l'utilisation du multitraitement avec pytorch ~
Comment exécuter la commande sed plusieurs fois à l'aide de l'instruction for
Découvrez l'âge et le nombre de gains des gouverneurs de préfecture dans tout le pays
ABC170 E - Comment résoudre sans utiliser le multiset de Smart Infants
[EC2] Comment installer Chrome et le contenu de chaque commande
Comment trouver l'adresse mémoire de la valeur de la trame de données Pandas
Comment afficher le résultat de sortie de la commande man Linux dans un fichier
Comment surveiller l'état d'exécution de sqlldr avec la commande pv
Comment vérifier la version de Django
[Linux] Comment utiliser la commande echo
Comment calculer Utiliser% de la commande df
Version Migemo de la commande: find ,: mfind
Comment mettre un numéro de ligne au début d'un fichier CSV
Comment lire une vidéo tout en regardant le nombre d'images (Mac)
[Version terminée] Essayez de connaître le nombre d'habitants de la ville à partir de la liste d'adresses avec Python
Comment passer le résultat de l'exécution d'une commande shell dans une liste en Python
Comment calculer la volatilité d'une marque
Trouver la main de "Millijan" par l'optimisation des combinaisons
Comment savoir quel type de fichier est stocké dans S3 en Python
Comment compter le nombre d'éléments dans Django et sortir dans le modèle
python: Astuces pour afficher un tableau (liste) avec un index (comment savoir quel numéro est un élément d'un tableau)
Trouvez le nombre de jours dans un mois
Un mémorandum expliquant comment exécuter la commande magique! Sudo dans Jupyter Notebook
Comment trouver le coefficient de la courbe approximative passant par les sommets en Python
Découvrez le jour par date / heure
Une introduction à l'analyse de données à l'aide de Python - Pour augmenter le nombre de vues vidéo -
Comment identifier le numéro d'appel système ausyscall
Déterminez le nombre de classes à l'aide de la formule Starges
Comment trouver la corrélation pour les variables catégorielles
J'ai étudié comment rationaliser le flux de travail avec Excel x Python ②
J'ai étudié comment rationaliser le flux de travail avec Excel x Python ④
Comment identifier l'élément avec le plus petit nombre de caractères dans une liste Python?
J'ai essayé de savoir comment rationaliser le flux de travail avec Excel x Python ⑤
Comment éviter l'étiquette de coupure du graphique créé par le module système de tracé à l'aide de matplotlib
Comment démarrer du code écrit en Atom avec une seule commande sans démarrer Teminal
J'ai étudié comment rationaliser le flux de travail avec Excel x Python ①
Comment confirmer le théorème de Persival en utilisant matplotlib et la transformée de Fourier de Scipy (FFT)
Découvrez le nombre maximum de caractères dans un texte multiligne stocké dans un bloc de données
J'ai utilisé Python pour découvrir les choix de rôle des 51 "Yachts" dans le monde.
Commande pour vérifier le nombre total de cœurs physiques / cœurs logiques / mémoire physique du processeur sur Mac
Trouvez une ligne directrice pour le nombre de processus / threads à définir sur le serveur d'applications
Comment compter le nombre d'occurrences de chaque élément de la liste en Python avec poids
J'ai étudié comment rationaliser le flux de travail avec Excel x Python ③
Comment créer un article à partir de la ligne de commande