martes, 11 de abril de 2017

LINUX-optimizar la ejecución de procesos: setear (nice) o cambiar (renice) la prioridad de un proceso en ejecución

Niceness (Nice value ) y Priority 

Priority se refiere a la prioridad actual con la que un proceso se ejecuta en el espacio de la CPU asignado al kernel. Mientras que Nice Value o Niceness es lo correspondiente al espacio de la CPU asignado al usuario. 
En linux el rango de valores asignado de kernel space para prioridades es 0 hasta 139, mientras que para el niceness o user space es desde -20 (más alto), hasta el +19 (más bajo). Siendo el valor 0 el asignado por default.  

la relación entre priority y niceness es:

PR = 20 + NI

Cómo obtener el valor de la prioridad de un proceso en ejecución. 

Poner atención a las siguiente columnas
PR: 20
NI: 0
Cuando NI es 0 (default), el valor de PR es 20 (default)
root@centOS-testing02 ~]# dd if=/dev/zero of=/dev/null &
[1] 1578
[root@centOS-testing02 ~]# top

top - 14:32:10 up 4 min,  2 users,  load average: 0.16, 0.06, 0.01
Tasks: 101 total,   2 running,  99 sleeping,   0 stopped,   0 zombie
Cpu(s):  2.4%us,  7.5%sy,  0.0%ni, 90.1%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1020380k total,   137708k used,   882672k free,     6884k buffers
Swap:  1048568k total,        0k used,  1048568k free,    39384k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                1578 root      20   0  102m  708  588 R 99.7  0.1   0:11.20 dd                                                                                              
[root@centOS-testing02 ~]# ps -o pid,comm,nice -p 1578
  PID COMMAND          NI
 1584 dd                0
[root@centOS-testing02 ~]# 

viernes, 7 de abril de 2017

LINUX-optimizar la ejecución de procesos: context switching

en un post anterior comenté acerca del uso del comando TOP (tail of processes) para conocer el load average
http://eloraculodelpinguino.blogspot.cl/2014/01/lalal.html

En el siguiente laboratorio, aprendemos a usar diferentes utilitarios  para manejar un proceso en particular y optimizar su ejecución adecuando el context switch.

Concepto de context switch.

hay varios post que se pueden encontrar googleando, sin embargo recomiendo el que (a mi parecer) está mejor explicado:
http://www.linfo.org/context_switch.html (los 3 primeros párrafos son suficientes)