Zunächst scheint die Frage ein wenig albern / verwirrend zu sein, da das Betriebssystem die Prozessausführung verwaltet.
Ich möchte jedoch messen, inwieweit einige Prozesse CPU / IO-gebunden sind, und ich habe das Gefühl, dass mein Betriebssystem meine Experimente mit beispielsweise geplanten Betriebssystemprozessen stört.
Nehmen Sie als Beispiel die folgende Situation: Ich habe den Prozess A zweimal ausgeführt und vom Tool "time" die folgende Ausgabe erhalten (Zeitspalten in Sekunden):
+---+-------+---------+-----------+---------+
|Run|Process|User Time|System Time|Wall time|
+---+-------+---------+-----------+---------+
|1 |A |196.3 |5.12 |148.86 |
|2 |A |190.79 |4.93 |475.46 |
+---+-------+---------+-----------+---------+
Wie wir sehen können, ändert sich die verstrichene Zeit beider drastisch (Unterschied von ~ 5 Minuten), obwohl die Benutzer- und Systemzeit ähnlich sind. Das Gefühl, etwas in meiner Umgebung zu haben, verursachte eine Art Streit.
Ich möchte alle möglichen Hintergrundprozesse / -dienste stoppen, um jegliche Art von Lärm während meiner Experimente zu vermeiden, aber ich betrachte mich als Anfänger / fortgeschrittener Unix-Benutzer und weiß nicht, wie ich dies garantieren kann.
Ich benutze Linux 4.4.0-45-generic mit Ubuntu 14.04 LTS 64 Bit.
Ich schätze die Hilfe sehr. Wenn ihr fehlende Informationen benötigt, werde ich meinen Beitrag umgehend bearbeiten.
CPU Info
$ 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
quelle
nice -19 process
Antworten:
Sie haben eine Kerneloptionskonfiguration, bei der eine CPU nicht vom Betriebssystem verwendet wird
isolcpus
.Diese Konfiguration, die ich kurz beschreiben werde, kann weit mehr als nur zum Testen verwendet werden.
Meru verwendet diese Technologie beispielsweise in seinen Linux-basierten AP-Controllern, um zu verhindern, dass der Netzwerkverkehr das Innenleben des Betriebssystems, dh die E / A-Vorgänge, beeinträchtigt.
Ich benutze es auch in einem stark frequentierten Web-Frontend, und zwar aus genau den gleichen Gründen: Ich habe aus meiner Lebenserfahrung herausgefunden, dass ich die Kontrolle über diesen Server zu regelmäßig verloren habe, um meinen Geschmack zu finden. musste es gewaltsam neu starten, bis ich den Front-End-Daemon auf seinen eigenen dedizierten CPUs trennte.
Da Sie 8 CPUs haben, können Sie dies mit der Ausgabe des Befehls überprüfen:
oder
Fügen Sie in Debian / Ubuntu in der Datei
/etc/default/grub
Folgendes hinzuGRUB_CMDLINE_LINUX
:(es ist 7, weil es mit 0 beginnt und Sie 8 Kerne haben)
Dann renne,
Dies bedeutet, dass der Kernel keinen Ihrer Kerne verwenden soll.
Starten Sie das System neu.
Dann starten Sie Ihren Prozess.
Unmittelbar nach dem Start können Sie für die 8. CPU wechseln (7, da 0 die 1. ist), und Sie müssen ganz sicher sein, dass Sie die einzige sind, die diese CPU verwendet.
Verwenden Sie dazu den Befehl:
Weitere Informationen finden Sie unter: isolcpus, numactl und taskset
Außerdem
ps -eF
sollten Sie in der PSR-Spalte den verwendeten Prozessor sehen.Ich habe einen Server mit CPU 2 und 3 isoliert, und in der Tat ist es mit
ps -e
dem einzigen Prozess im Userland, wie beabsichtigt, zu sehenpound
.Wenn Sie es mit den nicht isolierten CPUs vergleichen, laufen auf ihnen noch viele andere Dinge (das Fenster unter den Folien ):
quelle
isolcpus