Al principio, la pregunta parece ser un poco tonta / confusa ya que el sistema operativo hace el trabajo de administrar la ejecución del proceso.
Sin embargo, quiero medir cuánto están vinculados algunos procesos con CPU / IO y siento que mi sistema operativo está interfiriendo en mis experimentos con, por ejemplo, procesos de sistema operativo programados.
Tomemos como ejemplo la siguiente situación: ejecuté el proceso A dos veces y obtuve el siguiente resultado de la herramienta "tiempo" (columnas de tiempo en segundos):
+---+-------+---------+-----------+---------+
|Run|Process|User Time|System Time|Wall time|
+---+-------+---------+-----------+---------+
|1 |A |196.3 |5.12 |148.86 |
|2 |A |190.79 |4.93 |475.46 |
+---+-------+---------+-----------+---------+
Como podemos ver, aunque el usuario y el tiempo del sistema son similares, el tiempo transcurrido de ambos cambia drásticamente (dif. De ~ 5 min). Parece que algo en mi entorno causó algún tipo de disputa.
Quiero detener todos los procesos / servicios en segundo plano posibles para evitar cualquier tipo de ruido durante mis experimentos, pero me considero un usuario novato / intermedio de Unix y no sé cómo garantizarlo.
Estoy usando Linux 4.4.0-45-generic con Ubuntu 14.04 LTS de 64 bits.
Realmente aprecio la ayuda. Si necesitan información faltante, editaré mi publicación de inmediato.
Información de la 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
fuente
nice -19 process
Respuestas:
Tiene una configuración de opción de núcleo donde el sistema operativo no utilizará una CPU, se llama
isolcpus
.Esta configuración que estoy a punto de describir cómo configurar, puede tener muchos más usos que para las pruebas.
Meru, por ejemplo, utiliza esta tecnología en sus controladores AP basados en Linux, para evitar que el tráfico de la red interfiera con el funcionamiento interno del sistema operativo, es decir, las operaciones de E / S.
También lo uso en una interfaz web muy ocupada, por las mismas razones: descubrí por experiencia que perdí el control con demasiada frecuencia para mi gusto por ese servidor; tuve que reiniciarlo con fuerza hasta que separé el demonio front-end en sus propias CPU dedicadas.
Como tiene 8 CPU, que puede verificar con la salida del comando:
o
Agregue Debian / Ubuntu en el archivo
/etc/default/grub
a la opciónGRUB_CMDLINE_LINUX
:(es 7, porque comienza en 0 y tiene 8 núcleos)
Entonces corre,
Esto le dice al núcleo que no use uno de sus núcleos.
Reinicia el sistema.
Entonces comienza tu proceso.
Inmediatamente después de iniciarlo, puede cambiar para la octava CPU (7 porque 0 es la primera) y estar seguro de que es la única que usa esa CPU.
Para eso, usa el comando:
Para leer más sobre esto, vea: isolcpus, numactl y taskset
También
ps -eF
debe ver en la columna PSR el procesador que se está utilizando.Tengo un servidor con CPU 2 y 3 aisladas, y de hecho, se puede ver con
ps -e
el único proceso en el país de usuario según lo previstopound
.Si lo compara con las CPU no aisladas, están ejecutando muchas más cosas (la ventana siguiente se desliza ):
fuente
isolcpus