Au début, la question semble un peu idiote / déroutante car l'OS fait le travail de gestion de l'exécution des processus.
Cependant, je veux mesurer combien certains processus sont liés au processeur / aux E / S et j'ai l'impression que mon système d'exploitation interfère avec mes expériences avec, par exemple, les processus de système d'exploitation planifiés.
Prenons comme exemple la situation suivante: j'ai exécuté le processus A deux fois et obtenu la sortie suivante de l'outil "time" (colonnes de temps en secondes):
+---+-------+---------+-----------+---------+
|Run|Process|User Time|System Time|Wall time|
+---+-------+---------+-----------+---------+
|1 |A |196.3 |5.12 |148.86 |
|2 |A |190.79 |4.93 |475.46 |
+---+-------+---------+-----------+---------+
Comme nous pouvons le voir, bien que l'utilisateur et le temps système soient similaires, le temps écoulé des deux change radicalement (diff. De ~ 5 min). Se sent comme quelque chose dans mon environnement a provoqué une sorte de dispute.
Je veux arrêter tous les processus / services d'arrière-plan possibles pour éviter tout type de bruit pendant mes expériences mais je me considère comme un utilisateur unix novice / intermédiaire et je ne sais pas comment le garantir.
J'utilise Linux 4.4.0-45-generic avec Ubuntu 14.04 LTS 64 bits.
J'apprécie vraiment l'aide. Si vous avez besoin d'informations manquantes, je modifierai rapidement mon message.
Infos CPU
$ grep proc /proc/cpuinfo | wc -l
8
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 60
Stepping: 3
CPU MHz: 4002.609
BogoMIPS: 7183.60
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 8192K
NUMA node0 CPU(s): 0-7
la source
nice -19 process
Réponses:
Vous avez une configuration d'options de noyau où un CPU ne sera pas utilisé par le système d'exploitation, il est appelé
isolcpus
.Cette configuration que je suis sur le point de décrire comment installer, peut avoir beaucoup plus d'utilisations que pour les tests.
Meru, par exemple, utilise cette technologie dans leurs contrôleurs AP basés sur Linux, pour empêcher le trafic réseau d'interférer avec le fonctionnement interne du système d'exploitation, à savoir les opérations d'E / S.
Je l'utilise également dans une interface Web très occupée, pour les mêmes raisons: j'ai découvert par expérience de la vie que j'avais perdu le contrôle trop régulièrement à mon goût de ce serveur; a dû le redémarrer avec force jusqu'à ce que je sépare le démon frontal sur ses propres processeurs dédiés.
Comme vous avez 8 CPU, vous pouvez vérifier avec la sortie de la commande:
ou
Ajoutez Debian / Ubuntu dans le fichier
/etc/default/grub
à l'optionGRUB_CMDLINE_LINUX
:(c'est 7, car il commence en 0, et vous avez 8 cœurs)
Ensuite, exécutez,
Cela indique au noyau de ne pas utiliser l'un de vos cœurs.
Redémarrez le système.
Commencez ensuite votre processus.
Immédiatement après l'avoir démarré, vous pouvez changer pour le 8ème CPU (7 car 0 est le 1er), et assurez-vous que vous êtes le seul à utiliser ce CPU.
Pour cela, utilisez la commande:
Pour en savoir plus à ce sujet, voir: isolcpus, numactl et tasket
En utilisant également
ps -eF
vous devriez voir dans la colonne PSR le processeur utilisé.J'ai un serveur avec CPU 2 et 3 isolé, et en effet, il peut être vu avec
ps -e
le seul processus dans le pays utilisateur comme prévu, estpound
.Si vous le comparez avec les CPU non isolés, ils exécutent beaucoup plus de choses (la fenêtre ci-dessous glisse ):
la source
isolcpus