Autor Tema: Isolcpus en Debian?  (Leído 7146 veces)

Desconectado alberttoy

  • Aprendiz
  • *
  • Join Date: Dic 2012
  • Mensajes: 1453
  • Ubicación: Barcelona - Barcelona
Re:Isolcpus en Debian?
« Respuesta #15 en: 19 Mayo 2015, 17:10 »
jordi3sk97, esto  me lo anoto. Es interesante. Pensaba que el linuxcnc ya buscaba los nucleos  reservados.
Torno Optimum 240x500G, Fresadora Vertical/Horizontal ZAY7550, fresadora ceneceada SIEG Super X2P HiTorque Mill,  soldadora mig/mag/tig

Desconectado Fit0

  • Aprendiz
  • *
  • Join Date: Jul 2014
  • Mensajes: 144
  • Ubicación: Madrid
Re:Isolcpus en Debian?
« Respuesta #16 en: 19 Mayo 2015, 18:29 »
Gracias Jordi, eso es exactamente lo que estaba buscando  .palmas.

Entonces, en taskset, para ejecutar Linuxcnc en el núcleo 1 tengo que poner:

"taskset -c 1 linuxcnc"?

Desconectado jordi3sk97

  • Aprendiz
  • *
  • Join Date: Jun 2010
  • Mensajes: 882
  • Ubicación: Cerca de Barcelona
Re:Isolcpus en Debian?
« Respuesta #17 en: 19 Mayo 2015, 19:35 »
Fit0: si
Albert: Yo he contestado a Fit0, ignoro lo que hace LinuxCNC , aún y así no vería yo con buenos ojos que un programa pudiera apropiarse de un core reservado manualmente durante el boot sin intervención del usuario.

abu

  • Visitante
Re:Isolcpus en Debian?
« Respuesta #18 en: 19 Mayo 2015, 22:41 »
Cuidado.

El "programa" linuxcnc no es un ejecutable. Es un guion o script que corre en el shell Bash. Esta en el directorio ./usr/bin y comienza asi:

#!/bin/bash
################################################################################
# usage: linuxcnc [options] [<ini-file>]
#
# options:
#     -v = verbose - prints info as it works
#     -d = echos script commands to screen for debugging
#
# this version calls pickconfig.tcl to pick an ini file if one
# is not specified on the command line
#
################################################################################
# Author:
# License: GPL Version 2
# System: Linux
#   
# Copyright (c) 2004-2009 All rights reserved.
################################################################################

################################################################################
# 0. Values that come from configure
################################################################################
prefix=/usr
exec_prefix=${prefix}

LSMOD=/sbin/lsmod
PIDOF="/bin/pidof -x"
PS=/bin/ps
AWK=/usr/bin/awk
IPCS=/usr/bin/ipcs
KILL=/bin/kill
.
.
.
. etc, etc......

Por pura logica un script no puede correr en el/los procesador/es porque solo entiende binario, no texto puro. Es mas, los interfaces AXIS o gmoccapy son tambien scripts, en este caso en phyton.
Pero ademas, cada modulo de linuxcnc (como paquete completo) es un ejecutable independiente que se comunican entre si mediante un mecanismo que se llama NML (Neutral Message Language). Este mecanismo es manejado por otro ejecutable. Modulos que componen linuxcnc hay un monton; kinematic, iocontrol, interprete de gcode, planificador de trayectorias, HAL........etc,etc.
Y para liarla mas, los modulos son llamados por otros modulos o por script. Con esto quiero decir que generalmente no es posible asignar un core a un proceso en particular porque no tenemos forma de acceder a su llamada.............bueno, a no ser que toquemos las fuentes. Y no me meto con el parche RTAI que da a linux capacidad de tiempo real........................y paro ya de dar la brasa ;D

Mi recomendacion: olvidarse de momento de la asignacion de cores y esperar a que el equipo de desarrollo cumpla con la promesa que hace de que estan desarrollando un nuevo planificador que eliminara la necesidad de juguetear con isolcpus.

3. Latency Testing with 3.14 RTAI

There is a new scheduler in RTAI for 3.10 and 3.14. It no longer requires any isolcpus settings.

3.14 RTAI is in the testing stage at the time of this writing (September 2014). It should be in the official Linuxcnc release in the near future.




Desconectado alberttoy

  • Aprendiz
  • *
  • Join Date: Dic 2012
  • Mensajes: 1453
  • Ubicación: Barcelona - Barcelona
Re:Isolcpus en Debian?
« Respuesta #19 en: 19 Mayo 2015, 22:59 »
Interesante.  ¿como se esta haciendo entonces ? ¿buscando los pids de los procesos y reasignando?
Pero veo que hay bastantes versiones  posteriores a la 3.4
Torno Optimum 240x500G, Fresadora Vertical/Horizontal ZAY7550, fresadora ceneceada SIEG Super X2P HiTorque Mill,  soldadora mig/mag/tig

Desconectado jordi3sk97

  • Aprendiz
  • *
  • Join Date: Jun 2010
  • Mensajes: 882
  • Ubicación: Cerca de Barcelona
Re:Isolcpus en Debian?
« Respuesta #20 en: 19 Mayo 2015, 23:40 »
No se porque un script y todos su procesos hijos no pueden correr en un core determinado  ???
 

abu

  • Visitante
Re:Isolcpus en Debian?
« Respuesta #21 en: 23 Mayo 2015, 19:46 »
No se porque un script y todos su procesos hijos no pueden correr en un core determinado  ???

Pues basicamente, ya lo decia mas arriba, porque un script no corre en ningun core. Lo que corre es el shell que lee el script.
Y puesto que un script no puede constituirse en proceso propiamente dicho (solo lo pueden hacer los binarios), dificilmente puede dar lugar a procesos hijo.
Hay mas razones, pero  habria que meterse mas profundamente en la relacion de procesos padre/hijo, llamadas al sistema y otras lindezas, dificiles de discutir en pocas lineas. .brinda



« última modificación: 23 Mayo 2015, 20:07 por abu »

Desconectado jordi3sk97

  • Aprendiz
  • *
  • Join Date: Jun 2010
  • Mensajes: 882
  • Ubicación: Cerca de Barcelona
Re:Isolcpus en Debian?
« Respuesta #22 en: 23 Mayo 2015, 23:26 »
Bueno ..sin haberlo probado.
 
Si arranco un script de Bash, Python, php, o lo que me de la gana  desde un terminal tendrá un pid, lo puedo arrancar directamente en segundo plano liberando la shell, o lo puedo poner en segundo plano cuando quieral y sabiendo el pid utilizar taskset para mandarlo al core reservado, o incluso desde otro terminal puedo ejecutar el  taskset.
Y según la documentación cualquier fork del proceso que corra en el core reservado se mantendrá en ese  core

Y sigo sin ver la diferencia entre un binario o un programa interpretado ni si se arranca desde una shell o desde un clik del raton desde el entorno gráfico o automáticamente desde un cron, un anacron o al arrancar la maquina desde el init.d o al hacer un login un usuario, de cualquier manera cada proceso que se ejecute tendrá un pid y cada fork un pid nuevo y según la documentación con esto solo taskset ya se aclara. 

O rizando el rizo puedo ejecutar una shell nueva ya directamente en el core reservado antes de arrancar el script.

Siempre hay la opción de tocar el grub y hacer la prueba  o que Fit0 nos cuente si hay avances.

En todo caso no te extraña que haya tanta literatura en linuxcnc sobre el tema de isolcpu  si después resulta que como tu dices no es utilizable?